文章导航:
一、写给新手 deb包管理apt及dpkg命令的使用(一)
二、写给新手 deb包管理apt及dpkg命令的使用(二)应用实例部分
因为是写给新手的,所以我尽力会一步一步地深入,但是好多内容是字典式的,为的是文章有通用性,让最多的人受益。
告别声明:本文适用于基于debian式deb包管理式的操作系统。目前使用这种软件管理方式的操作系统基本上都是从最初的debian系统分化来的,大家可以查看 Linux发行版本大全二:族谱(关系图) 大致可以知道哪些系统在用了。
[返回目录] 一:apt和dpkg是deb包管理中最基础的命令
以Ubuntu为例,在Ubuntu中存在以下几种包管理工具:aptitude, synaptic(新立得),Gdebi软件包安装程序,dselect,当然还包括apt和dpkg,其实所有的包管理最终都会调用apt和dpkg这些命令的。


常见工具举例


命令行

dpkg-deb、dpkg、apt

在命令行模式下完成软件包管理任务。为完成软件包的获取、查询、软件包依赖性检查、安装、卸载等任务,需要使用各自不同的命令

文本窗口界面

dselect、aptitude、tasksel

在文本窗口模式中,使用窗口和菜单可以完成软件包管理任务

图形界面

synaptic

在X-Window图形桌面环境中运行,具有更好的交互性、可读性、易用性等特点

[返回目录] 二:使用前的准备
虽然apt、dpkg都是一些操作的核心管理软件,默认安装的,但是我们使用apt、dpkg前应用有软件源,即它们的操作对象,巧妇难为无米之炊。实质上在发行版中都会默认加上几个官方的源,它的速度一般不会很快。

其中apt的操作对象一般是互联网上的公共站点,当然也可以是你的光盘软件源。这些源的数据保存在 /etc/apt/sources.list 文件中,我们可以通过vi、gedit或其它文本编辑器来操作(root权限)。
在sources.list他们的格式一般为:
deb http://in.archive.ubuntu.com/ubuntu breezy main restrcted
eb http://wine.budgetdedicated.com/apt feisty main

您可以加上自己的地址。这些地址列表您可以从,apt-get.org (我们同样可以在这个网站搜索想要的deb软件包)或者是 ubuntu的官网Wiki http://wiki.ubuntu.org.cn/如何使用我们推荐的源 查看,注意修改源前请备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

dpkg的操作对象则是单独的deb文件,它需要我们事先有下载好的deb软件包,可以对单独源操作的还有一个图形化操作的 Gdebi软件包安装程序 ,虽然deb软件在网上也有下载,我们还是建议您通过正常途径获取(官方源提供的网址或软件的主页)。
但是dpkg有一个天大的缺点就是不负责解决依赖问题。apt工具可以正常地解决依赖是因为他可以自动地检测依赖,并从源中下载。
链接到什么是依赖,简单说就是需要。想要正常使用软件B,需要另外安装软件A,我们就说,A是B的依赖。

[返回目录] 三、apt软件同步
(一)设置好了源的地址后我们就可以把本机上的软件库同网上的库同步一下,注意是下载软件的列表和描述,这时我们使用命令:
# sudo apt-get update
如果我们确定要升级了,它会提示你安装这些软件
# sudo apt-get upgrade
下面提供的命令具有危险性,
# sudo apt-get dist-upgrade
假如现在我用的是Ubuntu8.04版本,然后我添加上8.10的源,执行上述命令,我的系统就会更新到8.10版本。
(二)当然我们可以直接安装某些软件通过源,例如我们要安装 wine
# sudo apt-get install wine
这里说们说明一下,软件的名称支持通配符,区分大小写
例如我们新安装的ubuntu系统,我们可以通过下列命令把所有和中文相关的包统统装上去,即彻底解决不能输入法不支持中文的情况,又把一些常用的firefox啦,openoffice啦给汉化了。
# sudo apt-get install language.*zh
(三)注意下列命令是在操作本机上已经同步发的库
# apt-cache stats
例如我这里显示本机上软件包的数量和所占用的空间
open-baike@open-baike-desktop:~$ apt-cache stats
软件包总数(按名称计):32707 (1308k)
普通软件包:25000
完全虚拟软件包:579
单虚拟软件包:1808
混合虚拟软件包:239
缺漏的:5081
按版本共计:29988 (1559k)
不同的描述总计: 29988 (720k)
按依赖关系共计:210602 (5897k)
按版本/文件关系共计:119075 (1905k)
按版本/文件关系共计: 29988 (480k)
提供映射共计:5856 (117k)
Glob 字串共计:138 (1849)
依赖关系版本名所占空间共计:1119k
Slack 空间共计:88.6k
总占用空间:10.9M

