[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 下一页 ]
有多种工具可用于管理 Debian 软件包,从图形或基于文本的界面到用于安装软件包的底层工具。所有可用的工具都依赖于较低级别的工具才能正常工作,并且在此处以复杂度递减的顺序呈现。
重要的是要理解,诸如 aptitude
或 dselect
之类的高级软件包管理工具依赖于 apt
,而 apt
本身又依赖于 dpkg
来管理系统中的软件包。
有关 Debian 软件包管理实用程序的更多信息,请参阅 第 2 章 Debian 软件包管理
,该章节出自 Debian 参考手册
。本文档提供多种语言和格式,请参阅 DDP 用户手册概述中的 Debian 参考条目
。
这是主要的软件包管理程序。可以使用许多选项调用 dpkg
。一些常见的用法是
查找所有选项:dpkg --help。
打印指定软件包的控制文件(和其他信息):dpkg --info foo_VVV-RRR.deb
将软件包(包括解包和配置)安装到硬盘的文件系统中:dpkg --install foo_VVV-RRR.deb。
将 Debian 软件包解包(但不配置)到硬盘的文件系统中:dpkg --unpack foo_VVV-RRR.deb。请注意,此操作不一定会使软件包处于可用状态;某些文件可能需要进一步自定义才能正常运行。此命令会删除程序的所有已安装版本,并运行与该软件包关联的 preinst 脚本(请参阅什么是 Debian preinst、postinst、prerm 和 postrm 脚本?,第 7.6 节)。
配置已解包的软件包:dpkg --configure foo。除其他事项外,此操作还会运行与该软件包关联的 postinst 脚本(请参阅什么是 Debian preinst、postinst、prerm 和 postrm 脚本?,第 7.6 节)。它还会更新此软件包的 conffiles 中列出的文件。请注意,“configure”操作的参数是软件包名称(例如,foo),而不是 Debian 软件包文件的名称(例如,foo_VVV-RRR.deb)。
从 Debian 软件包中提取名为“blurf”的单个文件(或一组名为“blurf*”的文件):dpkg --fsys-tarfile foo_VVV-RRR.deb | tar -xf - blurf*
删除软件包(但不删除其配置文件):dpkg --remove foo。
删除软件包(包括其配置文件):dpkg --purge foo。
列出包含字符串(或正则表达式)“foo*”的软件包的安装状态:dpkg --list 'foo*'。
APT 是高级软件包工具,并提供 apt-get
程序。 apt-get
提供了一种使用命令行从多个源检索和安装软件包的简单方法。与 dpkg
不同,apt-get
不理解 .deb 文件,它使用软件包的正确名称,并且只能从 /etc/apt/sources.list
中指定的源安装 .deb 软件包。 apt-get
将在从配置的源下载 .deb 软件包[5]后直接调用 dpkg
。
一些常见的 apt-get
用法是
要更新系统已知的软件包列表,您可以运行
apt-get update
(您应该定期执行此操作以更新您的软件包列表)
要升级系统上的所有软件包(而不安装额外的软件包或删除软件包),请运行
apt-get upgrade
要安装 foo 软件包及其所有依赖项,请运行
apt-get install foo
要从系统中删除 foo 软件包,请运行
apt-get remove foo
要从系统中删除 foo 软件包及其配置文件,请运行
apt-get --purge remove foo
要升级系统上的所有软件包,并且如果软件包升级需要,则安装额外的软件包或删除软件包,请运行
apt-get dist-upgrade
(如果升级需要安装额外的软件包才能满足新的依赖关系,则 upgrade 命令会将软件包保持在其已安装的旧版本。 dist-upgrade 命令则不那么保守。)
请注意,您必须以 root 用户身份登录才能执行任何修改系统软件包的命令。
请注意,apt-get
现在默认安装推荐的软件包,并且是从控制台执行系统安装和主要系统升级的首选软件包管理程序,因为它具有强大的功能。
apt 工具套件还包括 apt-cache
工具,用于查询软件包列表。您可以使用它通过简单的文本或正则表达式查询以及软件包管理系统中的依赖关系查询来查找提供特定功能的软件包。一些常见的 apt-cache
用法是
查找描述中包含 word 的软件包
apt-cache search word
打印软件包的详细信息
apt-cache show package
打印给定软件包依赖的软件包
apt-cache depends package
打印软件包的可用版本以及反向依赖于它的软件包的详细信息
apt-cache showpkg package
有关更多信息,请安装 apt
软件包并阅读 apt-get(8)
、sources.list(5)
,并安装 apt-doc
软件包并阅读 /usr/share/doc/apt-doc/guide.html/index.html
。
aptitude
是 Debian GNU/Linux 系统的软件包管理器,它为 apt 软件包管理基础架构提供前端。 aptitude
是一个使用 curses 库的基于文本的界面,它可用于快速简便地执行管理任务。
aptitude
提供了 dselect
和 apt-get
的功能,以及这两个程序中都没有的许多附加功能
aptitude
可以轻松访问软件包的所有版本。
aptitude
通过在“过时和本地创建的软件包”下列表,可以轻松跟踪过时的软件。
aptitude
包含一个相当强大的系统,用于搜索特定软件包和限制软件包显示。熟悉 mutt
的用户会很快上手,因为 mutt
是表达式语法的灵感来源。
aptitude
可用于安装可用的预定义任务。有关更多信息,请参阅tasksel,第 8.1.5 节。
全屏模式下的 aptitude
具有嵌入的 su
功能,可以由普通用户运行。当您真正需要管理权限时,它将调用 su
(并询问 root 密码,如果有)。
您可以通过可视化界面(只需运行 aptitude)或直接从命令行使用 aptitude
。使用的命令行语法与 apt-get
中使用的语法非常相似。例如,要安装 foo 软件包,您可以运行 aptitude install foo。
请注意,aptitude
是从控制台进行日常软件包管理的首选程序。
有关更多信息,请阅读手册页 aptitude(8)
并安装 aptitude-doc
软件包。
synaptic
是一个图形软件包管理器。它使您能够以用户友好的方式安装、升级和删除软件包。除了 aptitude 提供的所有功能外,它还具有编辑已使用存储库列表的功能,并支持浏览与软件包相关的所有可用文档。有关更多信息,请参阅 Synaptic 网站
。
当您想要执行特定任务时,可能很难找到满足您需求的合适的软件包套件。 Debian 开发人员定义了 任务,任务是与特定活动相关联的几个独立 Debian 软件包的集合。可以通过 tasksel
程序或通过 aptitude
安装任务。
Debian 安装程序通常会自动安装与标准系统和桌面环境关联的任务。安装的特定桌面环境将取决于使用的 CD/DVD 介质,最常见的是 GNOME 桌面(gnome-desktop 任务)。此外,根据您在安装过程中所做的选择,任务也可能会自动安装在您的系统中。例如,如果您选择了语言,则与其关联的任务也会自动安装,如果您在笔记本电脑系统上运行,安装程序会识别到 laptop 任务也会被安装。
此程序是 Debian 软件包管理系统的菜单驱动界面。对于 woody 和更早的版本,这是首次安装的主要软件包管理界面,但目前鼓励用户改用 aptitude
。一些用户可能会觉得使用 aptitude
更舒服,并且对于大规模升级,也建议使用 aptitude
而不是 dselect
。有关 aptitude
的更多信息,请参阅aptitude,第 8.1.3 节。
dselect
可以
引导用户选择要安装或删除的软件包,确保不会安装彼此冲突的软件包,并且安装所有使每个软件包正常工作所需的软件包;
警告用户其选择中的不一致或不兼容性;
确定软件包必须安装的顺序;
自动执行安装或删除;并且
引导用户完成每个软件包所需的任何配置过程。
dselect
首先向用户显示一个包含 7 个项目的菜单,每个项目都是一个特定操作。用户可以使用箭头键移动突出显示栏来选择其中一个操作,然后按 <enter> 键来选择突出显示的操作。
用户接下来看到的内容取决于他选择的操作。如果他选择除了 Access 或 Select 之外的任何选项,则 dselect
将简单地继续执行指定的操作:例如,如果用户选择了操作 Remove,则 dselect 将继续删除用户上次选择 Select 操作时选择要删除的所有文件。
Access 菜单项和 Select 菜单项都指向其他菜单。在这两种情况下,菜单都以分屏形式呈现;顶部屏幕提供可滚动的选择列表,而底部屏幕为每个选择提供简要说明(“信息”)。
提供广泛的在线帮助,随时使用“?”键获取帮助屏幕。
第一个 dselect
菜单中呈现的操作顺序表示用户通常选择 dselect
安装软件包的顺序。但是,用户可以根据需要多次选择任何主菜单选项(包括完全不选择,具体取决于想要做什么)。
首先选择一种访问方法。这是用户计划访问 Debian 软件包的方法;例如,一些用户在 CD-ROM 上有可用的 Debian 软件包,而另一些用户则计划使用匿名 FTP 获取它们。选择的“访问方法”在 dselect
退出后存储,因此如果它没有更改,则无需再次调用此选项。
然后更新可用软件包的列表。为此,dselect
读取文件“Packages.gz”,该文件应包含在要安装的 Debian 软件包的目录的顶层。(但如果它不在那里,dselect
将为您提供制作它的选项。)
选择要安装在其系统上的特定软件包。选择此菜单项后,用户首先会看到一个全屏帮助(除非使用了 `--expert' 命令行选项)。一旦用户退出帮助屏幕,他就会看到用于选择要安装(或删除)的软件包的分屏菜单。
屏幕的顶部是一个相对狭窄的窗口,用于查看 Debian 的 29000 个软件包的列表;屏幕的底部包含突出显示的软件包或软件包组的描述。
可以指定应该对哪些软件包进行操作,方法是突出显示软件包名称或软件包组的标签。之后,您可以选择软件包
这可以通过按“+”键来完成。
软件包可以通过两种方式删除
移除:这会删除与软件包关联的大部分文件,但保留列为配置文件的文件(请参阅什么是 Debian 配置文件?,第 7.5 节)和软件包配置信息。这通过按“-”键来完成。
清除:这会删除软件包的每个文件。这通过按“_”键来完成。
请注意,无法删除“所有软件包”。如果您尝试这样做,您的系统将改为简化为初始安装的基本软件包。
这通过按“=”键来完成,它有效地告诉 dselect
不要升级软件包,即使您系统上当前安装的版本不如您正在使用的 Debian 存储库中可用的版本新(这是在您设置访问方法时指定的,并在您使用 更新 时获取的)。
就像您可以将软件包设置为保留一样,您可以通过按“:”来反转此设置。这告诉 dselect
,如果有更新的版本可用,则可以升级软件包。这是默认设置。
您可以使用“o”键在各种软件包排序选项之间循环切换,从而选择软件包的呈现顺序。默认顺序是按优先级呈现软件包;在每个优先级中,软件包按存储它们的存档目录(也称为部分)的顺序呈现。给定此排序顺序,部分 A 中的某些软件包(例如)可能会首先呈现,然后是部分 B 中的某些软件包,然后是部分 A 中的更多软件包(优先级较低)。
您还可以使用“v”(详细)键展开屏幕顶部标签的含义。此操作会将以前适合显示的大部分文本推到右侧。要查看它,请按向右箭头;要向左滚动,请按向左箭头。
如果您选择安装或删除软件包,例如 foo.deb
,并且该软件包依赖于(或推荐)另一个软件包,例如 blurf.deb
,则 dselect
会将您放置在主选择屏幕的子屏幕中。您可以在其中在相关软件包之间进行选择,接受建议的操作(安装或不安装),或拒绝它们。要执行后者,请按 Shift-D;要返回前者,请按 Shift-U。在任何情况下,您都可以保存您的选择并通过按 Shift-Q 返回主选择屏幕。
返回主菜单的用户可以随后选择“安装”菜单项以解包和配置选定的软件包。或者,希望删除文件的用户可以选择“删除”菜单项。在任何时候,用户都可以选择“退出”以退出 dselect;用户的选择由 dselect
保留。
此程序操作 Debian 软件包(.deb)文件。一些常见的用法是
查找所有选项:dpkg-deb --help。
确定 Debian 软件包文件中包含哪些文件:dpkg-deb --contents foo_VVV-RRR.deb)
将命名 Debian 软件包中包含的文件提取到用户指定的目录:dpkg-deb --extract foo_VVV-RRR.deb tmp 将 foo_VVV-RRR.deb 中的每个文件提取到目录 tmp/ 中。这对于在本地目录中检查软件包的内容非常方便,而无需将软件包安装到根文件系统中。
从软件包中提取控制信息文件:dpkg-deb --control foo_VVV-RRR.deb tmp。
请注意,使用 dpkg-deb --extract 仅仅解包的任何软件包都将安装不正确,您应该改用 dpkg --install。
更多信息请参见手册页 dpkg-deb(1)
。
此程序将大型软件包拆分为较小的文件(例如,用于写入一组软盘),也可用于将一组拆分的文件合并回单个文件。它只能在 Debian 系统(即包含 dpkg
软件包的系统)上使用,因为它调用程序 dpkg-deb 将 debian 软件包文件解析为其组件记录。
例如,要将一个大的 .deb 文件拆分为 N 个部分,
执行命令 dpkg-split --split foo.deb。这将生成 N 个文件,每个文件在当前目录中大约为 460 KBytes 长。
将这 N 个文件复制到软盘。
将软盘的内容复制到另一台计算机上您选择的硬盘上。
使用 dpkg-split --join "foo*" 将这些部分文件连接在一起。
Debian GNU/Linux 系统中的内核(文件系统)支持替换文件,即使文件正在使用中。
我们还提供了一个名为 start-stop-daemon
的程序,该程序用于在启动时启动守护进程,或在运行级别更改时(例如,从多用户更改为单用户或停止)停止守护进程。当安装包含守护进程的新软件包时,安装脚本也会使用相同的程序来停止正在运行的守护进程,并在必要时重新启动它们。
要了解 Debian 系统上安装的所有软件包的状态,请执行命令
dpkg --list
这会为每个软件包打印单行摘要,给出 2 个字母的状态符号(在标题中解释)、软件包名称、已安装的版本和简短描述。
要了解名称与以“foo”开头的任何模式匹配的软件包的状态,请执行命令
dpkg --list 'foo*'
要获取特定软件包的更详细报告,请执行命令
dpkg --status packagename
要列出已安装软件包 foo 提供的所有文件,请执行命令
dpkg --listfiles foo
请注意,安装脚本创建的文件不会显示。
要识别生成名为 foo 的文件的软件包,请执行以下任一命令
dpkg --search filename
这会在已安装的软件包中搜索 filename。(这(目前)等效于搜索目录 /var/lib/dpkg/info/ 中具有 .list 文件扩展名的所有文件,并调整输出以打印包含它的所有软件包的名称和转移。)
dlocate
工具是更快的替代方案。
dlocate -S filename
zgrep foo Contents-ARCH.gz
这会在完整路径名中搜索包含子字符串 foo 的文件。文件 Contents-ARCH.gz(其中 ARCH 表示所需的架构)位于 Debian FTP 站点的主要软件包目录(main、non-free、contrib)中(即在 /debian/dists/squeeze 下)。 Contents 文件仅引用其所在的子目录树中的软件包。因此,用户可能必须搜索多个 Contents 文件才能找到包含文件 foo 的软件包。
与 dpkg --search 相比,此方法的优势在于它可以在您系统上当前未安装的软件包中查找文件。
apt-file search foo
如果您安装了 apt-file
,类似于上面,它会在完整路径名中搜索包含子字符串或正则表达式 foo 的文件。与上面的示例相比,优势在于无需检索 Contents-ARCH.gz 文件,因为它会在您运行(以 root 身份)apt-file update 时自动为 /etc/apt/sources.list
中定义的所有源执行此操作。
某些软件包分为程序(“foo”)和数据(“foo-data”)(或“foo”和“foo-doc”)。这对于 Debian 中的许多游戏、多媒体应用程序和词典来说是正确的,并且自那时以来引入,因为某些用户可能希望在不安装程序的情况下访问原始数据,或者因为程序可以在没有数据本身的情况下运行,使其成为可选的。
处理库时也会出现类似情况:通常,由于包含应用程序的软件包依赖于它们,因此会安装这些库。当应用程序软件包被清除时,库软件包可能会保留在系统上。或者:当应用程序软件包不再依赖例如 libdb4.2,而是依赖于 libdb4.3 时,当应用程序软件包升级时,libdb4.2 软件包可能会保留。
在这些情况下,“foo-data”不依赖于“foo”,因此当您删除“foo”软件包时,大多数软件包管理工具不会自动删除它。库软件包也是如此。这是避免循环依赖所必需的。如果您使用 aptitude
(请参阅aptitude,第 8.1.3 节)作为您的软件包管理工具,它将自动跟踪自动安装的软件包,并在系统中不再有软件包需要它们时删除它们。
[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 下一页 ]
Debian GNU/Linux FAQ
版本 5.0,2011 年 8 月 27 日