理解apt操作-让你的安装维护变的简单


本文来自:http://www.debian.org/doc/manuals/apt-howto/ch-novas.zh-cn.html

 在Linux厂商推广包管理之前,软件都是以源代码包的形式发布的,这对普通用户来说相当麻烦。早在Red Hat提出rpm的概念之前,Debian便推出了dpkg这一软件包管理工具。后来,Debian又推出APT(Advanced Packaging Tool)自动解决依赖性、配置文件、升级以使软件包的安装更加便利。apt被许多Linux发行商所采用,本文介绍apt的有关使用。
使用apt管理软件包,所以针对Debian的文档也同样实用于Ubuntu。
(一)基本配置
--------------------------------------------------------------------------------
1.1, /etc/apt/sources.list文件
    Ubuntu对网络的依赖性很强,它的许多软件安装、系统更新都要在线进行,那么,新的软件包从哪里下载来的呢?软件包的来源就列在/etc/apt/sources.list文件中。
    在该list文件中,会出现类似的格式:
    下面是Ubuntu5.10安装后系统默认的源列表文件:
deb cdrom:[Ubuntu 5.10 _Breezy Badger_ - Release i386 (20051012)]/ breezy main restricted
## Uncomment the following two lines to fetch updated software from the network
# deb http://cn.archive.ubuntu.com/ubuntu breezy main restricted
# deb-src http://cn.archive.ubuntu.com/ubuntu breezy main restricted
## Uncomment the following two lines to fetch major bug fix updates produced
## after the final release of the distribution.
  deb http://cn.archive.ubuntu.com/ubuntu breezy-updates main restricted
  deb-src http://cn.archive.ubuntu.com/ubuntu breezy-updates main restricted
## Uncomment the following two lines to add software from the 'universe'
## repository.
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the Ubuntu security
## team.
# deb http://cn.archive.ubuntu.com/ubuntu breezy universe
# deb-src http://cn.archive.ubuntu.com/ubuntu breezy universe
## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://cn.archive.ubuntu.com/ubuntu breezy-backports main restricted universe multiverse
# deb-src http://cn.archive.ubuntu.com/ubuntu breezy-backports main restricted universe multiverse
# deb http://security.ubuntu.com/ubuntu breezy-security main restricted
# deb-src http://security.ubuntu.com/ubuntu breezy-security main restricted
# deb http://security.ubuntu.com/ubuntu breezy-security universe
# deb-src http://security.ubuntu.com/ubuntu breezy-security universe
NOTES   
    (1)以#开头的语句是注释。
    (2)每行的开头定义了来源的类型,
     deb    : 已经编译好的二进制软件包。
     deb-src: 源代码包,含有原始的源代码、Debian控制文件(.dsc)、标记须针对Debian所做的改动的diff.gz文件。
    (3)每行紧接deb, deb-src之后定义了源的类型,apt支持http, ftp, file(本地文件,比如含有加载iso文件系统的目录)和ssh。
    (4)针对cdrom,使用apt-cdrom管理工具,而非apt-get。
    (5)对sources.list作出改动后,运行"apt-get update"使 apt从你设定的源获取软件包列表。
1.2, 确定最优的源
    用户在sources.list中加入源(一般为离开用户比较近的镜像),那么,哪个源更好呢?
    有人写一个脚本,测量各镜像的ping延时。其实可以使用netselect工具:
    (1)若未安装netselect, "sudo apt-get install netselect".
    (2)使用netselect找出多个源中随度最快的源,添加到sources.list中。
    另外还有使用本地化源、使用光驱中的源。这里就不做介绍了,可参考debian.org的apt-howto。谁会不愿意用网上最新的源呢?:)
(二)管理软件包
--------------------------------------------------------------------------------
2.1 更新软件包列表
    系统使用一个数据库来管理软件包,数据库跟踪哪些包安装了、哪些包没被安装、哪些包可以被安装。当用户要安装某程序时,apt使用这个数据库来决定哪些包需要被安装。

    正如1.1中所说,使用"sudo apt-get update"命令来更新软件包列表,推荐经常使用该命令,以了解可用的系统更新。
2.2 安装软件包  
    ok,万事俱备,介绍完软件包源列表的设置,就该进入重点,介绍利用APT安装软件包了。
    语法: "apt-get install package"。
    例:"apt-get insatll emacs21"。
    它将安装emacs21,APT首先在它的数据库中搜索emacs21的最新版本,然后从源列表sources.list中所标注的源取得该包。然后处理依赖性,安装emacs21所必须的包。
    运行"apt-get -h",查看apt-get的帮助。
    APT从网上下载这些包,稍后进行安装,这些包存放在:/var/cache/apt/archives目录中。
    如果安装包被毁坏,或者想重新安装,则只需加上:--reinstall选项。
    例:"apt-get --reinstall install emacs21"
2.3 卸载软件包
    有装必有卸,APT也有此功能。
    语法: apt-get remove package.
    例:"apt-get remove emacs21"
    这里就要注意到依赖性问题,比如,A依赖于B,而A未删除,则无法利用APT删除B。
    安装软件时,不光安装了软件包,还可能有配置文件,上述的命令无法删除配置文件,如何删得干干净净呢?——用"purge(净化, 清除, 泻药)"选项。
    例: "apt-get --purge remove emacs21"
