Debian 系列包管理
Table of Contents
1. apt-get
1.1. apt-get upgrade 和 apt-get dist-upgrade 区别
upgrade 会在不改变依赖的情况下对已安装的包升级,upgrade 则会改变依赖。
比如某个软件依赖 A、B、C 三个库,在软件有更新的情况下,upgrade 会升级;但是如果依赖从 A、B、C 变成了 A、B、E,那么 upgrade 就不会升级;dist-upgrade 会安装 E,如果没有其他程序依赖 C,还会删除 C。
所以 dist-upgrade 比 upgrade 更有风险些。如果是桌面版,可以用 dist-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
今天源码编译了 Apache,编译中没出问题,但运行时提示无法加载 xxx.so 库;同日下午,编译 pypy 的时候,遇到 C 源码中找不到某头文件的问题。
知文件名不知包名,这种情况屡见。可用 apt-file 命令搜索某文件在哪些包中有:
apt-file search 包名
第一次使用 apt-file,需更新它的数据库:
apt-file update
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 [软件包] | 显示软件包的冲突情况 |