软件包管理系统

在当前的Linux发行版中,有两大著名的软件包管理系统:RPM和DPKG。

RPM系统被Red Hat/Fedora、Suse和Mandriva等发行版采用。

DPKG则由Debian和Ubuntu等使用。

Image

UOS是基于Debian的发行版本,因此它采用了DPKG包管理机制。

Image

Redhat的rpm软件包管理系统广为人知,而这里主要介绍UOS系统的软件升级源配置,该配置位于/etc/apt/sources.list文件中。文件内容格式如下:

deb [by-hash=force] https://packages.chinauos.cn/ eagle main contrib non-free

第一列指明了文件类型,即deb(已编译好的二进制软件包)或deb-src(源码包)。第二列是使用的镜像地址,apt支持多种类型的镜像地址,如http、ftp、file等。其中,eagle代表系统的codename,main、non-free和contrib是源下面的不同目录,每个目录存放一类软件,即不同的子仓库。

每次修改sources.list文件后,都需要运行apt-get update命令来更新源列表。系统中所有packages的信息都保存在/var/lib/dpkg/目录下,其子目录/var/lib/dpkg/info用于保存各个软件包的配置文件列表,/var/lib/dpkg/available文件包含软件包的描述信息,包括当前系统所使用的深度安装源中的所有软件包,无论是已安装还是未安装的软件包。/var/cache/apt/archives目录是在用apt-get install安装软件包时,软件包的临时存放路径。而/etc/apt/sources.list存放的是软件源站点信息,当执行apt-get install package-name时,软件包会从这些站点下载到本地并执行安装。

红帽与UOS操作命令对比

红帽系统与UOS的基本操作命令基本相同,都属于Linux基本操作命令。二者的命令主要区别在于软件包的管理上。以下是对二者软件包管理命令的详细对比:

Image

表1 rpm与dpkg软件包管理常用命令对比

Image

  • rpm -qa:查询当前系统中已安装的所有软件包
  • dpkg -l:查询当前系统中已安装的所有软件包
  • rpm -qi package-name:查询系统中某个软件包的详细信息
  • dpkg -s package-name:查询系统中某个软件包的详细信息
  • rpm -ql package-name:显示已安装软件包的文件列表
  • dpkg -L package-name:显示已安装软件包的文件列表
  • rpm -qf file:查询系统中指定的文件属于哪个包
  • dpkg -S file:查询系统中指定的文件属于哪个包
  • rpm -qpi file.rpm:显示指定软件包文件的详细信息
  • dpkg -I pkg.deb:显示指定软件包文件的详细信息
  • rpm -qlp file.rpm:显示deb包中的文件列表
  • dpkg -c pkg.deb:显示deb包中的文件列表
  • rpm -ivh file.rpm:安装指定的软件包
  • dpkg -i pkg.deb:安装指定的软件包
  • rpm -e package-name:彻底卸载deb软件包
  • dpkg -P package-name:彻底卸载deb软件包
  • rpm2cpio file.rpm|cpio -id:解包到当前目录
  • dpkg -x pkg.deb .:解包到当前目录
  • rpm -qpR file.rpm:查询管理软件包脚本
  • apt-cache depends package-name:查询软件对环境的依赖关系
  • rpm --force --nodeps -i file.rpm:强行安装软件包
  • dpkg -i --force-all pkg.deb:强行安装软件包
  • rpm -qp --scripts file.rpm:查询管理软件包脚本
  • rpmbuild -bb filename.spec:建软件包
  • dpkg -b pkg.deb:建软件包
  • rpm -V package-name:校验软件包中的文件是否被修改
  • debsums -a package-name:校验软件包中的文件是否被修改
  • rpm --checksig file.rpm:检证软件包签名是否正确
  • debsig -c pkg.deb:检证软件包签名是否正确

表2 yum与apt软件包管理常用命令对比

  • yum install package-name:安装软件包
  • apt-get install package-name:安装软件包
  • yum remove package-name:卸载软件包(保留配置文件),加入--purge则删除配置文件
  • apt-get remove package-name:卸载软件包(保留配置文件),加入--purge则删除配置文件
  • yum upgrade:更新所有已安装的软件包,apt-get dist-upgrade——将系统升级到新版本
  • yum clean rpmdb:清除cache中包文件
  • apt-get clean:清除cache中包文件
  • yumdownloader source package-name:下载程序的源代码包,需要安装yum-utils*
  • apt-get source package-name:下载程序的源代码包
  • yum search package-name:在软件资料库中搜索软件包
  • apt-cache search package-name:在软件资料库中搜索软件包
  • yum info package-name:查看包信息
  • apt-cache show package-name:查看包信息