Package manager (APT, YUM)

Table of Contents

1 APT系列

apt stands for Advanced Package Tool.

apt-get的源配置文件为:/etc/apt/sources.list

1.1 apt-get

更新本机数据库缓存,更改sources.list后要做这个操作:

apt-get update

安装软件包,如果有其他依赖则自动安装相应的依赖软件包。package_name可以是多个软件包:

apt-get install package_name

卸载软件包,但保留配置文件:

apt-get remove package_name

卸载软件包,把它依赖的不再需要的软件包也卸载。如果autoremove后不加package_name,则把自动安装的不再需要的所有软件包都卸载:

apt-get autoremove package_name

卸载软件包,同时删除配置文件:

apt-get purge package_name

清理所有的缓存文件,这会清理所有/var/cache/apt/archives/和/var/cache/apt/archives/partial/中没有被锁定的文件:

apt-get clean

仅仅清理旧的缓存文件,这会清理旧版本的/var/cache/apt/archives/和/var/cache/apt/archives/partial/中的文件:

apt-get autoclean

下载软件包package_name的源码:

apt-get source package_name

仅下载软件包package_name,不会安装它:

apt-get download package_name

检查所有包的信赖关系:

apt-get check

移除那些标记broken的软件包:

apt-get --fix-broken install/remove

–fix-broken也可省略为-f。-f参数后接install或remove作用一样(后面不要带软件包名),都会移除那些标记broken的软件包(软件包通过dpkg -i方式安装时,就算依赖没有满足也可能会安装,但这些软件包会标记为broken)。

1.2 apt-cache

显示指定软件包的信息,包括版本号,包依赖关系等:

apt-cache show package_name

搜索软件包,可以按关键字(可以用正则表达式)查找软件包,通常用于查询的关键字会使用软件包的名字或软件包的一部分:

apt-cache search package_name

显示软件包的依赖关系信息:

apt-cache showpkg package_name

显示当前系统所使用的数据源的统计信息,用户可以使用该命令查看数据源的相关统计信息:

apt-cache stats

显示软件包的安装状态和版本信息:

apt-cache policy package_name

显示指定软件包所依赖的软件包:

apt-cache depends package_name

查询指定软件包的反向依赖关系,即那些其他的软件包需要依赖你所指定的软件包作为安装和运行的必须条件:

apt-cache rdepends package_name

显示缓存中的每个软件包的简要描述信息:

apt-cache dump

1.3 apt-file

这个命令不是系统自带的,必须自己安装。安装后对apt-file进行更新:

$ sudo apt-file update

实例:
在编译安装某程序时,提示找不到X11/Intrinsic.h文件。
搜索缺失的文件,例如:

$ apt-file search Intrinsic.h

这样就可以找到答案了
libxt-dev: /usr/include/X11/Intrinsic.h
最后把安装libxt-dev就可以了。

注意:如果找不到搜索的文件,要试试先更新一下sudo apt-file update。

1.4 dpkg

dpkg stands for Debian GNU/Linux Package Manager

dpkg基本用法:

安装软件package_file.deb:

dpkg -i package_file.deb

卸载deb软件,不删除其配置文件:

dpkg -r package_name

卸载deb软件,同时删除其配置文件:

dpkg -P package_name

列出软件包(必须已安装)包含哪些文件:

dpkg -L package_name

注:可以通过命令dpkg –contents package_file.deb(–contents可省写为-c)查看一个软件包在安装后将会产生哪些文件到系统中。

列出所有已经安装的软件包:

dpkg -l

列出以gcc开头的软件包状态:

dpkg -l gcc*

查看某个文件属于哪个软件包:

dpkg -S file

如下面命令可以查看/usr/share/doc/gcc-3.4-base/FAQ.gz属于哪个软件包:

$ dpkg -S /usr/share/doc/gcc-3.4-base/FAQ.gz
gcc-3.4: /usr/share/doc/gcc-3.4-base/FAQ.gz

注:这个命令非常有用,如果不知道系统中的某个工具来自哪个软件包,就可以通过它来查询。

显示软件包的详细状态信息:

dpkg -s package_name

通过软件包查询相关信息(当然前提是手头有deb文件):

dpkg -I package_file.deb   # 或者 dpkg --info package_file.deb

注:安装软件时指定的是deb的文件名,而卸载时指定的是“软件名”。

