aptitude速查

aptitude速查

aptitude软件包列表中的软件包状态

状态 说明
v 虚拟
B 损坏
u 解包
C 预配置
H 预安装
c 卸载未清除
p 清除软件包
i 已经安装
E 内部错误

在aptitude软件包列表中的请求操作

操作 说明
h 保持
p 清除
d 删除
B 损坏
i 安装
r 重装
u 升级

aptitude的搜索谓词

谓词 说明
~ahold 保持现有版本的软件包
~b 损坏的软件包
~d{text} 描述中含有{text}内容的软件包
~g 无用的软件包
~m{maint} 由{maint}维护的软件包
~n{text} 名称中含有{text}的软件包
~V{version} 版本号中含有{version}的软件包

搜索文件信息

在已安装的软件包中许找特定文件所属的软件包:

$ dpkg {-S|--search} pattern

或者搜索 Ubuntu archive:

$ wget http://archive.ubuntu.com/ubuntu/dists/dapper/Contents-i386.gz
$ zgrep -e pattern Contents-i386.gz

或是用专门的软件包命令:

# aptitude install dlocate
$ dlocate filename         # dpkg -L 和 dpkg -S 的高效代替品

# aptitude install auto-apt # 请求式软件包安装工具
# auto-apt update          # 为 auto-apt 建立 db 文件
$ auto-apt search pattern  # 在所有软件包中搜索 pattern,不论安装与否

软件包信息

$ apt-get   check           # 更新缓冲区并检查损坏的软件包
$ apt-cache search  pattern # 按文本描述搜索软件包
$ apt-cache policy  package # 软件包的 priority/dists 信息
$ apt-cache show -a package # 显示所有 dists 中软件包描述信息
$ apt-cache showsrc package # 显示相应源码包的信息
$ apt-cache showpkg package # 软件包调试信息
# dpkg  --audit|-C          # 搜索未完成安装的软件包
$ dpkg {-s|--status} package ... # 已安装软件包描述
$ dpkg -l package ...       # 已安装软件包的状态(每个占一行)
$ dpkg -L package ...       # 列出软件包安装的文件的名称

你也这可这样查看软件包信息:

/var/lib/apt/lists/*
/var/lib/dpkg/available

比较下面的文件可以确切了解最近的安装过程对系统造成了那些改变:

/var/lib/dpkg/status
/var/backups/dpkg.status*

阻止旧软件包升级

比如,要阻止 libc6 和 libc6-dev 升级,可以:

# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections

如果不清楚软件包的名字,也可以先执行下边的命令导出软件包列表:

# dpkg --get-selections \* > selections.txt

这种方法不影响 aptitude install package 命令操作。要阻止 aptitude upgradeaptitude dist-upgrade 命令对软件包执行的强制自动降级行为,可在 /etc/apt/preferences 中加上:

Package: libc6
Pin: release a=dapper
Pin-Priority: 2000

这里不能使用通配符,如果要保持所有与 glibc 源码包相关的二进制包的版本同步,可以明确的列出它们。

该命令可以显示处于“阻止”状态的软件包:

# dpkg --get-selections "*"|grep -e "hold$"