开始介绍Linux发行版的分类时提到,按照软件包的包格式分为以下三类:Debian系列:包后缀格式为.deb,包管理命令是恰当的。RedHat系列:包后缀格式为.rpm,包管理命令为yum、dnf、zypper。ArchLinux系列:包后缀格式为.pkg.tar.zst,包管理命令为pacman。GentooLinux系列:软件包是从源代码构建的。GentooLinux为用户提供了大量的应用程序源代码。软件包管理命令工具是emerge。AptPackageManager用法APTAdvancedPackagingTools(英文:AdvancedPackagingTools,缩写为APT)是一个针对Debian及其衍生产品的Linux包管理器。APT可以自动下载、配置和安装二进制或源代码格式的软件包,从而简化了在Unix系统上管理软件的过程。APT最初被设计为dpkg的前端,用于处理deb格式的软件包。现在APT-RPM组织修改后,已经可以在支持RPM的系统上安装APT来管理RPM包。安装软件:aptinstall删除软件:aptremove查找软件:aptsearch更新软件:aptupdate软件源配置文件:/etc/apt/sources.list.d/*.list自定义软件源配置文件更新软件源缓存:aptupdate清理软件源缓存:无yumpackagemanagerusageYum(YellowdogUpdater,Modified),由杜克大学团队开发,用于修改YellowDogLinuxYellowDogUpdater,是一个字符前端基于RPM包管理的包管理器。可以自动从指定服务器下载安装RPM包,处理依赖关系,一次性安装所有依赖的软件包,无需繁琐的反复下载安装。被YellowDogLinux本身以及Fedora、RedHatEnterpriseLinux采用。安装软件:yuminstall删除软件:yumremove查找软件:yumsearch更新软件:yumupdate软件源配置文件:/etc/yum.repos.d/*.repo自定义软件源配置文件更新软件源缓存:yummakecache清理软件源缓存:yumcleanallDNF包管理器(yum的下一代替代版本)DNF,全称DandifiedYum,是RPM发行版YellowdogUpdater的包管理器,Modified(yum的下一代版本)。DNF最早出现在Fedora18中,在Fedora22和RHEL8中取代了yum。DNF旨在解决yum的一些已知缺陷,包括性能差、内存使用率高和迭代拓扑排序缓慢。简单来说,DNF取代Yum的主要原因是:庞大复杂的内部代码集,这也是任何软件产品发展到一定阶段都会经常面临的问题。有时重新实现某个功能比在其基础上改造它更好。简单多了。Python的末日,Yum是用Python实现的,迁移到Python3可能难度很大,意义不大,不如重新实现简单好一点,最新版的DNF是用C/C++实现的,而且大部分功能封装到libdnf库中对外提供API。解决软件包安装依赖的解析速度和性能问题,使安装包更智能地解析依赖。既然是替代品,当然用法上的区别不大,下面我们来了解一下DNF包管理器的用法:安装软件:dnfinstall删除软件:dnfremove查找软件:dnfsearch更新软件:dnf更新软件源配置文件:/etc/yum.repos.d/*.repo(配置目录兼容yum,实际上yum命令是dnf命令的软链接)更新软件源缓存:dnfmakecache清理软件源缓存:dnfcleanall现在我们在CentOS8中看到的yum其实就是dnf命令的一个软链接。ZYPPER包管理器用法zypper是SuSeLinux分支的默认包管理器工具。它使用一种称为布尔可满足性问题的算法来计算软件包依赖性问题。简单来说,在分析依赖关系后,软件依赖包安装的选择权和决定权就交给用户自己决定了。安装软件:zypperinstall删除软件:zypperremove查找软件:zyppersearch更新软件:zypperupdate软件源配置文件:/etc/zypp/repos.d/*.repo更新软件源缓存:zypperrefresh清理软件源缓存:zyppercleanPacman包管理器用法Pacman是一个包管理器,作为ArchLinux发行版的一部分提供。它首先由ArchLinux的JuddVinet开发。Pacman可以在安装过程中解决依赖关系,自动下载并安装所有需要的包。原来的pacman很慢。这是因为你要引用的镜像服务器离你的网络太远,传输速度太慢。所以在使用前需要使用如下命令自动进行图像优化。#测试选择延迟最低的镜像源地址(通过-c参数选择国家)$sudopacman-mirrors-g-cChina#更新软件源本地缓存$sudopacman-Sy安装软件:pacman-S,-sw选项只下载不安装和升级所有版本低于源列表的包:pacman-Su删除软件:pacman-R查找软件:pacman-Ssfindsoftware:pacman-Qs(findlocalinstallationSoftware)更新软件:pacman-U,package可以是包名,本地路径,也可以是URL地址。软件源配置文件:/etc/pacman.conf更新软件源缓存:pacman-Sy清理软件源缓存:pacman-Sc(安装后清理临时缓存的软件包),-Scc选项彻底清除所有缓存信息。portage包管理用法gentoo的包管理工具叫做portage。emerge是本portage的字符界面管理工具,图形界面工具还有portato、porthole、kuroo、himerge等。常用的emerge命令有:同步portage:emerge--sync或emerge-webrsync升级所有软件包:emerge-uDN@world重新编译所有软件包:emerge-e@worldMaverick软件安装方式上面列举的软件包管理工具关注的是如何解决软件包依赖关系,有些软件安装方式不需要这个考虑。这类软件称为(portablesoftware)便携软件,在Windows系统中称为绿色软件。此类软件无需安装即可直接使用。在Flatpak之前,Linux生态系统中已经多次提出不依赖于特定发行版的打包格式。2000年代初期开始了autopackage,2004年是klik,这也为AlexanderLarsson在2007年开发了glick项目提供了灵感。到了2014年,klik演变为AppImage,其目标是成为一种可移植的上游打包格式,不依赖于特定的分布。Canonical在2016年发布了Snappy,其目标也是为广泛的Linux生态系统提供一种通用的打包格式。它支持类似于Flatpak的格式,也支持应用商店式的数字分发和更新模型。下面列出一些常见的便携软件:AppImage:核心思想是一个应用=一个文件,下载即用,非常适合不需要root权限的软件。您可以阅读官网文档,了解更多关于如何制作和使用AppImage的信息。示例用法:AnotherRedisDesktopManagerFlatpak:口号是Linux系统上软件的未来,Flatpak的目标是为用户提供一个安全的沙箱环境,以便在他们想要运行他们可能不完全信任的应用程序时使用。应用程序将不得不使用flatpak提供的函数调用来控制硬件设备或访问用户文件,并且flatpak会在授予应用程序访问权限之前提示用户。Flatpak允许应用程序开发人员直接向用户提供更新,而无需通过分发版,而不必为每个分发版单独打包和测试应用程序。提高软件更新速度,但也可能降低稳定性。您可以访问Flathub存储库以获取更多软件。Snappy:用过Ubuntu的人肯定用过这类软件。这类软件包最初是为应用于UbuntuCore系统的移动、云、物联网平台而设计的。snap格式包是一种可以被宿主操作系统动态挂载的类型。的压缩文件系统,其中还附有元数据声明,快照系统可以从中为应用程序设置适当的安全沙箱或容器。安装snap软件后,执行df命令,可以看到/dev/loopX文件系统。总结本文介绍大多数Linux系统发行版可能会用到的软件包管理工具。根据包格式,它们分为三个主流派别:Debian、RedHat和Pacman。然后分别介绍了三大派系使用最广泛的包管理器和使用方法。古人云:天下大势,分久必合。总有一些人在思考如何解决包依赖,各种包如何在所有的Linux发行版中使用,于是出现了AppImage、Flatpak和Snap。从目前(2020年)的使用情况来看,未来很可能属于Flatpak。