APT HOWTO
第二章 基础设置
2.1 /etc/apt/sources.list文件
=============================
作为操作的一部分,APT使用一个文件列出可获得软件包的镜像站点地址,这个文件就是/etc/apt/sources.list。
文件中的各项信息通常按如下格式列出:
deb http://site.http.org/debian distribution section1 section2 section3
deb-src http://site.http.org/debian distribution section1 section2 section3
当然,上面所列的地址项都是假设的不可用的。每行的第一个单词deb或deb-src,描述了文件类型,目录中包含的是二进制软件包(deb),即我们通常使用的已编译好的软件包;或包含的是源码包(deb-src),源码包包含源程序编码、Debian管理文件(.dsc)和“Debian化”该程序所做更改的记录文件diff.gz。
通常可以看出如下Debian默认的sources.list:
# See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free
# Uncomment if you want the apt-get source function to work
#deb-src http://http.us.debian.org/debian stable main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US stable non-US
这些是Debian基本安装所需的软件包来源地址,第一个deb行指向官方正式软件包来源,第二个deb行指向non-US软件包来源,第三deb行指向Debian安全补丁更新包来源。
最后两行被注释掉了(在句首加#),所以apt-get将忽略它们。这些是deb-src行指向Debian源码包来源,如果你常下载程序源码来测试或重编译,可取消对它们的注释。
/etc/apt/sources.list文件可包含多种类型的地址,APT知道如何处理这些不同的地址类型:http,ftp,file(本地文件,例如:一个加载了ISO9600文件系统的目录)和ssh。
别忘了在修改完/etc/apt/sources.list文件后运行apt-get使更改生效。你必须完成这个步骤,以便让APT从你指定的地方获得新的软件包列表。
2.2 如何在本地使用APT
=====================
有时你硬盘上有许多软件包,你会希望通过APT来安装它们,以便让它去处理软件包间复杂的依赖关系。
想这么做,就建一个目录,将所有你想要安装的.deb文件放入其中。例如:
mkdir /root/debs
你可以使用一个重载文件(override file)直接去修改软件包中管理文件中的定义(definitions),使之符合你的软件储藏库管理规则,在这个重载文件中,你可能希望定义一些选项来重载那些软件包的定义,如下所示:
package priority section
package是软件包的名称,priority有三个级别low,medium或high,section是软件包所属的section,重载文件可任意命名,文件名将在接下来的步骤中做为参数传递给dpkg-scanpackages。如果你不想写重载文件,只需在调用dpkg- scanpackages时使用/dev/null就行了。
仍是在/root目录下执行:
dpkg-scanpackages debs file | gzip > debs/Packages.gz
在上述的命令行中,file为重载文件,命令生成一个Packages.gz文件,它包含了APT所需的各种软件包信息,要使用这些软件包,在sources.list中加上:
deb file:/root debs/
完成了上面的工作,就可以通常那样使用APT命令操作这些软件包了。你可以使用同样的方法生成一个源码库,但请记住你需要将.orig.tar.gz文件、.dsc文件和.diff.gz文件包含在目录中,要生成Source.gz文件而不是Packages.gz文件。所使用的命令也不相同,要使用 dpkg-scansources,命令如下所示:
dpkg-scansources debs | gzip > debs/Sources.gz
注意dpkg-scansource不需要重载文件,在sources.list中的引用法是:
deb-src file:/root debs/
2.3 选择最佳镜像发布站点加入source.list文件:netselect,netselect-apt
=====================================================================
一个新用户经常问到的问题:“该将哪个Debian镜像发布站点加入source.list文件?”。有很多方法来选择镜像发布站点,专家们可能会写一个脚本去测试不同站点的ping time,不过有一个现成的程序可以帮你:netselect。
安装netselect
apt-get install netselect
不带参数运行它时会显示它的帮助信息。运行它时加上以空格分隔的镜像主机列表,它会返回一个分值和列表中的一个主机名。这个分值通过评估ping time和hops number(一个网络请求报文到达目标主机所经过的转发主机的个数)得出,它与镜像站点预计下载速度成反比(数值越小越好)。返回的主机名是主机列表中得分最低的那个(查看列表中所以主机的得分情况可使用-vv选项)。看出下的例子:
bash$ netselect ftp.debian.org http.us.debian.org ftp.at.debian.org download.unesp.br ftp.debian.org.br
365 ftp.debian.org.br
bash$
它表示,在netselect后列出的所有主机中,ftp.debian.org.br是下载速度最快的主机,其得分为365。(注意!!这是在我电脑上的测试结果,不同的网络节点网速会大不相同,所以这个分值不一定适用于其它电脑)
现在将netselect找到的连接速度最快的镜像站点加入/etc/apt/sources.list文件(see The /etc/apt/sources.list file, Section 2.1)and follow the tips in Managing packages, Chapter 3.
注意:镜像站点列表通常包含在文件 http://www.debian.org/mirror/mirrors_full。
从0.3版开始,netselect软件包包含了netselect-apt脚本,它使上述操作自动完成。只需将发布目录树做为参数(默认为 stable)输入,sources.list文件就会生成速度最快的main和non-US镜像站点列表,并保存在当前目录下。下面的例子生成一个包含 stable发布镜像站点列表的sources.list
bash$ ls sources.list
ls: sources.list: File or directory not found
bash$ netselect-apt stable
(...)
bash$ ls -l sources.list
sources.list
bash$
记住:sources.list生成在当前目录下,必须将其移至/etc/apt目录。
Then, follow the tips in Managing packages, Chapter 3.
2.4 将CD-ROM加入source.list文件
===============================
如果你用APT从CD-ROM上安装及升级软件包,你可以将它加入到sources.list文件中。完成该操作,可使用apt-cdrom程序:
apt-cdrom add
将Debian光盘放入光驱,它将加载光盘目录,并在光盘上查找软件包信息。如果你的光驱需要额外设置,可使用以下选项:
-h - program help
-d directory - CD-ROM mount point
-r - Rename a recognized CD-ROM
-m - No mounting
-f - Fast mode, don't check package files
-a - Thorough scan mode
例如:
apt-cdrom -d /home/kov/mycdrom add
你还可以扫描一张光盘,但不将其加入列表:
apt-cdrom ident
注意,只有当你在系统的/etc/fstab中正确设置了光驱后,该程序才会工作。