预编译软件包

虽然不能定做,但依然有许多人会去吃麦当劳,因为麦当劳的汉堡符合大多数人的口味;同样,预编译软件包也可以满足大多数用户的需求,如果没有特殊需求,很少有人会选择编译软件

最早的软件包管理系统不支持网络,类似于在 Windows 下安装软件,你必须获取一个安装包(比如通过网络下载),然后在本地安装它。使用这种方式安装软件的包管理系统主要有:dpkg(debian系)、rpm(redhat系)

由于 Linux 系统中,软件包拆分的比较细[22],安装一个软件可能要许多软件包。

而用户自己动手获取这些软件包,是一个十分繁琐的过程,因此产生了通过网络安装软件的方式:包管理系统自动分析你将安装的软件需要哪些软件包,通过网络下载、安装、配置它们。

debian系 发行版通过 apt 系统实现网络支持,配合本地的 dpkg 实现这一过程;redhat系 发行版则通过 yum 和 rpm 实现。而一些新派发行版,包管理系统兼具这两种能力,例如 archlinux 的 pacman;而 gentoo 的 emerge 虽然基于源代码编译安装,但也具备这种能力,参见“emerge”一节

以下是常见软件包管理系统的基本操作:

表 16.1. 包管理系统

任务aptzyppyumpacmanemerge
 Debian, UbuntuopenSUSEFedora, CentOS (redhat系)ArchlinuxGentoo
安装包apt-get install pkgzypper install pkgyum install pkgpacman -S pkgemerge pkg
移除包apt-get remove pkgzypper remove pkgyum erase pkgpacman -R pkgemerge -C pkg
更新包列表apt-get updatezypper refreshyum check-updatepacman -Syemerge —sync | layman -S (添加仓库)
更新系统apt-get upgradezypper updateyum updatepacman -Suemerge -avuDN world
列出源cat /etc/apt/sources.listzypper reposyum repolistcat /etc/pacman.conflayman -L
添加源edit /etc/apt/sources.listzypper addrepo 仓库地址 仓库名称add 仓库 to /etc/yum.repos.d/edit /etc/pacman.conflayman -a
移除源edit /etc/apt/sources.listzypper removerepo 仓库名称remove 仓库 from /etc/yum.repos.d/edit /etc/pacman.conflayman -d
搜索包apt-cache search pkgzypper search pkgyum search pkgpacman -Qs pkgemerge —search
列出已安装的包dpkg -lrpm -qarpm -qapacman -Qiicat /var/lib/portage | more
  • 把 SUSE系 和 redhat系 排在前面,不是因为它们的软件包管理系统比较先进,而是考虑到它们的用户多

[22] 因为不受版权的限制,凡是可以被其它软件利用的功能,都单独分离出来