删除rc状态的包
rc状态的包,即已经卸载了却保留了配置文件的包。
如果想要完整删除所有 rc 状态的包,一个一个删还是很麻烦的,可以使用以下命令进行清理:

dpkg -l | grep ^rc | cut -d' ' -f3 | sudo xargs dpkg --purge

摘自:http://blog.csdn.net/chrisniu1984/article/details/6619755

卸载(并删除其配置文件)以libobasis3.4-开头的所有软件包:

dpkg -l libobasis3.4-*| grep ^ii | cut -d' ' -f3 | sudo xargs dpkg --purge

查看匹配的包:

dpkg --get-selections package-name-pattern

如:dpkg –get-selections gimp*
会找到以gimp开头的软件包。

参考:http://yiranwuqing.iteye.com/blog/869177

1.4.1 dpkg-deb

手里有个deb文件,想知道安装后会在系统里增加哪些文件:

dpkg-deb -c file.deb

1.5 Tips

1.5.1 设置代理

在/etc/apt/下建一个apt.conf的文件,并在文件中输入:

Acquire::http::proxy "http://yourproxy:yourport/";

注意:最后面必须用“;”结束。

1.5.2 增加源(apt-add-repository)

最好不要手动编辑/etc/apt/sources.list,如果要增加源时,可以使用apt-add-repository命令。如:

$ sudo apt-add-repository 'deb http://repos.codelite.org/ubuntu/ trusty universe'

2 Redhat(yum)和Debian(apt)包管理命令对比

2.1 添加、删除、更新软件包

Table 1: 添加、删除、更新软件包
任务 redhat debian
刷新软件包列表 Yum每次运行自动刷新 apt-get update
从软件包仓库安装软件 yum install package_name apt-get install package_name
从文件安装软件包 yum install package.rpm rpm -i package.rpm dpkg –install package.deb
删除软件包 rpm -e package_name apt-get remove package_name
检查软件包是否有升级 yum check-update apt-get -s upgrade apt-get -s dist-upgrade
升级软件包 yum update rpm -Uvh [args] apt-get dist-upgrade
升级整个系统 yum upgrade apt-get dist-upgrade

2.2 软件包信息

Table 2: 软件包信息
任务 redhat debian
搜索软件包 yum search package_name apt-cache search package_name
显示库中存在的软件包 yum list available apt-cache dumpavail
显示已安装的软件包 yum list installed rpm -qa dpkg –list
显示某软件包信息 yum info package_name apt-cache show package_name
显示已安装的某软件包信息 rpm -qi package_name dpkg –status package_name
显示已安装的某软件包的文件 rpm -ql package_name dpkg –listfiles package_name
显示已安装的某软件包的文档文件 rpm -qd package_name -
显示已安装的某软件包的配置文件 rpm -qc package_name -
显示指定软件包的依赖项 rpm -qR package_name apt-cache depends
显示哪些软件包依赖指定的包(反向依赖关系) rpm -q -whatrequires [args] apt-cache rdepends

2.3 软件包文件信息

Table 3: 软件包文件信息
任务 redhat debian
获得某软件包文件信息 rpm -qpi package.rpm dpkg –info package.deb
显示包中的文件 rpm -qpl package.rpm dpkg –contents package.deb
显示包中的文档文件 rpm -qpd package.rpm -
显示包中的配置文件 rpm -qpc package.rpm -
解压缩包中的文件 rpm2cpio package.rpm | cpio -vid dpkg-deb –extract package.deb dir-to-extract-to
查找指定文件是哪个包安装的 rpm -qf filename dpkg –search filename
查找提供某文件的包 yum provides filename apt-file search filename

2.4 其他命令

Table 4: 其他的包管理系统工具
任务 redhat debian
显示软件包缓存统计信息 - apt-cache stats
验证所有已安装的软件包 rpm -Va debsums
移除本地缓存目录中的软件包 yum clean packages apt-get clean
仅移除本地缓存目录中已过时的软件包 - apt-get autoclean
移除本地缓存目录中的头文件(强制下次使用时重新下载) yum clean headers apt-file purge
软件库位置定义 /etc/yum.conf /etc/apt/sources.list

Author: cig01

Created: <2012-07-07 Sat 00:00>

Last updated: <2018-07-19 Thu 13:36>

Creator: Emacs 25.3.1 (Org mode 9.1.4)