Debian 软件包管理,第一部分:用户指南

作者:David Blackman

Debian 拥有所有 Linux 发行版中最强大和通用的软件包管理系统之一。它也令人难以置信地神秘。但是,一旦你开始使用它,我保证它会变得更容易。

Debian 的基本软件包管理工具是 dpkg。dpkg 实际上是建立在 dpkg-deb 之上的,但我稍后会深入探讨。有一套工具建立在 dpkg 之上,包括 dselectapt-getconsole-apt 等。本文档充当操作指南,提供有关如何操作 dpkg 并接收有关您的 Debian 或基于 Debian 的系统的相关信息的命令和说明。我不会涵盖所有内容,但足以让您能够熟练地使用基于 Debian 的系统的软件包管理功能。

每个 Debian 软件包都是一个以扩展名“.deb”结尾的存档。在本文中,我将软件包称为“deb”。 deb 通常以以下方式命名

zsh_3.1.6.pws21-1.deb

对于本文中的示例,当需要替换 deb 时,我使用“foobar.deb”,当需要替换软件包名称时,我使用“foobar”。

对于那些熟悉 Red Hat 软件包管理 (RPM) 系统的人来说,dpkg 的软件包管理方法在其方法上大不相同。 RPM 是一个基于文件的软件包管理器,这意味着它检查软件包所需的特定文件,例如 libgtk-1.2.so.0。相比之下,dpkg 是基于软件包的,因此它检查您是否拥有特定的软件包,例如 libgtk1.2。

Dpkg:所有 Debian 的根基

大多数人不会将 dpkg 用于日常软件包管理,但它是一个非常强大且有用的工具。 Dpkg 最基本的操作是安装软件包,这可以使用命令 dpkg -i foobar.deb 完成。这将安装软件包,同时备份软件包的任何现有版本。命令 dpkg -i -R /foo/bar 将安装目录中的所有 deb。

我们都知道,根据经验,有时软件包无法正确安装或拒绝配置。或者用户可能中止了配置过程。 dpkg 有一些有用的工具可以简化配置过程。在这些情况下,dpkg -configure <package> 将完成特定软件包的配置,而 dpkg --configure --pending 将配置所有配置挂起的软件包。

使用一些简单的命令删除软件包同样容易。使用 dpkg -r <package>dpkg -remove <package> 将删除软件包并保留其配置文件。如果您想删除与软件包相关的所有文件,包括其配置文件,请使用命令 dpkg --purge <package>

获取信息

Debian 软件包管理提供了多种方法来查找有关当前安装了哪些软件包以及每个软件包提供了哪些文件的信息。一种排序软件包的方法是使用模式,通过命令 dpkg-l <pattern> 来实现。如有必要,可以使用通配符作为 <pattern>。单独使用 dpkg -l 将提供系统上当前安装的所有软件包的列表。

使用 Debian 软件包管理还可以让您查看特定软件包安装了哪些文件,使用命令 dpkg -L <package>。或者,要查找哪个软件包拥有某个文件,请使用 dpkg -S <file>。这些搜索也可以使用模式完成,包括通配符。

当您需要获取有关特定 deb 的信息时,以下命令列表很有帮助

dpkg -I foobar.deb 列出有关 deb 的详细信息dpkg -c foobar.deb 列出 deb 的内容,类似于 tar 的 -c 选项。dpkg -x foobar.deb <dir> 将 deb 提取到指定目录dpkg -X foobar.deb <dir> 列出文件,就像提取它们一样,类似于 tar 的 -v 选项

强制执行!

除了 dpkg 为高效软件包管理访问的所有有用信息外,它还拥有一组丰富的选项,用于彻底搞砸您的软件包管理系统。引用 dpkg 的手册页,“警告:这些选项主要供专家使用。在不完全理解其效果的情况下使用它们可能会破坏您的整个系统。” 我不会在此处介绍这组选项,因为您实际上永远不需要使用它们。但是,如果您需要强制 dpkg 忽略依赖项、覆盖其他软件包安装的文件、忽略冲突或 Debian 软件包管理系统旨在 阻止 的任何其他内容,请查看 man dpkg。

APT

APT 代表“高级软件包工具”。它在简化 Debian 用户的生活方面做得非常出色。如果上一个会话让您感到沮丧,请不要害怕! APT 是我用于大多数软件包管理的工具。那么,您可能会问,我为什么要强迫您使用 dpkg 呢?因为了解 APT 的底层原理很重要。

APT 系统由三个主要部分组成:配置文件 sources.list 和两个名为 apt-get 和 apt-cache 的程序。还有一些次要部分,例如 apt-cdrom。

sources.list

一旦您学会如何使用它,/etc/apt/sources.list 将成为您系统中最重要的文件之一。在大多数情况下,sources.list 由 APT 可以从中提取信息的 ftp 和 http 地址组成,并且是在一个位置组织资源的好方法。一个典型的条目看起来像这样

deb http://http.us.debian.org/debian unstablemain contrib non-free