这时我们通过下面的命令搜索本机上有没有某个软件包,或者这个软件包的详细描述。例如
# apt-cache search geidt
会显示
gigedit - instrument editor for Gigasampler files
leafpad - GTK+ based simple text editor
moaggedit - map editor for the Moagg game
sisu - documents - structuring, publishing in multiple formats and search
gedit - official text editor of the GNOME desktop environment
gedit-common - official text editor of the GNOME desktop environment (support files)
gedit-dev - official text editor of the GNOME desktop environment (development files)
seahorse - A Gnome front end for GnuPG

实质上用apt-get安装软件时,它会从sources.list中提供的网址下载软件包,缓存到本机的 /var/cahe/apt/archives/下,时间一长,里面就会保存大量的文件,白白占用了我们的空间,现在我们可以用下面的命令清理这个目录
# apt-get clean
不过我更建议您使用下面的智能清理功能
# apt-get autoclean
它只清除那些不用的或不完整的软件包,这样在过几天了心血来潮的时候还是可以重装那些已经被我们删除的软件,因为之前我们下载好了已经
(四)当我们需要移除一个软件时,例如wine,我们可以同时操作多个软件也,中间包含空格的要用单引号引括起来
# sudo apt-get remove wine scim
(五)
附:中文说明

语法: apt-get [选项] 命令
apt-get [选项] install|remove 包甲 [包乙 ...]
apt-get [选项] source 包甲 [包乙 ...]

apt-get 提供了一个用于下载和安装软件包的简易命令行界面。
最常用命令是 update 和 install。

命令:
update - 下载更新软件包列表信息
upgrade - 进行一次升级
install - 安装新的软件包(注:包名是 libc6 而非 libc6.deb)
remove - 卸载软件包
source - 下载源码包文件
build-dep - 为源码包配置所需的构建依赖关系
dist-upgrade - 发布版升级,见 apt-get(8)
dselect-upgrade - 根据 dselect的选择来进行升级
clean - 删除所有已下载的包文件
autoclean - 删除老版本的已下载的包文件
check - 核对以确认系统的依赖关系的完整性
选项:
-h 本帮助文档。
-q 让输出可作为日志 - 不显示进度
-qq 除了错误外,什么都不输出
-d 仅仅下载 - 【不】安装或解开包文件
-s 不作实际操作。只是依次模拟执行命令
-y 对所有询问都作肯定的回答,同时不作任何提示
-f 当没有通过完整性测试时,程序仍试图继续执行
-m 当有包文件无法找到时,程序仍试图继续执行
-u 显示已升级的软件包列表
-b 在下载完源码包后,编译生成相应的软件包
-V 显示详尽的版本号
-c=? 读取指定配置文件
-o=? 设置任意指定的配置选项,例如 -o dir::cache=/tmp

[返回目录] 四、dpkg操作单独的软件包(已续(20081225))
dpkg不会从网上下载软件,也不能解决软件的依赖问题,但是由于它能细致地操作某个已经下载好的软件包,安装、编译、卸载和查询样样是好手。……

