Debian 系列包管理

Table of Contents

1. apt-get

1.1. upgrade 和 dist-upgrade 区别

upgrade 会在不改变依赖的情况下对已安装的包升级,upgrade 可能会改变依赖。

比如,某软件依赖 A、B、C 三个库,在有更新的情况下,upgrade 会直接升级;如果依赖从 A、B、C 变为 A、B、E,upgrade 就不会升级;dist-upgrade 则会安装 E,如果没有其他程序依赖 C,还会删除 C。

dist-upgrade 比 upgrade 更有风险些,对于服务器版的系统最好酌情考虑。

1.2. 下载源码

sudo apt install dpkg-dev
sudo apt source 包名

1.3. 安装编译所需的依赖

sudo apt build-dep 包名

1.4. 设置代理

在/etc/apt/apt.conf加入:

Acquire::http::Proxy "http://[proxy_host]:[port]";

1.5. 自定义 cache 目录

dir::cache::archives /new/cache;

2. apt-file

不知某个文件属于哪个包的情况屡见,比如运行程序时提示无法加载 xxx.so 库,或者编译源码时碰到找不到某个头文件。apt-file 可以搜索指定的文件位于哪些包中。

使用前,可以更新下数据库:

apt-file update
apt-file search 文件名

3. apt、apt-get 和 aptitude

apt-get 系列的命令过于分散,例如用 apt-cache search 搜索包,安装又是 apt-get install。apt 命令就是为了提供一个统一的包管理。

aptitude 是另一套包管理器,附带了个终端下的图形界面。aptitude 还提供了一些更加方便、直观的命令,比如 apt-get upgrade 和 apt-get dist-upgrade 这样含糊的命令对应的是 aptitude safe-upgrade 和 aptitude full-upgrade。

aptitude 还多了一些实用的功能,如:

aptitude why [软件包] 显示软件包的依赖
aptitude why-not [软件包] 显示软件包的冲突情况