Ubuntu使用记录:安装deb软件方法以及apt、apt-get和dpkg的区别_apt安装本地deb-CSDN博客
文章浏览阅读3.6k次。这篇博客介绍了在Ubuntu系统中如何通过软件中心和终端命令安装.deb包,详细阐述了apt、apt-get和dpkg的区别。在安装本地deb包时,使用dpkg-i指令,而apt-get则用于在线安装并解决依赖关系。此外,还总结了安装和卸载软件的基本命令。
格式 | 典型生态 | 管理器 | 可移植性 | 沙箱/安全 | 优点 | 缺点 |
.deb | Debian/Ubuntu | dpkg + APT | 低 | 否(仓库签名) | 仓库成熟、依赖管理好 | 发行版绑定强 |
AppImage | 桌面 | 无(单文件) | 高 | 可(有限) | 便携易用 | 无系统级管理、体积大 |
.tar.zst (pacman) | Arch | pacman | 低 | 否 | 简单快速、AUR | 滚动发行版注意稳定性 |
.rpm | RHEL/Fedora | rpm + dnf/yum | 低 | 否(包/仓库签名) | 企业工具链成熟 | 发行版差异 |
.apk | Alpine | apk | 低 | 否 | 轻量、适合容器 | 生态小 |
源码 tarball | 通用 | none | 高(需编译) | 否 | 最大灵活性 | 需处理依赖、维护复杂 |
Snap | 多发行版 | snapd | 中 | 是(AppArmor) | 自动更新、统一商店 | 体积、性能问题 |
Flatpak | 桌面 | flatpak | 高 | 是(bubblewrap) | 桌面集成好、runtime共享 | 运行时体积、需 flatpak 支持 |
OSTree / rpm-ostree | 原子系统 | rpm-ostree | N/A | 是(只读系统) | 原子升级、回滚 | 不适合频繁更改系统级软件 |
Nix/Guix | 可重复构建 | nix/guix | 高(可重现) | 是(隔离) | 可重复、并行安装多个版本 | 学习成本高 |
.apk 或直接用容器镜像。.deb.deb 实际上是一个 ar(Unix archive)格式容器,通常包含:debian-binary(文件格式版本号)control.tar.gz 或 control.tar.xz(包元数据:control 文件,依赖、版本、维护者、描述;以及 maintainer scripts)data.tar.gz / data.tar.xz(实际文件树要安装到系统的内容)control 文件里有 Package, Version, Depends, Recommends, Suggests, Conflicts, Provides, Architecture 等字段/var/lib/dpkg/info/<pkg>.postinst、.prerm、.preinst、.postrm(由 dpkg 在不同阶段运行).deb 没有内建签名机制,仓库通过 Release 文件/GPG 签名保证仓库一致性(APT 会验证)sudo dpkg -i package.deb(若缺依赖:sudo apt-get -f install)dpkg -L package、dpkg -s packagedpkg-deb --build、使用 debhelper / dh 工具链、pbuilder/sbuild 等构建环境rpm(低层),yum/dnf/zypper(高级).rpmRequires, Provides, Obsoletes, Conflicts 等%pre, %post, %preun, %postun(写在 .spec 文件中)rpm --import 公钥,rpm -K package.rpm 验证sudo rpm -i package.rpm 或 sudo dnf install package.rpmrpm -ql package、rpm -qpi package.rpmrpmbuild,基于 .spec 文件(用 Mock 或 koji 做干净构建).pkg.tar.zst(以前是 .pkg.tar.xz / .pkg.tar.gz)/var/lib/pacman/local/,通过 Depends 字段处理依赖install 脚本(打包时放入 .install)apk(Alpine package keeper)apk add package.tar.gz / .tar.bz2 / .tar.xz,也有 .zip,或 Git 仓库./configure(或 cmake)、make、make install(或 meson/ninja)checkinstall(把源码安装打包成 .deb/.rpm),stow(管理 /usr/local 安装).dmg/.appchmod +x appimage && ./appimagesnapd 守护进程snapd,与传统包管理器整合有限snap install foo.flatpak 或通过仓库分发flatpak install flathub org.example.Appgit checkout).deb:ar -> control.tar.* + data.tar.*(清晰分离元数据与数据).rpm:自有格式,payload 通常是 cpio + 压缩.pkg.tar.zst:tarball + metadatadebian/ 目录 + control + rules(Makefile 风格),使用 debhelper、dpkg-deb、lintian 检查,pbuilder/sbuild 做 chroot 构建.spec 文件(定义打包、编译、依赖、脚本段),rpmbuild、mock(隔离构建)、koji(Fedora 构建系统)PKGBUILD(脚本,定义 source、build、package 函数),makepkg 构建,AUR 社区snapcraft.yaml,snapcraft 构建flatpak-builder + manifest(JSON/YAML)appimagetool 或 AppImageKit 打包(通常从一个 AppDir 开始).ipk(OpenWrt)或 Alpine 的 .apk,注重体积与 musl 支持。sudo apt update && sudo apt install packagenamesudo dpkg -i package.debdpkg -L packagename 列文件sudo dnf install packagename(或 yum 在旧系统)sudo rpm -ivh package.rpmsudo pacman -S packagenamemakepkg -si 构建并安装 AUR 包sudo apk add packagenamechmod +x App.AppImage && ./App.AppImagesudo snap install packagenameflatpak install flathub org.example.App./configure && make && sudo make install(或 meson/cmake 流程)Ubuntu使用记录:安装deb软件方法以及apt、apt-get和dpkg的区别_apt安装本地deb-CSDN博客
文章浏览阅读3.6k次。这篇博客介绍了在Ubuntu系统中如何通过软件中心和终端命令安装.deb包,详细阐述了apt、apt-get和dpkg的区别。在安装本地deb包时,使用dpkg-i指令,而apt-get则用于在线安装并解决依赖关系。此外,还总结了安装和卸载软件的基本命令。
Linux软件包格式全解析-RPM、DEB、AppImage有何区别?如何选择? - 大神的开源笔记
关于技术技巧、开源软件分享、有用信息和数字产品评测的各种文章
Linux下软件包的分类及deb、rpm、tar.gz的区别 - 圆柱模板 - 博客园
一、Linux下软件包的内容分类 Linux应用程序的软件包按内容类别可分为两类: 1.可执行文件(编译后的二进制软件包) 解开包后就可以直接运行的。在Windows中所有的软件包都是这种类型。安装完这个程序后,你就可以使用,但你看不到源程序。而且下载时要注意这个软件是否是你所使用的平台,否则将无法