NOTES:实际上,用安装软件包的命令也可以卸载软件包,只需在命令末端加上"-"。
       例:要卸载emacs21,"apt-get install emac21-"
       同样地,用卸载软件包的命令也可以安装软件包,在命令末端加"+"。
       例:              "apt-get remove emacs21+"
2.4 升级软件包
    正如前面所说,当更改sources.list之后,运行"apt-get update"更新源。可以加上-u选项,这样,APT会列出将要升级的软件包清单。
    例: "apt-get -u update"
2.5 升级至新的发行版
    "apt-get upgrade"能够更新同一发行版内的软件包,也可以将整个系统更新到新的发行版。APT能从网络或者新的发行CD一下升级整个系统,要想将系统更新到一个新的发行版,还是用这一节的方法比较好!
    我是个懒人,直接重装算鸟...关于更新至新发行版的方法,去相关网站查询...
2.6 删除未使用的包文件: apt-get clean & autoclean
    正如前面所说,APT先将sources.list中对应源的安装包下载到本地(/var/cache/apt/archives/),然后进行安装。这些安装包会占用大量的磁盘空间/var/cache/apt/archives,可以利用APT删除这些安装包。
    apt-get clean:删除/var/cache/apt/archives/、/var/cache/apt/archives/partial/目录中除锁文件之外的所有文件。要想重装对应的软件包,需要重新从源获取。
    apt-get autoclean:删除过时的包(源中;了更新的包时,删除目录中对应的旧包;或者目录中有多个包时,删除旧版本的包)。
   
  
___________________________________________________________________________
Ubuntu.cn.org上也有简单的关于apt-get的介绍:
使用apt来进行包管理
介绍
    首先,.tar.gz.的用户如果希望在自己的GNU/Linux 系统下使用这些软件必须编译每个项目。Debian的诞生,使人们有理由相信这个系统拥有一种管理安装包裹(package)的方法,使得这些包裹可以安装到机器上。这个系统被叫做dpkg。由此安装包裹(package)第一次被引入到了GNU/Linux上,而此时的红帽子自己的’rpm’系统还在酝酿之中。
    一个新的难题挡在了GNU/Linux的设计者面前。他们需要一个快速,实效性强,并且有效率的方式来安装这些安装包裹,并且希望它能够在升级时自动而独立的配置这些安装包裹升级中的文件。在这里重申一下,Debian直接导致了APT的诞生,即 Advanced Packaging Tool。从那时起它就和rpm一起被使用在Conectiva中,同时它也被不少其他的分布式系统所采用。

怎样使用Debian的APT
可使用的命令
所有的这些命令都需要sudo!
apt-get update - 在改变了/etc/apt/sources.list或者/etc/apt/preferences之后运行。你也应该定期的运行它以保证你的source list是最新的。
apt-get install packagename - 安装一个新的安装包裹(参见下面的aptitude行)
apt-get remove packagename - 移除一个已经安装了的安装包裹(运行后configfiles仍然会留下来)
apt-get --purge remove packagename - 移除一个已经安装了的安装包裹(运行后configfiles也会被删除)
apt-get upgrade - 更新所有已经安装了的安装包裹
apt-get dist-upgrade - 更新整个系统到一个更新的发行版本
apt-cache search string - 在一系列已知的安装包裹中找寻字符串
dpkg -l package-name-pattern - 列出匹配模式的安装包裹
aptitude - 详细的查看已经安装或者可以使用的安装包裹。 Aptitude能够使用和apt-get相类似的方式用在命令行中,但是只有一些命令可用-最常用的安装和移除命令。但是因为aptitude比起 apt-get来保留了更多的跟踪信息,它在安装和移除系统时拥有更好的表现。
apt-cache showpkg pkgs - 显示安装包裹的信息。
apt-cache dumpavail - 打印一个可用的安装包裹名单。
apt-cache show pkgs - 显示安装包裹的记录,和dpkg –print-avail功能相似。
apt-cache pkgnames - 快速列出每个在系统中的安装包裹。
dpkg -S file - 哪个已经安装的安装包裹包含这个文件。
dpkg -L package - 列出在这个包裹中所有文件。
apt-file search filename - 查找包含此文件名的安装包裹(不需要是已经安装的)。apt-file是一个包含自身的安装包裹。你必须先用apt-get install来安装,然后还需要运行apt-file update。如果apt-file search filename一次显示了过多的内容,使用apt-file search filename|grep –w filename(这样只会显示包含文件名字的内容)或者使用apt-file search filename|grep /bin/ 那些在固定文件夹中的文件,比如/bin或者/usr/bin,如果你查找一个特殊的执行文件的话,这会非常有帮助)。
apt-get autoclean - 定期运行这个命令来清除那些已经不在你的系统中的安装包裹中的.deb文件夹。你通过这个方式能够重新获得不少的磁盘空间。如果你狂热的对磁盘空间有需求的话,apt-get clean是十分激进的,它甚至会移除那些现在已经安装了的安装包裹中的.deb文件。但是大部分的时间你不需要.debs,所以如果你为磁盘空间感到焦头烂额,运行它还是很值得的。
其余的安装包裹
deborphan和debfoster是查找可以被移除的没有什么用处的安装包裹的良好工具。
注意:
    通过编辑/etc/apt/sources.list你能够调出一个不同的库。具体的方法是替换其中的’stable’为’unstable’(或者其他什么文字)然后运行/apt-get update。但是这种方法是一种老方法,更新的办法是pinning(销连接)。下面是一个unstable配置文件的例子。

,

  1. No comments yet.
(will not be published)
*