条目的第一部分是“deb”,表示指定从哪里获取二进制文件的行,或者“deb-src”,表示指定从哪里获取 debian 源代码包。下一部分称为 URI,它类似于 URL;这是 debian 目录的根目录。 URI 之后是发行版,通常列为“stable”、“frozen”或“unstable”,尽管可以使用特定的发行版,如 Hamm、Slink 或 Potato。发行版也可以作为确切路径给出,在这种情况下,它需要以“/”结尾,并且不能指定组件。组件通常是“main”、“contrib”、“non-free”、“non-us/main”、“non-us/contrib”或“non-us/non-Free”。这就是您需要了解的关于利用 sources.list 的全部内容。 CD-ROM 条目由 apt-cdrom 生成(稍后会详细介绍),因此您无需手动编写这些条目。

编辑 source.list 文件是为了更改 APT 使用的站点(更改镜像)、更改 APT 将从中获取软件包的发行版,或者只是为“非官方”deb 或维护较新 deb 的站点(如 KDE 和 HelixCode)添加新的 URI。编辑此文件后,您应始终运行 apt-get update。有关要使用的 Debian 镜像列表,请查看 http://www.debian.org/

apt-cdrom

将 Debian CD-ROM 添加到 APT 数据库的一种方法是使用非常易于使用的 apt-cdrom。命令 apt-cdrom add 应该会自动挂载您的 CD-ROM(前提是 /dev/cdrom 已正确链接),扫描它并在 /etc/apt/sources.list 中创建正确的条目。

与 Linux 中的任何事物一样,这不是唯一的方法!如果您的 Debian CD-ROM 已挂载(挂载点必须列在 /etc/fstab 中),您可以使用一些标志来完成任务。使用 -d <mount point> 指定挂载点,-f 使 apt-cdrom 检查各个软件包,以及 -a 进行彻底的软件包扫描,这将查找 CD-ROM 上任何地方的软件包文件。

apt-get

Debian 最伟大的声誉是 apt-get,这是一个非常智能(好吧,大多数 时候都很智能)、易于使用的软件包工具,可以自动处理软件包依赖项和冲突。您应该做的第一件事(并且每次编辑 /etc/apt/sources.list 时都要做)是运行 apt-get update,它从这些位置提取 apt-cacheapt-get 使用的软件包信息。

现在,您可以开始安装软件包了。 APT 最常用的操作可能是安装。要安装新软件包(并自动满足其依赖项),请使用 apt-get install <package>。如果还有其他必须安装的软件包,APT 会在下载它们之前通知您。

如果您在不满足要求的情况下安装 deb,或者在安装或删除过程中遇到问题,您通常将无法使用 dpkg,直到问题得到解决。解决这些问题的一种方法是使用命令 apt-get -f install,它将尝试解决所有问题并在进行过程中提出问题。

APT 还可以使用 apt-get source <package> 下载源代码,前提是您的 /etc/apt/sources.list 中有任何 deb-src 行。要删除软件包,请使用 apt-get remove <package>。如果您想清理存档,有两个选项。要删除所有存档,命令是 apt-get clean;如果您只想删除旧存档,请改用 apt-get autoclean。当需要将所有软件包升级到最新版本时,一个简单的命令 apt-get upgrade 就可以搞定。同时,apt-get dist-upgrade 适用于升级到新版本的 Debian,自动重新配置名称已更改的软件包的依赖项。

使用 apt-get 时,还有一些其他命令行选项很有用:“-d”仅下载存档,但不尝试安装或解压缩它们;“-s”用于模拟,它实际上不会做任何事情;“y”对所有问题回答“是”;“-b”尝试在下载源代码包后构建它。

此外,apt-get 可以使用正则表达式模式,例如 apt-get install '.*mame.*'apt-get remove 'mozill.'。 Apt-get 还会尝试匹配出现在字符串中特定位置的元素。例如,要仅在开头位置匹配“pilot”,例如“pilot-manager”而不是“gnome-pilot”,请在表达式(如 apt-get install '^pilot.*')中使用“^”(它是“行首”字符)。

升级

我还没有找到另一个像 Debian 那样容易升级到新版本的发行版。如前所述,当您要升级版本时,只需更改 /etc/apt/sources.list 中 URI 的发行版部分,然后执行 apt-get dist-upgrade。通常,多次运行 apt-get dist-upgrade 有助于使一切都顺利安装和配置。您只能使用此方法升级到较新版本,从 stable 到 frozen,stable 到 unstable 或 frozen 到 unstable。您 不能 降级。

apt-cache

apt-cache 非常适合查找有关软件包的信息,即使是您未安装的软件包!命令 apt-cache show <package> 将打印有关软件包的各种信息,包括依赖项、全名、它提供的内容、简短和详细描述,以及最重要的解压缩后的大小。 apt-cache depends <package> 提供所选 <package> 需要安装才能正常工作的其他软件包的列表。要打印每个可用软件包的完整列表,请使用 apt-cache pkgnames

我发现 apt-cache 最有用的功能必须是 apt-cache search <string>。此选项将在所有软件包名称和描述中搜索您的 <string> 选择的出现次数。显然,这可以节省大量时间。

