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 [软件包] | 显示软件包的冲突情况 |