附:中文说明
命令格式:dpkg [ -l | -L | -s | -S | -i | -I | -c | -r | -P ] Debfilename
用法:dpkg [<选项> ...] <命令>

命令:
-i|–install <.deb 文件名> … | -R|–recursive <目录> …
–unpack <.deb 文件名> … | -R|–recursive <目录> …
-A|–record-avail <.deb 文件名> … | -R|–recursive <目录> …
–configure <软件包名> … | -a|–pending
-r|–remove <软件包名> … | -a|–pending
-P|–purge <软件包名> … | -a|–pending
–get-selections [<表达式> ...] 把已选中的软件包列表打印到标准输出。
–set-selections 从标准输入里读出要选择的软件。
–clear-selections 取消选中所有不必要的软件包。
–update-avail <Packages 文件> 替换现有可安装的软件包信息。
–merge-avail <Package 文件> 把文件中的信息合并到系统中。
–clear-avail 清除现有的软件包信息。

–forget-old-unavail 忘却已被卸载的不可安装的软件包。
-s|–status <软件包名> … 显示软件包详尽的状态信息。
-p|–print-avail <软件包名> … 显示可供安装的版本详情。
-L|–listfiles <软件包名> … 列出所有“属于”该软件包(或多个)的文件。
-l|–list [<表达式> … 简明地列出软件包的状态。
-S|–search <表达式> … 搜寻拥有该文件(或多个文件)的包。
-C|–audit 检查搜寻残损的软件包。
–print-architecture 显示 dpkg 体系架构。
–compare-vesions <甲> <关系> <乙> 比较版本号 - 见下。
–force-help 显示本强制选项的帮助信息。
-Dh|–debug=help 显示有关出错调试的帮助信息。

-h|–help 显示本帮助信息。
–version 显示版本信息。
–license | –licence 显示版权和许可证条文。

对归档文件使用 dpkg -b|–build|-c|–contents|-e|–control|-I|–info|-f|–field|
-x|–extract|-X|–vextract|–fsys-tarfile (输入 dpkg-deb –help)。

供内部使用:dpkg –assert-support-predepends | –predep-package |
–assert-working-epoch | –assert-long-filenames | –assert-multi-conrep。

选项:
–admindir=<目录> 使用 <目录> 而非 /var/lib/dpkg。
–root=<目录> 安装到另一个根文件系统。
–instdir=<目录> 改变安装的根目录的同时保持管理(admin)目录不变。
-O|–selected-only 忽略没有被选中安装或升级的软件包。
-E|–skip-same-version 忽略版本与已安装软件版本相同的软件包。
-G|–refuse-downgrade 忽略版本早于已安装软件版本的的软件包。
-B|–auto-deconfigure 就算会影响其他软件包,也要安装。
–no-debsig 不去试图验证软件包的签名。
–no-act|–dry-run|–simulate
仅仅报告我们要执行的操作 - 但是不执行。
-D|–debug=<八进制数字> 开启调试功能(参见 -Dhelp 或者 –debug=help)。
–status-fd <n> 发送状态改变的更新信号到文件描述符<n>。
–log=<文件名> 把状态的更动和操作信息记录到 <文件名>。
–ignore-depends=<软件包名>,… 忽略关于 <软件包名> 的所有依赖关系。
–force-… 忽视遇到的问题 - 参见 –force-help。
–no-force-…|–refuse-… 当遇到问题时中止运行。
可供–compare-version 使用的比较运算符有:
lt le eq ne ge gt (如果版本号为空,那么就认为它先于任意版本号);
lt-nl le-nl ge-nl gt-nl (如果版本号为空,那么就认为它后于任意版本号);
< << <= = >= >> > (仅仅是为了与主控文件的语法兼容)。

“dselect”和“aptitude”提供了更为易用的的软件包管理工具。

原创文章请注明:http://seo-dic.com.cn/archives/1093[希奥开源]