为了进一步协助您的管理能力,apt-cache 可以利用一些选项。例如,-i 仅列出重要的依赖项,-f 在搜索后打印完整记录(就像“show”一样),-names-only 将搜索限制为软件包名称。

前端!

虽然我通常可以通过 dpkg 进行软件包管理,使用 apt-cache 进行搜索,使用 apt-get 进行安装,但有时我想更好地了解我可以使用的内容。这就是 dselect、console-apt 和 gnome-apt 的用武之地。

dselect

dselect 是 Debian 前端的鼻祖。作为安装过程的第一部分,它是新 Debian 用户首先遇到的东西,它吓坏了他们。的确,dselect 可能非常可怕,而且非常密集。本节将是对 dselect 的 简短而精彩 的介绍。首先,我使用 dselect 的最佳建议是阅读所有屏幕帮助。虽然不是很用户友好,但您需要知道的一切都包含在那里。

Debian Package Management, Part 1: A User's Guide

图 1. Dselect-软件包状态检查

当您第一次启动 dselect 时,您需要转到“[A]ccess”以选择正确的安装访问方法。意思是,如果您有 Debian 的本地 nfs 镜像,请选择“nfs”,如果您想通过 Internet (http/ftp) 安装,或者如果您已为本地地址配置 sources.list,请选择“apt”。其他可用的方法是 CD、Multi-CD(如果您的发行版有多个 CD-ROM 而不是一个)、软盘和已挂载。

选择访问方法后,dselect 需要找出它可以访问哪些软件包;为此,请选择“[U]pdate”并等待一分钟。

“[S]elect”是实际软件包管理发生的地方。首先,您将看到一个帮助屏幕。阅读它! 当您完成 阅读它 后,按空格键退出帮助或按“.”阅读快捷键绑定。您可以通过搜索或使用向上/向下、向上翻页/向下翻页、Home/End 和向左/向右来在软件包列表中移动。以下是 dselect 中一些基本且有用的按键

/ 搜索\ 重复上次搜索?调出帮助d 向下滚动软件包信息u 向上滚动它

当您突出显示要执行某些操作的软件包时,请使用

+ 安装或升级- 删除= 保持当前状态

当您准备离开选择屏幕时,请选择

<回车> 确认、退出并检查依赖项Q 退出、确认并覆盖依赖项X 或 Esc 放弃所有更改

按下回车键后,您可能会看到软件包列表;这些可能是您选择的软件包的依赖项或与之冲突的软件包。查看软件包;屏幕的下半部分将告诉您问题是什么。解决这些问题后,按回车键。

在“[S]elect”中进行更改后,使用“[I]nstall”或“[R]emove”,这将使您的系统与更改保持同步。“[C]onfig”仅在任何软件包配置失败时才需要。

Gnome-apt

Gnome-apt 是一个围绕 Gnome 构建的 Debian GUI 软件包管理器。它非常直观,并且非常有用。 Gnome-apt 以布局良好的界面显示软件包大小、依赖项以及几乎任何其他相关信息。软件包以排序树状结构显示(参见图 2),gnome-apt 可以按字母顺序或按部分、状态或优先级显示软件包。它还具有简单而强大的搜索功能。 Gnome-apt 包含在 Debian 2.2 (Potato) 和当前的 unstable 发行版 (Woody) 中。

Debian Package Management, Part 1: A User's Guide

图 2. Gnome-apt:软件包工具

Kpackage

KPackage 是适用于 RPM 和 Deb 的 KDE 软件包前端。它使用选项卡和树状界面的组合(参见图 3),其功能与 gnome-apt 相似。 Kpackage 的酷炫功能之一是依赖项是引用它们的软件包的超链接。 Kpackage 还列出了每个已安装存档中包含的文件,并检查以确保它们都存在。可以在 http://www.general.uwa.edu.au/u/toivo/kpackage/ 找到它。

Debian Package Management, Part 1: A User's Guide

图 3:Kpackage:构建软件包树

console-apt

console-apt 是一个专为 APT 设计的新前端。目前,它仅在 Debian 的 unstable 发行版中可用;由于它仍在开发中,因此我不会过多介绍它。 Console-apt 确实有一些不错的功能,包括更直观和可用的界面、下载进度指示器、选择性升级以及搜索、排序和过滤软件包列表的能力。

结束

使用这些选项和功能,您现在应该能够轻松维护和管理您的 Debian 软件包系统。相信我,它听起来比实际情况更复杂。我试图提供 Debian 提供的尽可能多的选项,但不得不省略一些;我还没有能够让自己摆脱 APT。总之,我还没有看到任何感觉与 APT 处于同一水平的 RPM 前端。

Debian Package Management, Part 1: A User's Guide
David Blackman 是纽约市史蒂文森高中 (Stuyvesant High School) 的一名学生系统管理员。他最近爱上了 Helix Code Gnome。他喜欢 C 中的指针算术和 Perl 的邪恶之处。
加载 Disqus 评论