Debian作为一款非常受欢迎的开源操作系统,其高级软件包管理功能为用户提供了丰富的软件安装、更新和卸载等操作。本文将详细介绍Debian高级软件包管理的相关内容,包括命令行中的高级软件包管理操作、验证安装的软件包文件、预防软件包故障以及搜索软件包元数据等方面。
一、命令行操作
下面列出了一些其它的软件包管理操作,这些操作对于 aptitude 过于高级或缺失所需的功能。
高级软件包管理操作:
命令 | 操作 |
---|---|
COLUMNS=120 dpkg -l package_name_pattern |
列出已安装软件包的列表用于错误报告 |
dpkg -L package_name |
显示一个已安装软件包的内容 |
dpkg -L package_name | egrep '/usr/share/man/man.*/.+' |
列出一个已安装软件包的 man 手册页 |
dpkg -S file_name_pattern |
列出匹配文件名的已安装软件包 |
apt-file search file_name_pattern |
列出档案库中匹配文件名的软件包 |
apt-file list package_name_pattern |
列出档案库中匹配的软件包的内容 |
dpkg-reconfigure package_name |
重新配置软件包 |
dpkg-reconfigure -plow package_name |
通过最详细的方式来重新配置软件包 |
configure-debian |
以全屏菜单的形式重新配置软件包 |
dpkg --audit |
部分安装软件包的审计系统 |
dpkg --configure -a |
配置所有部分安装的软件包 |
apt-cache policy binary_package_name |
显示一个二进制软件包的可用版本、优先级和档案库信息 |
apt-cache madison package_name |
显示一个软件包的可用版本和档案库信息 |
apt-cache showsrc binary_package_name |
显示一个二进制软件包的源代码软件包信息 |
apt-get build-dep package_name |
安装构建软件包所需要的软件包 |
aptitude build-dep package_name |
安装构建软件包所需要的软件包 |
apt-get source package_name |
(从标准档案库)下载源代码 |
dget dsc 文件的 URL |
(从其它档案库)下载源代码软件包 |
dpkg-source -x package_name_version-debian.revision.dsc |
从源代码软件包集合(“*.orig.tar.gz ” 和 “*.debian.tar.gz “/”*.diff.gz ”)中构建代码树 |
debuild binary |
从本地的源代码树中构建软件包 |
make-kpkg kernel_image |
从内核源代码树中构建一个内核软件包 |
make-kpkg --initrd kernel_image |
从启用了 initramfs 的内核代码树中构建一个内核软件包 |
dpkg -i package_name_version-debian.revision_arch.deb |
安装一个本地的软件包到系统中 |
apt install /path/to/package_filename.deb |
安装本地软件包到系统中,同时尝试自动解决依赖 |
debi package_name_version-debian.revision_arch.dsc |
安装本地软件包到系统中 |
dpkg --get-selections '*' >selection.txt |
保存 dpkg 级别的软件包选择状态信息 |
dpkg --set-selections <selection.txt |
使用 dpkg 设置软件包选择状态 |
echo package_name hold | dpkg --set-selections |
使用 dpkg 将一个软件包的包选择状态设置为 hold(相当于 “aptitude hold 包名 “) |
注意:
对于一个支持多架构的软件包,你可能需要为一些命令指定架构名称。例如,使用 “dpkg -L libglib2.0-0:amd64” 来列出 amd64 架构的 libglib2.0-0 软件包的内容;
系统管理员应该小心使用低级的软件包工具(例如 “dpkg -i …” 和 “debi …”),它们不会自动处理所需的软件包依赖。 dpkg 的命令行选项 “–force-all” 和类似的选项只适用于高手。没有完全理解它们的效果却使用它们会破坏你的整个系统。
请注意以下几点:
- 所有的系统配置和安装命令都需要以 root 运行;
- 不同于使用正则表达式的 aptitude ,其它的软件包管理命令使用类似于 shell glob 的通配符;
- apt-file(1) 由 apt-file 软件包提供,并且需要先运行 “apt-file update”;
- configure-debian(8) 由 configure-debian 软件包提供,它运行 dpkg-reconfigure(8) 作为后端;
- dpkg-reconfigure(8) 使用 debconf(1) 作为后端来运行软件包脚本;
- “apt-get build-dep” 、”apt-get source” 和 “apt-cache showsrc” 命令需要 源列表中存在 “deb-src” 条目;
- dget(1) 、debuild(1) 和 debi(1) 需要 devscripts 软件包;
- make-kpkg 命令需要 kernel-package 软件包。
二、验证软件包文件
已经安装 debsums 软件包的,能使用 debsums(1) 命令通过 “/var/lib/dpkg/info/*.md5sums” 文件中的 MD5sum 值,验证已安装的文件。
因为 MD5sum 数据库可能被侵入者篡改,debsums(1) 作为安全工具使用有限。这种工具用于校验管理者造成的本地修改或媒体错误造成的损坏是很不错的。
三、预防软件包故障
许多用户更想使用 Debian 系统的 testing (或 unstable)版本,因为它有新的功能和软件包。但这会使得系统更容易遇到严重的软件包问题。
- 安装软件包 apt-list bugs 可以避免系统遭遇严重 bugs,在通过 APT 系统升级时,它会自动检查 Debian BTS 里的严重 bug。
- 安装 apt-listchanges 软件包,在使用 APT 系统升级时它会在 “NEWS.Debian” 中提供重要新闻。
四、搜索软件包元数据
尽管近来浏览 Debian 网站 https://packages.debian.org/ 是搜索软件包元数据更加简单的方法,但我们依旧来看看更传统的方法。
- grep-dctrl(1) 、grep-status(1) 和 grep-available(1) 命令被用来搜索具有 Debian 软件包控制文件格式的任何文件。
- “dpkg -S file_name_pattern” 能够被用来搜索包含该文件的软件包名称,其匹配的名称是由 dpkg 安装的。但它会忽略维护者的脚本创建的文件。
如果需要对 dpkg 元数据进行更复杂的搜索,你需要在 “/var/lib/dpkg/info/” 目录下运行 “grep -e regex_pattern *” 命令。这会使你在软件包脚本和安装查询文本中搜索提及的单词。