海是我向往的地方,吸纳和咆哮是他的魅力!!!

linux相关命令学习(转)

上一篇 / 下一篇  2008-11-04 13:57:41

Chapter 4. 软件包管理工具

由于UNIX的程序设计思想是不重复发明轮子,所以UNIX程序大多都会依赖现有的程序和工具来开发。Linux也继承了UNIX这种优良的传统。这带给我们的好处是开发效率成倍提高,结构灵活,扩展性好。但软件间复杂的依赖关系和冲突关系给软件的安装造成很大的障碍。所以成功的Linux发行版都开发有方便的软件包管理工具,让电脑自动帮我们解决软件包的依赖和冲突。软件包管理工具是区分不同发行版的重要特征之一。如:Debian使用dpkgRedHat使用rpmGentoo使用emergeYellow Dog使用yumYellow Dog Updater),Arch Linux使用pacman。本章主要介绍Debian的软件包管理工具dpkg和它的一些前端工具,如apt-getapt-file等。

4.1. dpkg

dpkgDebian系统的软件包管理工具,它最初于1993年发布,是Debian系统最优秀的特性之一。它通过以下几种关系来标识软件包间的依赖性。分别是:

·  depends(依赖),运行A必须先安装B,且有版本的要求,不同版本也会造成依赖问题。

·  recommends(推荐),系统推荐的软件包可增强你所安装软件的关健功能。你可安装也可不安装。

·  suggests(建议),系统建议的软件包可增强你所安装软件的某些功能,你可安装也可不安装。

·  conflicts(冲突),安装了AB不能正常运行。不要安装有冲突的软件包。

·  replaces(替换),软件包A中的软件会被软件包B中的软件移除或覆盖,不要安装该类软件包。

·  provides(提供),A软件包已提供B软件包的所有功能。你可安装也可不安装该类软件包。

dpkg软件包是一些以.deb结尾的文件,软件包信息集中存放在/var/lib/dpkg/目录下,其中/var/lib/dpkg/info存放有软件包的管理信息。

debian:/var/lib/dpkg/info# ls zhcon.* -l
-rw-r--r-- 1 root root32 2006-09-26 20:56 zhcon.conffiles
-rwxr-xr-x 1 root root104 2006-09-26 20:56 zhcon.config
-rw-r--r-- 1 root root 1755 2006-09-28 08:18 zhcon.list
-rw-r--r-- 1 root root 3147 2006-09-26 20:56 zhcon.md5sums
-rwxr-xr-x 1 root root233 2006-09-26 20:56 zhcon.postinst
-rwxr-xr-x 1 root root206 2006-09-26 20:56 zhcon.postrm
-rw-r--r-- 1 root root906 2006-09-26 20:56 zhcon.templates
...

不同后缀的意义如下:

·  .conffiles,文本文件,记录软件包的配置文件列表。

·  .list,文本文件,存放软件包的文件列表和安装位置。

·  .md5sums,文本文件,记录软件包的md5信息,这些信息用来进行软件包验证。

·  .prerm,脚本文件,负责停止与软件包关联的daemon服务,在删除关联软件包之前执行。

·  .postrm,脚本文件,负责修改软件包链接或文件关联,或删除由它创建的临时文件。

·  .config,脚本文件,是软件包的安装配置脚本。

·  .preinst,脚本文件,在解包之前执行,做一些软件包安装前的准备工作

·  .postinst,脚本文件,在解包之后执行,做一些软件包的安装配置工作。

·  .templates,文本文件,记录一些软件包的安装提示信息。

上面这些文件不是每个都必须的,根据不同的安装要求由软件包维护者自由设置。下面介绍dpkg工具的具体用法。使用dpkg -h命令可以列出该工具的所有语法:

debian:/var/lib/dpkg/info# dpkg -h
用法: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(如果版本号为空,那么就认为它后于任意版本号)
< << <= = >= >> >(仅仅是为了与主控文件的语法兼容)

介绍几个常用的命令选项:

·  查询软件包

·debian:~# dpkg -l zhcon
·期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h)
·|当前状态=(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)
·|/错误?=()/保持(?)/须重装(R)/两者兼有(#) (状态,错误:大写=故障)
·||/名称版本简介
·+++-=====================-=====================-==========================================================
·iizhcon0.2.6-3A Fast Console CJK System Using FrameBuffer

如果我们不知道软件包的具体名称,我们也可使用通配符来查询。

debian:~# dpkg -l zh*
期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h)
|当前状态=(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)
|/错误?=()/保持(?)/须重装(R)/两者兼有(#) (状态,错误:大写=故障)
||/名称版本简介
+++-=====================-=====================-==========================================================
unzh-autoconvert<>(无相关介绍)
unzh-trans<>(无相关介绍)
iizhcon0.2.6-3A Fast Console CJK System Using FrameBuffer

·  查看软件包的详细信息

·debian:~# dpkg -s zhcon
·Package: zhcon
·Status: install ok installed
·Priority: optional
·Section: utils
·Installed-Size: 7608
·Maintainer: Yu Guanghui <ygh@debian.org>
·Architecture: i386
·Version: 1:0.2.6-3
·Depends: libc6 (>= 2.3.6-6), libgcc1 (>= 1:4.1.1-12), libggi2 (>= 1:2.2.1), libncurses5 (>= 5.4-5), libpth2 (>= 2.0.7), libstdc++6 (>= 4.1.1-12), unicon-imc2, debconf
·Conflicts: unicon-im (<< 3.0.4-9)
·Conffiles:
·/etc/zhcon.conf 91253d7043a0cb35a395b4d73d906762
·/etc/zhcon.conf 91253d7043a0cb35a395b4d73d906762
·Descrīption: A Fast Console CJK System Using FrameBuffer
·Zhcon is a fast Linux Console Chinese System which supports framebuffer
·device.It can display Chinese,Japanese or Korean double byte characters
·on console.
·Features include:
·Full support for Linux FrameBuffer device(from 640x480x8bpp to
·1024x768x32bpp)
·Multiple language support (GB2312,GBK,BIG5,JIS,KSCM)
·Auto-detect and convert between GB2312 and BIG5 encoding(like hztty)
·Hot key to change language encoding on the fly
·Can use input method from MS Windows 98 Chinese version or UCDOS for
·MS-DOS

·  查看已安装软件包所安装的文件列表。

·debian:~# dpkg -L zhcon
·/.
·/usr
·/usr/bin
·/usr/bin/zhcon
·/usr/sbin
·/usr/share
·

TAG:

 

评分:0

我来说两句

Open Toolbar