Debian APT.docx
- 文档编号:14470609
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:18
- 大小:24.84KB
Debian APT.docx
《Debian APT.docx》由会员分享,可在线阅读,更多相关《Debian APT.docx(18页珍藏版)》请在冰点文库上搜索。
DebianAPT
以Debian的方式系列(INTHEDEBIANWAY):
Debian维护工具之APT
etonyC.F.ANetony@
v0.0.1,2006-3-30
本文档是针对DebianGNU/Linux的APT工具做一般性介绍,希望Linux用户对于Debian有个较为深刻的了解.
1.声明
∙版本信息:
本文档的最新版本将张贴于:
LinuxSir.Org论坛Debian发行版讨论区;
也可以从http:
//debian.linuxsir.org/获取.
∙反馈:
所有评论,错误报告,其他信息以及批评,请邮寄到etony@;
或在LinuxSir.Org论坛Debian发行版讨论区张贴.
∙版权信息:
本文档的版权(c)2006-2007归etonyC.F.AN所有.
转载请注明源自http:
//debian.linuxsir.org/.
2.基本概念
dpkg功能十分的强大,是它保证了系统的稳定性.但是随着GNU/Linux的日益普及,Debian操作系统的广泛应用,dpkg在操作上日益显示出它的不足之处.APT(高级软件包工具AdvancedPackageTool)很好的解决了这一难题,它功过抽取软件包中的相关信息,给出相关操作的优化方案,确定解决请求所需软件包,从资源库下载,根据需求在本地系统安装和删除软件包.
dpkg采取的方式较为保守,当发现进一步操作可能会将问题引入系统时(比如使系统中出现了不能满足依赖关系的软件),将拒绝执行这一操作(默认方式),APT则会根据出现的问题,智能的给出解决方案,并继续进行操作.比如,安装操作出现依赖关系时,dpkg会拒绝操作,APT则不同,将会自动安装这些依赖包以完成安装请求.
APT提供另一个简单的命令行方式,与dpkg不同,其本身不会处理.deb文件,而是智能从资源库下载,然后调用dpkg仅此处理.APT是dpkg的一个智能前端.
3.基本配置
apt通过名称和版本来在确定一个软件包,这些信息通常是通过资源库中提供的Packages.gz(如果是源代码则是Source.gz)来抽取来的(通过apt-getupdate获取).通常如果出现重复的软件包,则第一个有效.这些资源库在etc/apt/sources.list/中定义.
3.1自动配置
在基本系统中提供了一个用于自动配置资源列表的工具:
apt-setup.由base-config(现在仅在sarge中提供)软件包中,可以通过
#base-config
调用,或者直接运行
#apt-setup
进行配置.
3.2手动配置
资源库在/etc/apt/sources.list中用就象如下行定义:
debftp:
//some-server/debiansargemaincontrib
deb-srcftp:
//some-server/debiansargemaincontrib
与网站有如下对应关系:
ftp:
//some-server/debian/dists/sarge/main/binary-i386/...
ftp:
//some-server/debian/dists/sarge/contrib/binary-i386/...
-----------------------------||
\___/||
add:
\/||
-----------------------------||
debftp:
//some-server/debiansargemaincontrib
当然上边的网站是假设的,不可用的.应当选择您连接速度最快的镜像地址替换.Debian官方镜像列表可以从http:
//www.debian.org/mirror/list处获取,也可从/var/lib/apt-spy/mirrors.txt(apt-spy提供)得到.至于私有资源则需要通过别的途径获取.
在/etc/apt/sources.list中,每行为一条记录,定义一个资源库.其具体语法在sources.list(5)联机手册中有详细介绍.每条记录至少包括三个字段,共同组成资源定位.这些字段是:
软件包类型
deb指二进制软件包.要访问软件包源代码,则必需用deb-src代替.
资源URI
统一资源标识符(URI)用于指定资源库,可以使用下边任意一种方式访问:
cdrom,file,copy,http,ftp,ssh
发行版(distribution)
在标准的镜像中,这一字段使用规范名称(如stable)或代号(如sarge)来关联Debian的发行版.
构成
用于关联一个发行版的组成部分,对应官方镜像,相当于软件库(如每个条目的其余部分用于关联一个发行版提供的组成部分.对于官方镜像,这相当于软件库(如main,contrib),对于非官方资源库,组成部分的关联方式可以由管理员自己定义.APT会为每个构成创建单独的URI.因此,正常的发行版至少需要一个组成部分.
在修改sources.list后或安装软件前,需要对APT进行更新,就是运行apt-getuodpate获取各种Packages文件,它的位置是通过/etc/apt/sources.list中的记录来指定的.每个提到构成都有一个对应的Packages文件.
3.3优化资源
apt-spy方式
Debian在互联网上有庞大的镜像群,有超过100个提供了全部Debian归档库的官方镜像.另外,还有很多大学和机构提供非官方镜像,因此使用附近的还是不错的.我们将哪些镜像加入我们的sources.list文件呢?
当然是速度最快的!
Debian为我们提供了一个用户测试镜像速度的工具apt-spy(由apt-spy提供).这样有利于有效的利用带宽,节省下载时间.
可以从http:
//www.debian.org/mirror/list(由于某种原因,您可能无法访问)处获取获取完整的镜像列表.也可以从tt/var/lib/apt-spy/mirrors.txt/(apt-spy提供)找到一个副本.
apt-spy通过对列表进行测试,根据带宽和回应速度,找出其中最快的一个,并将结果自动保存到/ect/apt/sources.list中.
#apt-getinstallapt-spy
#mvsources.listsources.list.bak//backup
#manapt-spy//获取详细的使用方法
#apt-spyupdate//更新您的镜像列表文件/var/lib/apt-spy/mirrors.txt
可将测试限制在一个国家或区域内,提供限制测试服务器个数的选项,等等.另外,区域也可以在/etc/apt-spy.conf中定义.可以通过下边的命令找出亚洲区速度最快的镜像,并生成针对testing的记录:
#apt-spy-dtesting-aAsia
上边的测试大概每个服务器需要用一分钟的时间,这个也可以使用-t选项控制.有关这一选项的详细信息请阅读apt-spy(8)联机手册.
netselect-apt方式
netselect-apt会创建一个更完整的sources.list文件,但它使用更落后的方法来选择镜像站点:
#apt-getinstallnetselect-apt
#mvsources.listsources.list.bak//backup
#mannetselect-apt//获取详细的使用方法
#netselect-apt-stesting
//下载http:
//www.debian.org/mirror/list-full文件,并根据其内容测试网络,生成sources.list
也可将下载http:
//www.debian.org/mirror/list-full手动下载到本地,并同过参数-i指定.同样可以通过-o参数指定输出文件而不是默认的sources.list
4.APT的配置
APT的很多方面都是可以定制的.事实上,在/etc/apt/apt.conf文件中,您可以修改大多数命令行选项的默认值.配置参数使用名称-值对,根据用途被分为几组.组名在参数前边用":
:
"分割.ttapt.conf(5)联机手册有相关语法介绍.其它项目在对应命令的联机手册中有所描述(如ttapt.get
(1)和ttapt-cache
(1)).比如:
APT:
:
Default-Release"testing";
//在使用混合系统时,设定默认下载的版本
APT:
:
Get:
:
Assume-Yes"true";
//如果在安装/卸载过程中出现询问,应答为y
如果在使用aptitude、apt-get或dpkg时出现如下错误
E:
DynamicMMapranoutofroom
可以在apt.conf中加入:
APT:
:
Cache-Limit"12500000";
以重新设定缓存区大小.
访问资源库需要代理,则可以加入类似下边的内容:
Acquire:
:
http:
:
proxy"http:
//user:
pass@xxx.xxx.xxx.xxx:
port";
Acquire:
:
ftp:
:
proxy"ftp:
//user:
pass@xxx.xxx.xxx.xxx:
port";
APT还提供了三个钩子程序,用于在dpkg阶段调用.它们分别是Pre-Invoke,Post-Invoke,Pre-Install-Pkgs.
DPkg:
:
Pre-Invoke{"mount-oremount,rw/usr";};
DPkg:
:
Post-Invoke{"mount-oremount,ro/usr";};
DPkg:
:
Pre-Install-Pkgs{"dpkg-preconfigure--apt--priority=low--frontend=dialog";};
/usr/share/doc/apt/examples/apt.conf,/usr/share/doc/apt/examples/configure-index.gz中给出详细的例子,可以用于参照.
5.安装
当发出安装请求时,apt会根据其优化算法,求解出最佳安装方案,来完成用户的请求.比如:
debian:
~#apt-getinstallxchat
ReadingPackageLists...Done
BuildingDependencyTree...Done
Thefollowingextrapackageswillbeinstalled:
defomafontconfiglibatk1.0-0libfontconfig1libgtk2.0-0libgtk2.0-bin
libgtk2.0-commonlibpango1.0-0libpango1.0-commonlibperl5.8libtiff4
libx11-6libxcursor1libxext6libxft2libxi6libxrandr2libxrender1tcl8.4
ttf-bitstream-veraxchat-commonxfree86-commonxlibs-data
Suggestedpackages:
defoma-docpsfontmgrx-ttcidfont-confdfontmgrttf-kochi-gothic
ttf-kochi-minchottf-thryomanesttf-baekmukttf-arphic-gbsn00lp
ttf-arphic-bsmi00lpttf-arphic-gkai00mpttf-arphic-bkai00mptclreadline
libnet-google-perlx-window-system-corex-window-system
Recommendedpackages:
libft-perllibatk1.0-datahicolor-icon-theme
ThefollowingNEWpackageswillbeinstalled:
defomafontconfiglibatk1.0-0libfontconfig1libgtk2.0-0libgtk2.0-bin
libgtk2.0-commonlibpango1.0-0libpango1.0-commonlibperl5.8libtiff4
libx11-6libxcursor1libxext6libxft2libxi6libxrandr2libxrender1tcl8.4
ttf-bitstream-veraxchatxchat-commonxfree86-commonxlibs-data
0upgraded,24newlyinstalled,0toremoveand1notupgraded.
Needtoget12.5MBofarchives.
Afterunpacking39.1MBofadditionaldiskspacewillbeused.
Doyouwanttocontinue?
[Y/n]
APT下载软件时是根据/var/lib/apt/lists下的_Packages文件,来获取软件的详细定位的,而这些_Packages文件是通过命令:
#apt-getupdate
命令从sources.list中声明的顺序从资源库中获取的.这一命令将对Packages索引文件进行更新.因此,在安装软件前,或在修改sources.list后,应该进行apt-getupdate操作.
每天运行,或经常运行这一命令,是个良好的习惯.APT同时会清除/var/lib/apt/lists目录下没有在/etc/apt/sources.list中声明的资源文件.如果你使用--no-list-cleanup(APT:
:
Get:
:
List-Cleanup),APT将会保留这些文件,如果您只是在sources.list中临时禁用一条资源,这样还是比较方便的;当再次启用这条资源时,就不需要重复下载APT的资源文件了.
在安装的时候您可以通过使用--print-uris选项将这些信息输出到屏幕.比如:
#apt-getinstall--print-urisnano-tiny
ReadingPackageLists...Done
BuildingDependencyTree...Done
ThefollowingNEWpackageswillbeinstalled:
nano-tiny
0upgraded,1newlyinstalled,0toremoveand1notupgraded.
Needtoget87.8kBofarchives.
Afterunpacking123kBofadditionaldiskspacewillbeused.
'http:
//ftp.us.debian.org/debian/pool/main/n/nano/nano-tiny_1.2.4-5_i386.deb'
nano-tiny_1.2.4-5_i386.deb8778607794bf630d1a9dffdf85917a9e39968
注意后边的07794bf630d1a9dffdf85917a9e39968这是nano-tiny_1.2.4-5_i386.deb的MD5编码,将用跟从Packages中获取的对应MD5编码相比对.只有MD5编码相匹配时,才会安装.当出现不一致时,APT会报告MD5不匹配,并拒绝安装或升级软件包.
您也可以仅仅模拟一下,而不是真正的安装:
#apt-getinstallnano-tiny-s(--simulate)
如果您仅需要获取.deb,而不是装,则可以
#apt-getinstallnano-tiny-d(--download-only)
假如你不小心损坏了已安装的软件包而想修复它,或者仅仅想安装软件包中某些文件的最新版本,这是可以做到的,你可以用--reinstall选项:
#apt-get--reinstallinstallnano
如果您使用的是混合源,也可指定发行版安装:
#apt-getinstallnano/testing
解决依赖问题
当出现依赖问题时,APT会努力做出最好的的选择.作为解决依赖问题的一部分,APT为了尽可能的完成用户的请求,会首先卸载已经安装的冲突的软件包.无论何时,在进行用户请求的附加操作时,apt-get在提示了对所选择软件包将要做的的变更后,都会请求用户的确认.这是为了防止不小心卸载了冲突的软件包,或引入更严重的依赖问题.如果不需要额外的操作,APT将不会给出提示.
通过设置APT:
:
Get:
:
Show-Upgradeed为true,可以让APT每次都提示确认.同样,设置APT:
:
Get:
:
Assum-Yes为true,或在APT的命令行指定-y选项,APT将绕过确认,继续操作.请避免使用这一选项;确认对于生产应用系统来说是个好事情.有时,一个软件包会依赖于其它一组软件包中的任意一个.比如:
debian:
~#apt-cachedependsmailx
mailx
Depends:
libc6
Depends:
liblockfile1
|Depends:
exim4
Depends:
courier-mta
esmtp-run
exim
masqmail
nullmailer
postfix
sendmail-bin
ssmtp
xmail
exim4-daemon-heavy
exim4-daemon-light
Depends:
base-files
Conflicts:
mailx依赖于能够提供邮件传输代理的任一个软件包,在默认情况下会安装exim4,除非您明确指定:
#apt-getinstallmailxpostfix
6.查询
到目前为止,一切感觉都还不错,只要您知道了软件包名称,使用APT安装简直就是小菜一碟.当我们需要安装一个软件,而又没有确切的知道其名称时,就需要求助于apt提供的另一个命令apt-cache(详细的使用方法,请查阅apt-cache(8)联机手册).它可以用于查询您的软件包数据库,包括软件包描述,就象这样:
debian:
~#apt-cachesearchmysql-server
mysql-server-mysqldatabaseserver(currentversion)
mysql-server-4.1-mysqldatabaseserverbinaries
mysql-server-5.0-mysqldatabaseserverbinaries
phpbb2-conf-mysql-Automaticconfiguratorforphpbb2on
scoop-Web-basedcollaborativemediaapplication
webmin-mysql-mysql-servercontrolmoduleforwebmin
我们找到了几个相关的软件包,以及有关的简单描述.想进一步获得某个软件包的详细信息,你可以运行:
#apt-cacheshowmysql-server
Package:
mysql-server
Priority:
optional
Section:
misc
Installed-Size:
8344
Maintainer:
ChristianHammers
Architecture:
i386
Source:
mysql-dfsg
Version:
4.0.24-10sarge1
Provides:
virtual-mysql-server
Depends:
mysql-common(>=4.0.24-10sarge1),mysql-client(>=4.0.24-10sarge1),
ebconf(>=1.2.9),libdbi-perl,perl(>=5.6),libc6(>=2.3.2.ds1-21),libgcc
(>=1:
3.4.1-3),libmysqlclient12,libstdc++5(>=1:
3.3.4-1),libwrap0,zlib1g
=1:
1.2.1),adduser(>=3.40),psmisc,passwd,mailx
Conflicts:
mysql-server-4.1
Filename:
pool/updates/main/m/mysql-dfsg/mysql-server_4.0.24-10sarge1_i386.deb
Size:
3645680
MD5sum:
b1877cc602daf4b3aeffd350ced6f6a7
Description:
mysqldatabaseserverbinaries
MySQLisafast,stableandtruemulti-user,multi-threadedSQLdatabase
server.SQL(StructuredQueryLanguage)isthemostpopulardatabasequery
languageintheworld.ThemaingoalsofMySQLarespeed,robustnessand
easeofuse.
.
Thispackageincludestheserverbinariesforthe4.0branch.
如果仅想了解某软件包的与哪些软件包关联,可运行:
debian:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Debian APT