红联Linux门户
Linux帮助
当前位置: 红联Linux门户 > Debian

Debian 软件包管理

发布时间:2009-07-10 21:44:13来源:红联作者:刘冲
地址:http://www.debian.org/doc/manuals/debian-reference/ch-package.zh-cn.html
Debian Reference
第 6 章 - Debian 软件包管理
高级包管理工具 aptitude 是目前首选的字符界面的APT 前端程序。它会记住哪些包是你安装的,哪些是为了满足依赖关系而安装的;在不被已安装包需要的情况下aptitude会自动卸载后者。它内建一套高级的包过滤器,但是比较难上手。
synaptic 是目前首选的基于 GTK 的图形化 APT前端程序。它的包过滤器比 aptitude的好用多了。它包含了对 Debian Package Tags的实验性支持。
为了减少 Debian仓库的网络负担和加快你下载的速度,你应该从 Debian镜像下载。
如果你需要在你本地网络的许多台机器上安装相同的包。在使用APT 下载包的时候,请考虑使用 squid 来设置本地HTTP 代理。必要的话,可以设置环境变量 http_proxy或者在 /etc/apt/apt.conf 里面设置 http的值。
尽管 apt_preferences(5) 中描述的 APT 的 pinning功能非常强大,但造成的影响是难以察觉和管理的。你应该把它作为一个高级功能来看待。
chroot, 第 8.6.35节中描述的使用方法非常适合于需要同时确保系统的稳定性和使用最新软件的情况。
本章节是基于 Woody 之后的系统写的,某些东西只适合于 Sarge或更新的系统。
6.1 介绍如果你没有精力阅读完所有的开发者文档,那么先看看本章的内容,然后开始体验Debian testing/unstable 的威力吧:-)
6.1.1 主要的包管理工具 dpkg - Debian 包安装工具
apt-get - APT 的命令行前端
aptitude - APT 的高级的字符和命令行前端
synaptic - 图形界面的 APT 前端
dselect - 使用菜单界面的包管理工具
tasksel - Task 安装工具
这些工具不是用来取代对方的,比如 dselect同时使用 APT 和 dpkg。
APT 使用 /var/lib/apt/lists/* 来跟踪可用的软件包,而dpkg 使用的是/var/lib/dpkg/available。如果你使用了 aptitude或者其他 APT 前端来安装软件包,同时你希望使用dselect 来安装软件包,请不要忘记使用dselect 菜单上的[U]pdate(或者运行"dselectupdate")来更新 /var/lib/dpkg/available。
在处理依赖关系上 apt-get会自动下载安装依赖的软件包,但是不会处理所安装软件推荐的或者建议的软件包。
相反 aptitude可以设置成安装所安装软件推荐的或者建议的软件包。
dselect给使用者列出所安装软件推荐或建议的软件包,可以进行单独选择。参阅 软件包依赖关系, 第2.2.8 节.
6.1.2 方便的工具 dpkg-reconfigure - 重新配置已安装的软件包
(如果它是使用 debconf 进行配置的)
dpkg-source - 管理源码包
dpkg-buildpackage - 自动生成包文件
apt-cache - 在本地缓冲区检查包文件
6.2 Debian 软件包管理基础6.2.1 设置 APT参考 准备升级工作,第 5.2 节 来设置 sources.list。 [34] 请参考 Debian 系统安装提示, 第 3 章, 发行版升级到stable、testing 或 unstable, 第 5章, 和 应急的编辑器, 第11.2 节.
6.2.2 安装 tasks你可以安装一些软件包集合,这些集合是由使 Debian系统满足某些特定用途的典型软件包组成的。这些集合被称为“tasks”。
在初始化安装中,安装 tasks 最简单的方法就是使用tasksel。 注意在使用之前,你需要运行
dselect update
建议使用 aptitude 来安装 tasks。 它能让你在选择好tasks 并准备安装之前,删除 tasks 中的某些软件包。
6.2.3 aptitudeaptitude 是全新的可菜单操作的包安装工具,和dselect 类似,但是是针对 APT从头设计的。从大多数参数来讲,aptitude完全可以作为 apt-get 的一个兼容的代替品。 参阅aptitude(1) 和file:///usr/share/doc/aptitude/README.
一旦开始使用aptitude,你最好继续使用它,而不是选择其他替代工具。否则你将失去aptitude包存的软件安装清单,你就不能享受自动删除多余软件包的功能了。
全屏状态下 aptitude接受单键的命令,大多数是小写的。主要的几个功能键如下:
按键 动作
F10 菜单
? 按键命令帮助(完整的清单)
u 更新软件包信息
+ 标记软件包为升级或者新安装
- 标记软件包为删除(保留配置文件)
_ 标记软件包为完全删除(删除配置文件)
= 保持软件包的当前版本,阻止其被升级
U 标记所有可以升级的软件包为升级
g 下载和安装选择的软件包
q 退出当前屏幕,保存改变
x 退出当前屏幕,忽略改变
Enter 查看一个软件包的信息
C 查看一个软件包的更新日志
l 改变软件包树状显示限制
/ 搜索第一个匹配的软件包
\ 重复最后一次搜索
和 apt-get 一样, aptitude安装软件包的时候自动解决依赖问题。 aptitude还能安装即将安装的软件包推荐或者建议的软件包。你通过F10 -> 选项 -> 处理依赖关系在菜单上更改这一默认设置。
aptitude 的其他特点如下:
[list][*]aptitude 能访问所有版本的软件包。
[*]aptitude 的动作记录在 /var/log/aptitude。
[*]aptitude能轻松的追踪陈旧的和本地建立的软件包,并在“过期的和在本地创建的软件包”上列出。
[*]aptitude 内建强大的包搜索和显示功能。熟悉mutt的用户很容易上手,因为这个显示方法的灵感来源于 mutt。参阅 file:///usr/share/doc/aptitude/README 中的“SEARCHING,LIMITING, AND EXPRESSIONS”
[*]aptitude 在全屏状态下有嵌入的 su功能。普通用户都可以执行,直到安装或删除软件的时候再取得管理员权限。
[/list]6.2.4 dselect从 stable 发行到现在为止(包含 Potato),dselect一直是主要的包维护工具。对于 Sarge,你可以考虑用aptitude 代替。
当你启动程序的时候,dselect会自动选择所有“Required”“Important”和“Standard”的包。
dselect的用户界面是有些奇怪,但是大部分人已经习惯了。它有四个主要命令: (指令都是大写的!):
按键 动作
Q 退出。确认当前的选择并退出。
(忽略依赖关系)
R 撤销! 我不是那个意思。
D 不管他!我不管你 dselect 怎么想的,照做就好了!
U 都照建议的来做
使用 D 和Q,你可以选择有冲突的选项。请小心使用这个命令。
在 /etc/dpkg/dselect.cfg中加上一行“expert”来减少干扰。
如果你的机器运行 dselect的速度很慢,你可以考虑在速度快一点的机器上运行dselect,确定你要安装的软件包之后,在慢的机器上通过apt-get 来安装它们。
6.2.5 使用 APT 来维护发行版本请编辑 /etc/apt/preferences并加入以下内容来维持系统为 testing 版本:
Package: *
Pin: release a=testing
Pin-Priority: 800

Package: *
Pin: release a=stable
Pin-Priority: 600
要注意的是追踪 testing版本可能带来延误安装安全性修正软件包的副作用。因为这些软件包都是上传到unstable 一段时间后再移植到 testing。
更多复杂的例子请参考apt_preferences(5),可以让您做更多的事情,例如安装unstable 的软件包的同时还能把系统维持在testing。
关于限制特定软件在特定版本上,而其他软件随系统升级的设置在examplessubdirectory 找到,即 preferences.testing 和preferences.unstable。
如果你混用不同的发行版本,例如 testing 和stable 或 unstable 和stable,你终究还是会安装上 testing 或unstale 版本的核心软件,例如libc6,这样作无法确保系统中没有臭虫。你需要特别小心。
另外一个例子,preferences.stable,会强制降级所有的软件到stable。
Debian不支持将某个软件包降级到先前的发行版本。然而在新的软件包出问题时,你会发现你不得不安装旧的可用的软件包。你可以在本地的/var/cache/apt/archives/ 或远端的 http://snapshot.debian.net/中找到先前的版本。请参考 使用dpkg 救助, 第 6.3.3 节
从某个发行版本降级到先前的发行版本也是不被支持的,而且这样做往往造成很多问题。不过你愿意冒险的话,作为最后的手段这样做也是值得的。
6.2.6 aptitude, apt-get 和 apt-cache 命令还是以上面使用 testing发行版的用户为例,可使用下列命令来管系统:
[list][*]aptitude update(或 apt-get update)
更新在仓库中存在的软件包列表。
[/list][list][*]aptitude upgrade (或 apt-get upgrade 或aptitude dist-upgrade 或 apt-get dist-upgrade)
这样就会跟随 testing 版本 -- 它们会跟踪testing版本的更新情况,对系统上所有软件包进行升级,并从testing 处重新分析依赖关系并安装相关的包。 [35]
[/list][list][*]apt-get dselect-upgrade
这个命令跟踪 testing 版本 -- 根据dselect 的选择对系统上的软件包进行升级。
[/list][list][*]aptitude install package/unstable
从 unstable 中安装 package,并由testing 版本提供安装依赖的包。
[/list][list][*]aptitude install -t unstable package
通过设置 unstable 的 Pin-Priority 为 990,可以从unstable 处安装 package 及其依赖的包。
[/list][list][*]apt-cache policy foo bar ...
检查 foo bar ... 软件包的状态。
[/list][list][*]aptitude show foo bar ... | less (或 apt-cacheshow foo bar ... | less)
查看 foo bar ... 软件包的有关信息。
[/list][list][*]aptitude install foo=2.2.4-1
安装 foo 软件包的特定版本 2.2.4-1。
[/list][list][*]aptitude install foo bar-
安装 foo 软件包并删除 bar 软件包。
[/list][list][*]aptitude remove bar
删除 bar 软件包,但保留其配置文件。
[/list][list][*]aptitude purge bar
删除 bar 软件包及其所有配置文件。
[/list]在上面的例子中使用 -u选项的作用是在实际升级之前将所有将要升级的软件包列出,并提示用户确认。这也是 aptitude 的默认操作方式。 下面的操作可将-u 设置为默认的操作方式:
$ cat >> /etc/apt/apt.conf << .
// Always show packages to be upgraded (-u)
APT::Get::Show-Upgraded "true";
.
使用 --no-act进行模拟操作,但实际上并不安装或者删除任何软件包。
6.3 Debian 生存命令掌握了这些知识,你就能够享受无尽的“升级”了 :-)
6.3.1 检测程序错误寻求帮助如你使用某个软件包出现问题,在寻求帮助或发送错误报告之前请确认查看过下列站点(lynx, links 和 w3m 都很好用):
$ lynx http://bugs.debian.org/
$ lynx http://bugs.debian.org/package-name # 如果你知道软件包的名字
$ lynx http://bugs.debian.org/bugnumber # 如果你知道错误序号
在 Google(www.google.com)中使用关键字“site:debian.org”搜索。
如有疑问,可阅读帮助文件。设置 CDPATH 如下:
export CDPATH=.:/usr/local:/usr/share/doc
然后输入
$ cd packagename
$ pager README.Debian # 如果存在的话
$ mc
更多技术支持资源列在 Debian技术支持, 第 15 章
6.3.2 APT 升级错误以及解决方法从 unstable/testing 进行升级时可能出现 升级, 第 5.3 节中提到的软件包关联问题。多数情况下,是因为升级的软件包所需的新增的关联包没有安装。可使用如下方法解决:
# aptitude dist-upgrade
如果这招无效,可以重复下面的方法至到问题解决:
# aptitude -f upgrade # 即使遇到错误也继续 upgrade
... 或
# aptitude -f dist-upgrade # 即使遇到错误也继续 dist-upgrade
一些的确存在问题的升级脚本会引起持续出错。最好的解决方法是检查该软件包的安装脚本/var/lib/dpkg/info/packagename.{post-,pre-}{install,removal}然后运行:
# dpkg --configure -a # 配置所有安装的软件包
如果脚本报告缺少配置文件,查看一下 /etc中相关的配置文件。如果配置文件有 .dpkg-new扩展名(或其它类似的扩展名),去掉(mv)它的扩展名。
从 unstable/testing进行升级时可能出现软件包关联问题。可用这个方法智取:
# aptitude -f install package # 重载坏关联
还可以用 equivs 包来解决此类问题。参阅file:///usr/share/doc/equivs/README.Debian 和 equivs 软件包, 第 6.5.2 节
6.3.3 使用 dpkg 救助如果你在使用 APT 的时候遇到死胡同了,那么可以从 Debian的镜像站点下载软件包并使用 dpkg来安装。如果你不能访问网络,可以在/var/cache/apt/archives/ 中找到被缓存的软件包。
# dpkg -i fetchmail_6.2.5-4_i386.deb
如果你用这种方法安装软件包,但是遇到了依赖问题安装失败了,并且你确实需要安装这个软件包。你可以用dpkg 的--ignore-depends,--force-depends和其他参数来安装软件包。dpkg(8)有更详细的介绍。
6.3.4 恢复软件包选择状态的数据如果 /var/lib/dpkg/status 因为某种原因坏掉了,Debian系统将会完全丢失软件包选择状态的数据。赶快到/var/lib/dpkg/status-old 或/var/backups/dpkg.status.* 下找找旧的/var/lib/dpkg/status 文件。
将 /var/backups/放在其它的分区是个好习惯,因为该目录包含了许多非常重要的系统数据。
如果旧的 /var/lib/dpkg/status 文件也坏了,仍可以从/usr/share/doc/ 下的目录进行恢复这些信息。
# ls /usr/share/doc | \
grep -v [A-Z] | \
grep -v '^texmf$' | \
grep -v '^debian$' | \
awk '{print $1 " install"}' | \
dpkg --set-selections
# dselect --expert # 重新安装系统,如果需要的话去除一些选项
6.3.5 /var 崩溃之后如何恢复系统/var 目录包含着定时更新的数据如mail,它们很容易遭破坏。将目录放到别的分区可降低风险,如果最坏的事情发生了,可以通过重建/var 目录来挽救 Debian 系统。
从相同或旧版本的最简 Debian 系统中取得 /var目录的内容框架,例如 var.tar.gz,然后它放入受损系统的root 目录,接着
# cd /
# mv var var-old # 如果里面还有其他有用资料的话
# tar xvzf var.tar.gz # 使用 Woody 框架文件
# aptitude # 或是用 dselect
上述步骤可使系统恢复工作。使用 恢复软件包选择状态的数据, 第 6.3.4节中描述的技术加速软件包选择数据的恢复。([FIXME]:该过程需要更多的实践来检验)
6.3.6 为无法启动的系统安装软件包使用 Debian 急救软盘 /CD 或从多启动 Linux系统其它分区启动。 参阅 启动系统, 第 8.1 节.将无法启动的系统挂载到 /target 并使用dpkg 的 chroot 安装模式。
# dpkg --root /target -i packagefile.deb
接下来就可以着手配置并解决问题。
如是只是由于 lilo损坏而造系统无法启动,可使用标准 Debian急救盘启动。假设你的 root 分区位于 /dev/hda12且想使用 runlevel 3,在启动提示符输入:
boot: rescue root=/dev/hda12 3
这样,你就可以使用软盘中内核启动系统,新系统的功能基本齐全。(可能丢失某些内核特性或模块)
6.3.7 如果 dpkg 命令出错怎么办如果 dpkg 损坏就不能安装任何 .deb文件。下面的操作可帮助你修复这种状况。(在第一行,你可将“links”替换成你喜欢的浏览器。)
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/
... 下载完好的 dpkg_version_arch.deb
$ su
password: *****
# ar x dpkg_version_arch.deb
# mv data.tar.gz /data.tar.gz
# cd /
# tar xzfv data.tar.gz
对 i386,亦可用 http://packages.debian.org/dpkg作为 URL。
6.4 Debian 必杀技有了这些命令的启迪,你将会从无休止的升级冲突的地狱中解放出来,达到Debian 天堂。 :-)
6.4.1 文件信息在已安装的软件包中许找特定文件所属的软件包:
$ dpkg {-S|--search} pattern
或者搜索 Debian archive:
$ wget http://ftp.us.debian.org/debian/dists/sarge/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,不论安装与否
6.4.2 软件包信息搜索并显示包文件的信息。编辑/etc/apt/sources.list,让 APT指向正确的包文件。如果想了解 testing/unstable中的相应软件包与当前系统安装的软件包有何差别,使用apt-cache policy -- 更好。
# 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 ... # 列出软件包安装的文件的名称
Woody 发布版没有为 apt-cache showsrc建档,但该命令可用:)
你也这可这样查看软件包信息(我用 mc 浏览):
/var/lib/apt/lists/*
/var/lib/dpkg/available
比较下面的文件可以确切了解最近的安装过程对系统造成了那些改变。
/var/lib/dpkg/status
/var/backups/dpkg.status*
6.4.3 使用 APT 无人值守安装使用 APT 无人执守安装,要在 /etc/apt/apt.conf中加上一行: /etc/apt/apt.conf:
Dpkg::Options {"--force-confold";}
另一种等价的方法是运行 apt-get -q -ypackagename。这种方法可能产生严重的负作用,所以使用起来要小心。参阅apt.conf(5)和 dpkg(1)。
安装完毕以后,可以用 重新配置已安装的软件包, 第 6.4.4 节中的方法配置特定的软件包。
6.4.4 重新配置已安装的软件包使用下列方法重新配置已安装的软件包。
# dpkg-reconfigure --priority=medium package [...]
# dpkg-reconfigure --all # 重新配置所有的软件包
# dpkg-reconfigure locales # 生成额外的 locales
# dpkg-reconfigure --p=low xserver-xfree86 # 重新配置 X 服务器
如果你想永久改变 debconf 对话框模式,可这么做。
某些程序用于生成特殊的配置脚本。 [36]
apt-setup - 创建 /etc/apt/sources.list
install-mbr - 安装主引导(Master Boot Record)管理器
tzconfig - 设定本地时间
gpmconfig - 设置 gpm 鼠标 daemon
eximconfig - 配置 Exim (MTA)
texconfig - 配置 teTeX
apacheconfig - 配置 Apache (httpd)
cvsconfig - 配置 CVS
sndconfig - 配置声音系统
...
update-alternatives - 设定默认启动命令,例如设定 vi 启动 vim
update-rc.d - System-V init 脚本管理工具
update-menus - Debian 菜单系统
...
6.4.5 删除和清除软件包删除软件包但保留其配置文件:
# aptitude remove package ...
# dpkg --remove package ...
删除软件包并清除配置文件:
# aptitude purge package ...
# dpkg --purge package ...
6.4.6 阻止旧软件包升级举个例子,要阻止 libc6 和 libc6-dev 通过dselect 或使用 aptitude install package命令升级,可执行:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
这种方法不影响 aptitude install package命令操作。要阻止 aptitude upgrade package 或aptitude dist-upgrade命令对软件包执行的强制自动降级行为,可在/etc/apt/preferences 中加上:
Package: libc6
Pin: release a=stable
Pin-Priority: 2000
这里“Package:”后不能使用通配符如“libc6*”,如果要保持所有与glibc源码包相关的二进制包的版本同步,可以明确的列出它们。
该命令可以显示处于“阻止”状态的软件包:
dpkg --get-selections "*"|grep -e "hold$"
6.4.7 stable/testing/unstable 混合系统apt-show-versions可以列出发行版中可用软件包的版本。
$ apt-show-versions | fgrep /testing | wc
... 你有多少 testing 软件包
$ apt-show-versions -u
... 列出可升级的软件包
$ aptitude install `apt-show-versions -u -b | fgrep /unstable`
... 将所有 unstable 软件包升级到最新版本
6.4.8 删除缓存包文件使用 APT 安装软件包会在 /var/cache/apt/archives目录留下缓存文件,要清除这些文件可使用:
# aptitude autoclean # 仅删除无用的包
# aptitude clean # 删除所有的包
6.4.9 记录/拷贝系统配置对软件包选择情况进行本地备份:
# debconf-get-selections > debconfsel.txt
# dpkg --get-selections "*" >myselections # 或使用 \*
# debconf-get-selections > debconfsel.txt
"*" 使 myselections包含那些被指定“完全删除(purge)”的文件。
你可将这个文件发送到另一台电脑并在那儿按文件中的选择进行软件包安装。
# dselect update
# debconf-set-selections < debconfsel.txt
# dpkg --set-selections # apt-get -u dselect-upgrade # 或者 dselect install
6.4.10 向 stable 系统引入软件包对 stable系统进行部分升级,在软件运行环境中重新编译源码的确是个诱人的想法,这样可以避免由于关联关系不得不对大量软件包升级。首先,将下列镜像源加入/etc/apt/sources.list:
deb-src http://http.us.debian.org/debian testing \
main contrib non-free
deb-src http://http.us.debian.org/debian unstable \
main contrib non-free
由于屏幕输出的限制,上述每条 deb-src命令均分成了 2 行,实际上在 sources.list中它们均为单行。
然后下载源码并在本地生成软件包:
$ apt-get update # 更新软件包搜索列表
$ apt-get source package
$ dpkg-source -x package.dsc
$ cd package-version
... 查找需要的软件包(编译所需的关联包列在.dsc文件中)并安装它们,
你还需要“fakerroot”软件包。

$ dpkg-buildpackage -rfakeroot

……或者(没有签名)
$ dpkg-buildpackage -rfakeroot -us -uc # 如果需要,再使用“debsign”

……然后安装
$ su -c "dpkg -i packagefile.deb"
通常,需要安装一些带 “-dev”后缀的软件包以满足关联关系。debsign 在devscripts 软件包中。auto-apt可以轻松解决这些关联问题。请使用fakeroot,如是没有必要,就别使用 root 帐号。
在 Woody 中,这些关联问题已被简化。例如,编译pine 源码包:
# apt-get build-dep pine
# apt-get source -b pine
6.4.11 本地软件包文件为了创建与 APT 和 dselect系统兼容的本地软件包文件,需要创建Packages,包中文件要放在特定的目录树中。
Debian 官方包文件喜欢存放于本地 deb仓库,下面就来创建仓库:
# aptitude install dpkg-dev
# cd /usr/local
# install -d pool # 软件包存放的物理地址
# install -d dists/unstable/main/binary-i386
# ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
# 编辑 override # 调整 priority and section
# dpkg-scanpackages pool override /usr/local/ \
> dists/unstable/main/binary-i386/Packages
# cat > dists/unstable/main/Release << EOF
Archive: unstable
Version: 3.0
Component: main
Origin: Local
Label: Local
Architecture: i386
EOF
# echo "deb file:/usr/local unstable main" \
>> /etc/apt/sources.list
还有一种快速但随意的方法来创建本地 deb 仓库:
# aptitude install dpkg-dev
# mkdir /usr/local/debian
# mv /some/where/package.deb /usr/local/debian
# dpkg-scanpackages /usr/local/debian /dev/null | \
gzip - > /usr/local/debian/Packages.gz
# echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list
在 /etc/apt/sources.list中设置相应镜像源入口地址,就可以通过 HTTP 或 FTP方式远程访问存放在其中的包文件了。
6.4.12 转换或安装外来的二进制软件包alien 可将其它格式的二进制软件包如 Redhat 的rpm、Stampede 的 slp 、Slackware 的tgz 和 Solaris 的 pkg 等转化成 Debian 的deb格式软件包,如果你想在自己的系统上使用别的 Linux发行版中的软件包,可使用 alien将它转化成系统首选的软件包格式后安装。alien还支持 LSB 的软件包。
6.4.13 自动安装命令auto-apt 是一种按需安装的软件包安装工具。
$ sudo auto-apt update
... 升级数据库
$ auto-apt -x -y run
进入 auto-apt 模式:/bin/bash
退出这个命令继而退出 auto-apt 模式。
$ less /usr/share/doc/med-bio/copyright # 访问不存在的文件
... 安装提供了这个文件的软件包。
... 同样安装依赖的包
6.4.14 校验已安装的软件包debsums 可以校验已安装软件包的 MD5编码,对某些软件包没有可用的 MD5编码,系统管理员可使用一个临时的解决办法:
# cat >>/etc/apt/apt.conf.d/90debsums
DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";};
^D
来自 Joerg Wendland [email=joergland@debian.org]joergland@debian.org[/email] (untested).
6.4.15 优化 sources.list简而言之,我尝试过用各种优化方法来创建sources.list,但任何一种方法对我这个住在美国的人来说都没有明显的改善。最后我还是用apt-setup 手工选择近一点的站点。
apt-spy 会根据站点回应时间和带宽自动创建sources.list。netselect-apt会创建一个更完整的 sources.list文件,但它使用更落后的方法来选择镜像站点(比较 ping时间)。
# aptitude install apt-spy
# cd /etc/apt ; mv sources.list sources.list.org
# apt-spy -d testing -l sources.apt
6.5 其他 Debian 的特性6.5.1 dpkg-divert 命令使用文件转移(diversions)的方法可以强令dpkg 将文件安装到 转移目录而非默认目录。对于某个引起冲突的文件,可以在 Debian软件包脚本中使用 Diversions将它安装到别的目录。系统管理员还可以使用 diversion来重载软件包配置文件,或者用来保留某些旧配置文件(这些文件没有在conffiles中登记)当安装新版软件时这些文件会被覆盖。(参阅 保存本地配置, 第 2.2.4节)。
# dpkg-divert [--add] filename # 添加 “转移”
# dpkg-divert --remove filename # 删除 “转移”
记住,不到万不得已不要使用 dpkg-divert。
6.5.2 equivs 软件包如果你从源码编译程序,最好将它做成本地 Debian化软件包(*.deb)。最新的方法是使用equivs。
Package: equivs
Priority: extra
Section: admin
Description: Circumventing Debian package dependencies
This is a dummy package which can be used to create Debian
packages, which only contain dependency information.
6.5.3 Alternative 命令如果想用 vi 来启动 vim,请用update-alternatives:
# update-alternatives --display vi
...
# update-alternatives --config vi
Selection Command
-----------------------------------------------
1 /usr/bin/elvis-tiny
2 /usr/bin/vim
*+ 3 /usr/bin/nvi

Enter to keep the default[*], or type selection number: 2
Debian alternatives系统中的这些项目,都是以符号连接的形式存放在/etc/alternatives 下的。
想设置你喜爱的 X window 环境,执行 update-alternatives来指定 /usr/bin/x-session-manager 和/usr/bin/x-window-manager。详情参阅 自定义 X 会话, 第 9.4.5.1 节
/bin/sh 是指向 /bin/bash 或/bin/dash 的链接。想兼容旧的 Bash 脚本,使用/bin/bash 比较保险,但更好还是使用/bin/dash,因为它更符合 POSIX 标准。升级到 2.4 版Linux 内核,系统一般将它设置为 /bin/dash。
6.5.4 运行级别 Runlevel安装好之后,大部分 Debian 软件包的服务被设定为在 runlevel 2到 5 时运行。所以,在没有定制过的 Debian 系统中,runleve2、3、4、5、6 是没有区别的。Debian保留这些给本地管理员使用。 自定义运行级别, 第2.4.3 节 说明如何定制 runlevels。 这样的 runlevels系统和其他流行的 GNU/Linux 发行版本完全不同。你可能要做的改变之一就是取消 runlevel 2 上的 xdm和 gdm,使得在完成启动之后 X显示管理去不会自动启动;然后你可以通过切换到 runlevel 3来启动 X 显示管理器。
参阅 运行级别, 第 2.4.2节 来获得更多关于 runlevels 的信息。
6.5.5 停止 daemon 服务Debian发行版非常注重系统安全,并期望系统管理员能担此重任。它将系统的易用性放在了第二位,许多daemon服务都定位在最高安全级别,因而,默认安装状态下系统只启动最少的(甚至没有)可用的服务。
如果拿不定主意(有关 Exim、DHCP...),可执行 ps aux或检查 /etc/init.d/* 和 /etc/inetd.conf下的内容,还可以使用 用 PAM来控制登录, 第 9.2.1 节 中提到的方法检查/etc/hosts.deny。pidof 命令也很有用(参阅pidof(8))
在最近的 Debian 系统中,默认状态下 X11 不允许TCP/IP(远程)连接。参阅 在 TCP/IP中使用 X, 第 9.4.6 节,使用 SSH 进行 X转发也是禁用的,参阅 联接远程的 X 服务器 -ssh, 第 9.4.8 节
[ 上一页 ][ 目录 ][ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ][ 8 ][ 9 ][ 10 ][ 11 ][ 12 ][ 13 ][ 14 ][ 15 ][ A ][ 下一页 ]
Debian Reference
This translation is based on old version of Debian Reference (English, version 1.x), well before Sat, 26 Jan 2008.

Osamu Aoki [email=osamu#at#debian.org]osamu#at#debian.org[/email]
译者:
Hao "Lyoo" Liu [email=iamlyoo#at#163.net]iamlyoo#at#163.net[/email]
Ming Hua [email=minghua#at#rice.edu]minghua#at#rice.edu[/email]
肖盛文 [email=atzlinux#at#163.com]atzlinux#at#163.com[/email]
Haifeng Chen [email=optical.dlz#at#gmail.com]optical.dlz#at#gmail.com[/email]
解彦博 [email=xieyanbo#at#gmail.com]xieyanbo#at#gmail.com[/email]
easthero [email=easthero#at#gmail.com]easthero#at#gmail.com[/email]
作者, 第 A.1 节
文章评论

共有 13 条评论

  1. paidu 于 2011-04-23 09:45:43发表:

    小白支持下,现还看不懂呢{:2_91:}

  2. lihongwu1987 于 2011-02-04 23:37:44发表:

    好文章,收藏了,一直对deb系比较晕呵呵。

  3. wangtan471x 于 2011-01-15 09:22:56发表:

    我用apt-get install把系统都搞起不来了

  4. adonis_acumen 于 2011-01-05 15:31:00发表:

    好多啊!耐心的看完了 。。。
    谢谢楼主

  5. psep2006 于 2010-05-07 19:43:38发表:

    好长啊

  6. chiyb 于 2010-04-26 14:08:52发表:

    收藏了2

  7. chiyb 于 2010-04-26 14:08:43发表:

    收藏了

  8. fangzhouzbs 于 2009-12-12 08:22:46发表:

    很多,收藏一下。以后能用的着

  9. maminlong 于 2009-10-06 09:35:18发表:

    收藏了……先,慢慢看。

  10. shenhao0129 于 2009-09-27 20:54:10发表:

    直接给出个地址就可以了吧!贴的太多了

  11. 绿色圣光 于 2009-09-25 17:15:19发表:

    好长啊……收藏了……

  12. acrofox 于 2009-09-25 12:26:25发表:

    这么多,即便不看,也要支持一下:)

  13. ermaima 于 2009-09-22 15:06:14发表:

    这么多啊!