<< Back to handbook
The Debian GNU/Linux FAQ
--------------------------------------------------------------------------------
概述
本文档解答一些关于Debian GNU/Linux的常见问题.
--------------------------------------------------------------------------------
版权声明
Copyright © 1996-2003 by Software in the Public Interest
在遵守并包含本文档版权声明的前提下,允许制作和发布本文档的完整拷贝.
在遵守上述完整拷贝版本有关版权声明的前提下,允许拷贝和发布基于本文档完整拷贝的修改版本,并且,发布所有通过修改本文档而得到的工作成果,须使用与本
文档的许可声明一致的许可声明。
在遵守上述修改版本版权声明的前提下,允许拷贝和发布本文档其它语言的翻译版本,如果本许可声明有经自由软件基金会(Free Software
Foundation)核准的当地化译本,则遵循当地化译本。
--------------------------------------------------------------------------------
目录
●1. 概论
○1.1 什么是Debian GNU/Linux?
○1.2 OK, 我知道Debian是... linux是什么?
○1.3 什么是"Hurd"?
○1.4 Debian GNU/Linux与其他linux发行版有什么不同?为什么要选择Debian GNU/Linux?
○1.5 Debian 计划与自由软件基金会的GNU计划。
○1.6 Debian 的发音及含义。
●2. Debian GNU/Linux的获得与安装
○2.1 Debian 的最新版本是什么?
○2.2 如何得到Debian 的安装盘?
○2.3 如何从光驱安装Debian?
○2.4 我有刻录机,如何获得Debian 影像?
○2.5 可以软盘安装吗?
○2.6 可以网络安装吗?
●3. 兼容问题
○3.1 可以在什么样的硬件上运行
○3.2 与其他的linux发行版兼容行如何
○3.3 Debian 源码与其他Unix兼容性如何
○3.4 我可以在RedHat/Slackware/...上使用Debian 的包(".deb"文件)吗?我可以在Debian
上使用RedHat的rpm包吗?
○3.5 Debian 可以运行我的"a.out"程序吗?
○3.6 Debian 可以运行libc5程序吗?
○3.7 Debian 可以编译libc5程序吗?
○3.8 如何安装非Debian 格式程序?
○3.9 我运行foo时为什么提示无法找到libX11.so.6?
○3.10 为什么我编译程序需要libtermcap?
○3.11 为什么无法安装AccelX?
○3.12 为什么我的XFree2.1崩溃了?
●4. Debian 的软件系统
○4.1 Debian GNU/Linux上有那些应用程序与开发软件?
○4.2 谁写的这些软件?
○4.3 如何得到Debian的当前已开发软件列表?
○4.4 Debian GNU/Linux缺少什么?
○4.5 我编译程序时为什么会有"ld: cannot find -lfoo"提示?Debian的库文件里怎么没有libfoo.so?
○4.6 Debian支持Java吗?
○4.7 我怎么确定我正在使用Debian,怎么检查它的版本?
○4.8 对其他语言(非英语)支持的怎么样?
○4.9 关于US的出口限制?
○4.10 如何得到pine?
●5. Debian的FTP
○5.1 Debian的FTP上有哪些目录?
○5.2 在dists目录有哪些版本 ?
○5.3 象slink,potato,等等 是什么意思?
·5.3.1 以前用过哪些代码名
·5.3.2 它们源自哪里
○5.4 frozen是什么?
○5.5 sid是什么?
·5.5.1 sid的历史
○5.6 stable目录的内容
○5.7 testing目录的内容
○5.8 unstable目录的内容
○5.9 dists/stable/main的内容
○5.10 哪里可以获取源代码?
○5.11 pool目录下是什么?
○5.12 什么是"incoming"
●6. Debian的包管理系统
○6.1 什么是Debian包?
○6.2 Debian包的格式
○6.3 为什么Debian包名字这么长
○6.4 Debian的控制文件
○6.5 Debian的配置文件
○6.6 Debian软件包的脚本
○6.7 软件包的优先级
○6.8 什么是虚拟包
○6.9 软件包的关联
○6.10 Pre-Depends什么意思
○6.11 包的状态
○6.12 如何锁定一个包
○6.13 如何安装一个source包
○6.14 如何从源码创建二进制包
○6.15 自己制作Debian包
●7. Debian包的管理工具
○7.1 提供了哪些管理工具
·7.1.1 dpkg
·7.1.2 dselect
·7.1.3 dpkg-deb
·7.1.4 pat-get
·7.1.5 dpkg-split
○7.2 如何升级一个运行中的程序
○7.3 我的Debian系统上装了哪些软件包
○7.4 找出一个文件的归属包
●8. 更新系统
○8.1 把基于libc5的Debian1.3.1(或更低)升级到基于libc6的2.0版(或更高)
○8.2 更新我的系统
·8.2.1 APT
·8.2.2 pdkg-ftp
·8.2.3 mirror
·8.2.4 dpkg-mountable
○8.3 升级软件必须是单用户模式吗
○8.4 需要在硬盘上保留.deb吗
○8.5 添加软件日志
●9. Debian与内核
○9.1 可以不考虑Debian因素编译内核吗
○9.2 Debian的编译内核工具
○9.3 制作启动软盘
○9.4 Debian下的模块管理
○9.5 如何删掉旧内核
●10. 定制Debian GNU/Linux
○10.1 如何确定所有的程序使用的是相同的页面尺寸
○10.2 访问硬件设备的安全问题
○10.3 如何启动Debian时加载控制台字体
○10.4 如何配置一个X11程序的默认值
○10.5 好像每个linux发行版都有不同的启动方式,告诉我Debian的方式
○10.6 好像Debian不使用rc.loca定制启动过程;提供了什么工具
○10.7 软件包管理工具怎样处理包含其它包的配置文件的软件包
○10.8 不同版本软件包的文件的替代
○10.9 如何让Debian的软件包管理系统管理非Debian格式软件包
○10.10 Debian对不同喜好的支持
●11. 从Debian GNU/Linux获取支持
○11.1 Debian GNU/Linux的其他文档
○11.2 在线资源
·11.2.1 邮件列表
·11.2.2 维护人员
·11.2.3 新闻组
○11.3 寻找资料的快速方法
○11.4 已知错误的记录
○11.5 如何提交一个Debian中的错误
●12. Debian项目
○12.1 如何成为一个Debian软件开发者
○12.2 如何向Debian项目捐赠资源
○12.3 如何向Debian项目捐资
·12.3.1 SPI组织
·12.3.2 自由软件基金会(FSF)
●13. 作为商品销售Debian GNU/Linux
○13.1 我可以制作并销售Debian CD吗?
○13.2 可以包装成非免费软件
○13.3 可以在Debian GNU/Linux 上开发我的linux版本吗
○13.4 可以我的商业程序做成Debian包吗?
●14. 对下一个Debian发行版的一些展望
○14.1 增加安全性
○14.2 增强对非英语用户的支持
○14.3 更多的体系结构
○14.4 更多内核
●15. 关于这篇FAQ的一些资料
○15.1 作者
○15.2 反馈
○15.3 获取
○15.4 文档格式
The Debian GNU/Linux FAQ [概论]
1. 定义与概述
--------------------------------------------------------------------------------
1.1 什么是Debian GNU/Linux
Debian GNU/Linux是指一个linux操作系统发行版和在它上运转的许多的包的集合。
事实上,用户可以通过互联网获取Linux内核,进行编译。通过同样的方法获取应用程序的源码,进行编译。然后装到自己的系统上。对于那些复杂的程序来
说,这个过程是费时的易错的。因此,用户通常通过发行版来获取操作系统和应用程序。发行版是通过软件、协议、包管理机制,以及安装维护工具、文档和其它服
务来区分的。
Debian GNU/Linux是志愿者建立一个免费,高质量Unix
兼容操作系统的努力的结果。建立自由的类UNIX操作系统的想法源于GNU计划,组成Debian GNU/Linux
许多应用程序也是由GUN项目开发的。
Debian的免费与GUN是一致的(详见Debian自由软件指南)。我们所说的Free是指其自由,而不是价格。免费软件是指你可以自由分发其拷贝,
如果你愿意,你可以得到其源码,可以对其修改或使用,并且你知道你能做这些事情。
Debian项目是Ian Murdock
在1993年创建的,最初是在在自由软件基金会的GUN计划下发起的。现在,Debian开发者认为这是GUN计划的一个分支。
Debian GNU/Linux 是:
●灵活性:Debian目前有超过8250个软件包。Debian为用户提供了选择软件包安装的工具。在任何Debian
镜像站点都可以找到关于当前软件包的列表和描述。
●自由:使用和分发无需任何费用。Debian GNU/Linux的所有正式软件都是遵循GNU的通用公共许可证的。
Debian FTP包含大概350个受限制可分发的软件包(在non-free和 contrib 部分)。
●动态的:大约有900 位志愿者经常开发新的或改进代码,Debian更新非常快,每几个月都有新的发行计划,FTP每天都更新。
尽管Debian GNU/Linux是免费软件,仍然可以在它的基础上构建linux商业版本,详见13.3可以在Debian GNU/Linux
上开发我的linux版本吗
--------------------------------------------------------------------------------
1.2 OK,我知道Debian 是... linux是什么?
简而言之,linux是一个类UNIX操作系统的内核。最初是为386(或者更高)PC设计的,现在包括多处理器在内的其它系统下开发。Linux是由
Linus Torvalds 和全世界很多计算机科学家编写。
除了内核,“Linux”还包括:
●符合Liunx标准的一个文件系统。
●大量的Unix实用程序,其中许多是由GNU计划和自由软件基金会开发的。
是Linux内核,文件系统,GNU和FSF应用软件,和其它符合POSIX (IEEE
1003.1)标准的应用软件的结合体。详见3.3Debian 源码与其他Unix兼容性如何
更多的关于Linux 的信息请参阅Michael K. Johnson的Linux Information Sheet 和 Meta-FAQ.
--------------------------------------------------------------------------------
1.3 什么是"Hurd"
Hurd是运行在 GNU Mach 微内核上的一套服务器,是为GNU开发的。
目前仅有Debian GNU/Linux ,不过我们也正在开发Debian GNU/Hurd
服务器与桌面,现在还没有官方发行版,不过不会太久了。
更多GNU/Hurd 信息参见http://www.gnu.org/software/hurd/ ,Debian
GNU/Hurd参见http://www.debian.org/ports/hurd/
。
--------------------------------------------------------------------------------
1.4 Debian GNU/Linux与其他linux发行版有什么不同?为什么要选择Debian GNU/Linux
与其它发行版的主要区别:
Debian的软件包管理系统:
整个系统,或其一部分可以在不需重新设置,不丢失配置文件,多数情况不需重起的情况下升级。现有的许多LInux发行版都有自己的软件包管理系统;
Debian的软件包管理系统是独一无二的(6.Debian的包管理系统)
开放式开发:
尽管其它的LInux是由独立的,小型的,封闭的或商业组织开发的,Debian是唯一一个由全世界范围内的软件工作者通过互联网开发的inux发行
版。
全世界超过900位志愿者包维护人员维护着超过8250个包,并且不断改进Debian
GNU/Linux。Debian开发者不是通过撰写报告,而是通过根据项目标准封装现有软件,提交错误报告和提供用户支持来为项目贡献自己的力量。怎样
成为一位捐助者在里的附加信息见12.1如何成为一个Debian软件开发者
错误跟踪系统:
Debian
开发者地理上的分散需要一个成熟的工具和快速的通讯用于错误提交和错误修复,以加速系统的开发。鼓励用户使用正式的格式通过WWW或e-mail来提交错
误。更多信息详见11.4已知错误记录
Debian 策略:
Debian有关于软件标准和Debian策略的详细的说明,这文档定义了维护管理包的质量与标准。
其它信息详见为什么选择debian网页。
--------------------------------------------------------------------------------
1.5 Debian 计划与自由软件基金会的GNU计划
Debian是通过FSF特别是Richard Stallman的理想构建的。FSF强有力的系统开发工具,实用和应用程序也是一个Debian
系统的关键部分。
Debian是完全同FSF项目分离的,但是保持着经常的联系,并进行许多项目的协作。FSF明确要求我们称我们的系统为"Debian
GNU/Linux", 并且我们乐于遵循这样的要求。
--------------------------------------------------------------------------------
1.6Debian 的发音及含义
Debian 的发音是Deb'-ee-en,重音在第一个音节,是Debian的项目创始人Ian Murdock和他的妻子Debra的名字缩写。
The Debian GNU/Linux FAQ [安装]
2.Debian GNU/Linux的获得与安装
--------------------------------------------------------------------------------
2.1 Debian 的最新版本是什么?
目前 Debian GNU/Linux 有三个版本
“stable”版,版本3.0
这是通过良好测试的稳定的软件,仅当出现重大安全问题或修补时才更新。
“testing”版
下一个“stable”版;是经过测试,但是还不足以发行的unetable包,比stable更新快,但比unstable稍慢。
“unstable”版
开发中的版本,频繁更新。可以随时从Debian的Ftp下载,更新你的系统,但是你不能期望系统象以前一样稳定可用 -
这就是称作“unstale”版的原因!
详见 5.2在dists目录有哪些版本
--------------------------------------------------------------------------------
2.2 如何得到Debian 的安装盘
可以到Debian 镜像站点下载
根据硬件系统的不同分别放置在 dists/stable/main 目录的形如disks-arch(arch为
“386”,“sparc”,等) 的子目录下。这些目录下每个发行版又分作一个目录,最新版在“current”目录(一个符号连接)。
详见目录下的README.txt文件
--------------------------------------------------------------------------------
2.3 如何从光驱安装Debian
Linux支持 ISO 9660 (CD-ROM) 文件系统,一些商家提供这种格式的Debian GNU/Linux
警告:从光驱安装Debian 时
选择dselect方式不是个好主意,会很慢。mountable和apt方式要好的多(详见8.2.1APT和8.2.4dpkg-
mountable)。
--------------------------------------------------------------------------------
2.4 我有刻录机,可以获得Debian 影像吗?
是的。为了使CD 商家更容易提供高质量的磁盘,我们提供官方的 CD 影像。
--------------------------------------------------------------------------------
2.5 可以软盘安装吗?
首先,警告:整个Debian GNU/Linux太大了,不适于类似于标准1.44 MB
软盘这样的小介质安装方式,你会发现从软盘安装不是一件愉快的事情。
把Debian包复制到软盘上,DOS格式,ext2格式,minix格式都可以,然后用mount命令挂接软盘。
比较复杂:
·短的 MS-DOS文件名:如果你把包复制到了MS-DOS格式的软盘上,你会发现它们的名字太长了,不符合MS-DOS
8.3的命名格式,因此你必须使用支持长文件名的VFAT格式的软盘。
·大文件:一些软件包大于1.4MB,不能复制在一张软盘上,可以使用dpkg-split来解决这类问题(详见7.1.5dpkg-
split),可以从Debian的镜像站点的tools目录下载这个工具。
把软盘挂接到 /floppy (应该在安装过程中创建的一个目录):
·mount -t msdos /dev/fd0 /floppy/
如果软盘在A驱, MS-DOS 格式
·mount -t msdos /dev/fd1 /floppy/
如果软盘在B驱, MS-DOS 格式
·mount -t ext2 /dev/fd0 /floppy/
如果软盘在B驱, ext2 格式
--------------------------------------------------------------------------------
2.6 可以网络安装吗?
是的,你可以使用从Debian的FTP和其镜像下载的安装系统引导。
可以下载一个小的CD影像文件,做成可引导CD,用于安装基本的系统,其它从网络安装,详见http://www.debian.org/CD/netinst/.
The Debian GNU/Linux FAQ [兼容]
3. 兼容性问题
--------------------------------------------------------------------------------
3.1 可以在什么样的硬件系统上运行
Debian GNU/Linux 包含所有程序的完整源代码,因此可以在所有Linux内核支持的硬件系统上运行.详见Linux FAQ.
Debian GNU/Linux 现在的版本是3.0,包括在以下硬件系统上运行的完整的源代码和二进制程序.
i386: 指基于Intel和兼容处理器的PC机,包括Intel的 386, 486, Pentium, Pentium Pro,
Pentium II ( Klamath 和 Celeron), Pentium III, 以及 AMD, Cyrix 等制造的兼容处理器.
m68k: 指基于Motorola 680x0 的Amiga 和 ATARI系列
alpha: 指Compaq/Digital's Alpha 系统
sparc: 指Sun的 SPARC 和大部分的 UltraSPARC系统
powerpc: 指IBM/Motorola PowerPC ,包括CHRP, PowerMac 和 PReP
arm: 指ARM and StrongARM
mips: 指基于NEC 处理器的系统
hppa: Hewlett-Packard的 PA-RISC (712, C3000, L2000, A500).
ia64: Intel 的IA-64 ("Itanium")计算机
s390: IBM 的 S/390
基于Sparc64 (UltraSPARC native) 的Debian的二进制版本正在开发阶段
更多的具体硬件支持详间用户安装手册,http://www.debian.org/releases/stable/installmanual.
--------------------------------------------------------------------------------
3.2与其他的linux发行版兼容行如何
Debian 开发者努力与其他Linux发行版沟通,以保持软件的兼容性.大多数的软件都可以象在他们的开发环境下一样运行的很好.
Debian GNU/Linux遵循Linux文件系统层次标准(Linux Filesystem Hierarchy
Standard).但是在规则解释上存在一定的回旋余地因此某些细节上可能与其它发行版有所不同.
--------------------------------------------------------------------------------
3.3Debian 源码与其他Unix兼容性如何
大多数Linux程序的源码是和其他Unix系统相兼容的.它几乎支持 System V Unix 系统和自由的和商业的 BSD
系统中的所有程序的源码。但是说法无法证明,因此对于UNIX没有什么价值。在软件开发中需要的是完全兼容,而不是大部分兼容。因此出现了今天的
POSIX.1 (IEEE Standard 1003.1-1990) ,类UNIX系统源码兼容性的主要标准之一.
Linux原本要基于POSIX.1的,但是POSIX不是免费的,而且POSIX.1证书相当昂贵.这使得Linux基于 POSIX
开发相当困难.证书费用使得Debian获得官方兼容性证明相当困难,即使已经完全通过确认条款(为了让更多的人在POSIX标准上工作,这些确认条款可
以免费获得,).
Unifix股份有限公司 (Braunschweig, 德国) 开发了一个获得了FIPS 151-2
证书的linux系统.这种技术用于Unifix的发行版Unifix Linux 2.0 和 Lasermoon的 Linux-FT.
--------------------------------------------------------------------------------
3.4我可以在RedHat/Slackware/...上使用Debian 的包(".deb"文件)吗?我可以在Debian
上使用RedHat的rpm包吗?
不同的发行版使用不同的软件包格式和软件包管理程序.
你或许能:
通过一个程序可以把一个Debian包安装基于其它发行版的Linux系统中,通常可以正常运行,也可以把一个RedHat 或
Slackware 格式的包转换成Debian格式的包。这得益于Linux文件系统的层次标准。 Alien程序用于不同格式的包的转换.
你或许不想:
有些人在安装文件时,自己来写安装控制文件,通常这些文件是不标准的。因此在其它系统上安装一个Debian包,对于包管理系统可能产生不可预知的影
响。同样一个其它系统上的程序也许可以成功的安装到Debian系统中,但是,可能会导致Debian包管理系统不能完成一些包升级或删除,甚至不能报告
系统上安装了哪些包。
一个比较好的方法:
Linux文件系统规定/usr/local/ 下的目录完全由用户使用,因此可以将‘foreign'
软件安装到这个目录下,进行配置,升级,或删除.
--------------------------------------------------------------------------------
3.5 Debian 可以运行"a.out"程序吗?
你确实还有这样的程序吗 ? :-)
执行一个类似于a.out格式的程序:
·确定内核支持,要么内建支持,要么动态模块支持.(Debian的内核影像含有一个binfmt_aout模块)
如果你的内核是动态模块支持,那么确保binfmt_aout模块已加载.你可以修改/etc/modules文件,使得binfmt_aout模
块启动时加载.
也可以执行insmod DIRNAME/binfmt_aout.o 命令来完成。DIRNAME
指和内核版本有关的路径名,在2.2.17内核的系统中DIRNAME 有可能是/lib/modules/2.2.17/fs/.
·安装可以在2.0以前版本找到的libc4包(因为2.0开始删除了那个包)。可以在老版的Debian光盘(Debian
1.3.1 仍然含有这个包)或者这里ftp://archive.debian.org/debian-archive/ 找到
·如果你执行的程序是个a.out图形客户端,安装xcompat 包.
如果你有a.out 格式的商业程序,这是要求商家发给你一个ELF 升级版的好机会
--------------------------------------------------------------------------------
3.6 Debian 可以运行libc5程序吗?
是的,只需要从oldlibs区域(与老程序兼容所需包)安装libc5 库。
--------------------------------------------------------------------------------
3.7 Debian 可以编译libc5程序吗?
是的,从oldlibs目录安装libc5-altdev 和 altgcc
包,你会在/usr/i486-linuxlibc1/bin目录下发现所需的gcc 和 g++ ,把它放入你的$PATH
变量,是的make和其他程序首先执行它.
编译客户端图形窗口系统(X clients),需要安装xlib6 和 xlib6-altdev 包。
注意我们的其他软件包对libc5 环境不是支持的太好
--------------------------------------------------------------------------------
3.8如何安装非Debian 格式程序
/usr/local/目录下的文件不在Debian报管理系统控制范围之内。因此把你的程序的源代码放到
/usr/local/src/目录下是个不错的习惯。例如你可以把一个名为“foo.tar”的包解压到/usr/local/src/foo目录,编
译后,可执行程序放到/usr/local/bin/,库文件放到/usr/local/lib/,配置文件放到/usr/local/etc/。
如果你的程序必须放到其它目录,你仍可以把它们放到这个目录,在需要的目录建立一个符号连接 指向/usr/local/目录下它的位置。如
ln -s /usr/local/bin/foo /usr/bin/foo
如果你获得一个可再分发的软件,可以把它做成Debian格式的包,然后把它加载到Debian系统中,在用户手册中有关于Debian格式包制作的介
绍(详见11.1Debian GNU/Linux的其他文档)
--------------------------------------------------------------------------------
3.9 我运行foo时为什么提示无法找到libX11.so.6
这个错误表明此程序使用的X11的库是libc5版本 ,这就意味着你需要安装xlib6
你也可能碰到关于libXpm.so.4 的错误信息,这就需要从xpm4.7 包中安装libc5 版本的XPM 库 。
--------------------------------------------------------------------------------
3.10 为什么我不能编译需要libtermcap的程序
Debian使用terminfo 数据库和ncurses 库文件而不是termcap 数据库和termcap
库文件.编译这些软件时应该用libncurses替换libtermcap,并且用户应该有一定的关于终端接口的知识。
为了运行已经和termcap
库相连并且你没有源代码的程序,Debian提供了一个称作termcap-compat的包,它提供了libtermcap.so.2 和
/etc/termcap,安装这个包可以解决程序运行提示无法加载'libtermcap.so.2'库或缺少/etc/termcap 文件的问题。
--------------------------------------------------------------------------------
3.11 为什么无法安装AccelX
AccelX安装时会用到termcap库,详见 3.10为什么我编译程序需要libtermcap
--------------------------------------------------------------------------------
3.12 为什么我的XFree2.1Motif 崩溃了
你需要安装motifnls 包,他提供了在XFree-3.1下运行基于XFree-2.1 编译的Motif程序的XFree-2.1 配置文件
没有这些文件,一些Motif程序在做拷贝和粘贴操作时有可能会崩溃,也可能会出现其他的问题.
The Debian GNU/Linux FAQ [软件]
4. Debian 的软件系统
--------------------------------------------------------------------------------
4.1 Debian GNU/Linux上有那些应用程序与开发软件
和大多数发行版一样,Debian GNU/Linux提供:
·用于软件开发,文档管理,文字处理的主要的GUN应用程序,包括gcc, g++, make, texinfo, Emacs,
Bash shell 和众多的改进版UNIX程序。
·Perl, Python, Tcl/Tk以及各种的相关软件,模块,库文件。
·TeX (LaTeX) and Lyx, dvips, Ghostscript。
· X 窗口管理程序,为Linux提供了互联的图形用户界面,和包括GNOME在内的X图形应用程序。
·一整套网络应用程序,包括用于互联网协议的服务器如HTTP (WWW), FTP, NNTP (news), SMTP 和
POP (mail) , name server; 也包括网页浏览器和开发工具。
包含超过7890个包,从新闻服务器到读者语音支持,传真程序,数据库与电子表格,图形处理,通信,网络和邮件工具,网页服务器,甚至ham-radio
程序.另外的 350组Debian软件包,因为许可证的原因,没有成为Debian的正式组成部分.
--------------------------------------------------------------------------------
4.2 谁写的这些软件
每个软件的作者的名字都在/usr/doc/PACKAGE/copyright文件中,这里PACKAGE指文件名。
Debian GNU/Linux系统的每个软件的维护者都被写在和软件包在一起的控制文件中.(详见6.4Debian的控制文件)
--------------------------------------------------------------------------------
4.3 如何得到Debian的当前已开发软件列表
有两种方式获取一个完整的列表:
任何一个Debian镜像的file
indices/Maintainers文件中都有一个可分发包的列表,文件包括包名及其维护者的名字,e-mail。
任何一个Debian
no-US镜像indices-non-US/Maintainers文件中都有一个美国禁止出口包的列表,包括包名及其维护者的名字,e-mail。
Debian包的www查询页面大概20类.
--------------------------------------------------------------------------------
4.4 Debian GNU/Linux缺少什么?
开发中和预期开发表,列举了所需的包.
更多详见12.1如何成为一个Debian软件开发者
--------------------------------------------------------------------------------
4.5 我编译程序时为什么会有"ld: cannot find -lfoo"提示?Debian的库文件里怎么没有libfoo.so
Debian规则要求符号链接(类似于libfoo.so.x.y.z )位于不同的包中,这些包通常命名为libfoo-dev 或
libfooX-dev (假设库包是libfooX,X是个整数)
--------------------------------------------------------------------------------
4.6 Debian支持Java吗?
因为Sun
官方的JVAV开发工具是非自由软件,因此不能加入Debian.但是可以获得Debian软件包格式的JAVA的JDK和几个Free的工具,你可以使
用Debian来开发,调试,运行JAVA程序.
运行JAVA小程序(applet
),需要web浏览器有识别执行它们的能力,Debian的一些浏览器如Mozilla,Konqueror都支持运行JAVA所需的插件,也能找到
non-free的Debian格式Netscape 软件包,它也能运行JAVA小程序(applet )
更多信息参见Debian JAVA FAQ
--------------------------------------------------------------------------------
4.7 怎么确定我正在使用Debian,怎么检查它的版本
通过检查是否存在/etc/debian_version
文件来确认你的系统是不是Debian,这个文件中包含了一行显示你的版本号的文字,这是由base-files包给定的.
dpkg程序的存在使得在你的系统上安装Debian包成为可能,但是这个程序移植到其他系统或构架上后,不再是一个可靠的鉴别方法.
用户应该知道,Debian由很多部分构成,每一部分(几乎)都可以单独升级,每个版本都有定义好的固定不变的内容.分步更新是可以的,使用dpkg
--list foo命令可得到foo包的安装状态.运行dpkg -l查看所有包的版本.
更多信息:
dpkg --status foo
--------------------------------------------------------------------------------
4.8 对其他语言(非英语)支持的怎么样
·Debian GNU/Linux 发行版包含很多键盘的键盘映射(keymaps
)表,并提供工具(kbd包中)安装,查看,修改这写表格
安装时会提示用户选择正确的键盘
·大多数的软件支持在非US-ASCII字符 的其他拉丁语系(e.g. ISO-8859-1 或
ISO-8859-2)下使用,很多程序支持如中文或日文的多字节语言.
·manpages-LANG(LANG 是两位的ISO国家代码)
软件包提供德,西班牙,芬兰,法,匈牙利,意大利,日,朝鲜,和波兰语的用户手册。要使用一个NLS
手册,必须正确的设置shell的LC_MESSAGES 变量
例如,要使用意大利语的手册应将LC_MESSAGES
设为'italian',man程序就会到/usr/share/man/it/下寻找意大利语的手册
--------------------------------------------------------------------------------
4.9关于US的出口限制
美国法律中限制密码软件的出口。PGP,ssh等都在此列.
为了避免不必要的法律问题,某些Debian GNU/Linux 包,仅在ftp://non-US.debian.org/debian-non-...S/README.non-US
--------------------------------------------------------------------------------
4.10 如何得到pine
因为许可证的限制,pine被放在非自由(non-free)区域,而且,许可证甚至不允许分发修改后的二进制程序,因此你必须自己编译源代码和
Debian补丁.
源码包名 pine,你可以用pine-tracker 获取更新通知.
注意有很多pine和pico的替代品 如 main区的mutt和nano。
The Debian GNU/Linux FAQ [FTP]
. Debian的FTP
--------------------------------------------------------------------------------
5.1 Debian的FTP上有哪些目录
可以从Debian镜像站点的目录树下获取打包的软件.
dists
目录包含“发行版”(distributions),此处是获得Debian发布版本(releases)和已发布版本(pre-releases)的软
件包的正规途径。有些旧软件包及packages.gz文件仍在其中。
pool目录软件包的新的物理地址。详见5.11 pool目录下有什么?
还有一些目录:
/tools/:
用于创建启动盘,磁盘分区,压缩/解压文件,启动Linux的DOS下的小工具.
/doc/:
基本的Debian文档,如FAQ,错误报道系统指导等.
/indices/:
维护人员文件和重载文件
/project/:
大部分为开发人员的资源,如:
/project/experimental/:
本目录包含了处于开发中的软件包和工具,它们均处于alpha测试阶段。用户不应使用这些软件,因为即使是经验丰富的用户也会被搞得一团糟。
/project/orphaned/:
已不再有人维护的软件包,它们已从发行版中孤立出来。
--------------------------------------------------------------------------------
5.2 在dists目录有哪些版本
通常有三个Debian发行版,它们是“stable”发行版,“testing”发行版,和“unstable”发行版.有时还有一个“frozen”
发行版,详见5.4frozen是什么
--------------------------------------------------------------------------------
5.3 象slink,potato,等等 是什么意思
它们只是一些版本代号(codenames).处于开发阶段的发行版只有版本代号,没有版本号,使用版本代号的目的在于简化建立Debian发行版镜像的
工作(如果真实目录例如unstable突然改名为stable,许多文件都没必要再次下载)。
当前,stable是一个指向Woody(即Debian GNU/Linux
3.0)的符号链接,testing是指向Sarge的符号链接。也就是说Woody是当前的stable发行版,Sarge是当前的testing发行
版。
unstable发行版是指向sid的永久符号链接,即unstable发行版总称为sid。
--------------------------------------------------------------------------------
·5.3.1 以前用过哪些代码名
已使用过的发行版代号有:buzz for release 1.1,rex for release 1.2,bo for releases
1.3.x,hamm for release 2.0,slink for release 2.1和potato for release
2.2。
--------------------------------------------------------------------------------
·5.3.2 它们源自哪里
到目前为止它们均出自Pixar的电影“玩具总动员(Toy Story)”
·Buzz(Buzz Lightyear)是个宇航员,
·Rex是只暴龙,
·Bo(Bo Peep)是个放羊的女孩,
·Hamm是个小猪攒钱罐,
·Slink(Slinky Dog)是只玩具狗,
·Sarge是位绿色塑料玩具士兵首领,
·Potato当然就是Potato Head先生,
·Woody是个牛仔,
·Sid是隔壁的男孩,那个玩具终结者。
--------------------------------------------------------------------------------
5.4 frozen是什么
当testing发行版足够成熟了,它就会被冻结(freezing),通常不再作宣传,确保尽可能少的新unstablebug进入testing
一段时间以后这个testing发行版就成为真正的frozen了,表示这个版本不再加入新代码,只进行除错工作.frozen发行版再经过几个月的测
试、更新、再冻结也称之为“循环测试”
我们将frozen发行版中可能延迟软件包或整个版本发布的错误都记录在案,一但错误总数低于可接受的最大值,frozen发行版就晋升成stable,
新版本发布了,先前发布的版本成为过期版(obsolete)详见Debian archive.
--------------------------------------------------------------------------------
5.5 sid是什么
sid或unstale是大多数软件最初上载的地方,这些软件首先要进入testing,然后在stable里发行.sid里的软件可能被发行,也可能不
被发行.
sid来自于电影“玩具总动员(Toy Story)”里的动画形象: Sid是隔壁的男孩,那个玩具终结者.
--------------------------------------------------------------------------------
5.5.1 sid的历史
过去sid并不存在,FTP站点结构有个缺点:假设当前unstable发行版中创建了某个软件开发项目,当unstable成为新的stable版之
时,便是它的发布之日。由于软件包一但发布就需要移动到新的stable目录,当众多软件开发项目移动目录时大量带宽会被吞噬掉,这个流程就显得很不切实
际,因而许多软件开发项目并没有按这个方法行事。
经过几年的研究摸索,文档管理员提出一个方案,将未获准发布的二进制文档存入名为sid的特定目录。由于这些软件尚未发布,从那时起,它们就被加入到
unstable目录树。当它们首次发布时,将会建立一个从当前stable指向sid的链接。这个方案用户听起来的确有些晕头。
有了软件包储藏池(pool)(详见5.11pool目录下是什么?
),二进制软件包均按一定规范存放于pool目录,而与发行版无直接关系,当发布新版本时,就不会再出现大量带宽被消耗的问题。(不过,大量带宽还是被开
发进程消耗了)。
--------------------------------------------------------------------------------
5.6 stable目录的内容
·stable/main/:本目录包含的软件包均是最新Debian系统发布版的正式组成部分。
这些软件包均遵循“Debian自由软件包指导”(Debian Free Software
Guidelines),它们均可以自由使用和再发行。
·stable/non-free/:本目录包含的软件包受到一定限制,发行者需遵循特殊版权要求。
例如,有些软件包的许可证禁止其用于商业发行的。有些虽可以再发行,但本身是共享软件而非自由软件。以任何方式再发行这些软件包时(例如写入光盘)必
须认真阅读有关的许可证或与所有者协商。
·stable/contrib/:本目录包含的软件包均遵循DFSG-free原则,本身也是自由发布的,但这些软件包的关联包不具有
自由发行的属性,它们位于non-free目录。
--------------------------------------------------------------------------------
5.7 testing目录的内容
处于unstable版本的Debian
Sarge通过级别测试后登记到testing目录,这些软件包必须可同时运行于所有架构,并且没有关联性问题影响到其卸载.比起在unstable中的
相应版本,它们有更少的release-critical错误。我们将testing作为更佳发布候选版本。
有关testing版本的更多信息见于http:
//ftp-master.debian.org/testing/。
--------------------------------------------------------------------------------
5.8 unstable目录的内容
unstable发行版反映了系统的最新开发进展。欢迎广大用户使用并测试这些软件包,同时也提醒你们这些软件包还不完善。使用unstable发行版的
好处就是你可以获得Debian项目的最新更新——不过新东西也会出新问题,你得好坏兼收:-)
在testing下同样有main,contrib和non-free子目录,它们的作用与stable中的一样。
--------------------------------------------------------------------------------
5.9 dists/stable/main的内容
在每个主目录树下(dists/stable/main,dists/stable/contrib,dists/stable/non-free,
dists/unstable/main/,等)按芯片架构又分了子目录,每个子目录中存放着在该芯片架构下编译的二进制软件包。
·binary-all/,存放与芯片架构无关的软件包,如Perl脚本、纯文档等。
·binary-i386/,存放运行于80x86 PC 平台的软件包。
·binary-m68k/,存放基于于Motorola 680x0 处理器的软件包。主要面向 Atari ,
Amiga,以及部分VME 计算机
·binary-sparc/,存放运行于Sun SPARCStations平台的软件包。
·binary-alpha/,存放运行于DEC Alpha 平台的软件包。
·binary-powerpc/,存放运行于 PowerPC平台的软件包。
·binary-arm/,存放运行于 ARM平台的软件包。
请注意,woody及后续版本的二进制软件包实际并没存放在这些目录中,它们存放在上一级pool目录中。目录中仍保留有索引文件(Packages和
Packages.gz)是为了向下兼容。
详见3.1可以在什么样的硬件上运行
--------------------------------------------------------------------------------
5.10 在哪里可以获取源代码?
Debian系统中的一切程序都有源代码,不仅如此,许可证条款规定系统中所有的程序必须和其源代码一起发行,或向商家索取源代码。
通常源代码存放在source目录,同时处于多个架构目录(详见5.11pool目录下是什么?
)用户不必非常熟悉FTP目录结构,想获得源代码可以试试apt-get source mypackagename命令。
有些软件包,如著名的pine,由于许可证限制,只提供源码包。例如pine详见4.10如何得到pine
contrib和non-free目录中的软件包可能不提供源代码,因为它们没有正式加入Debian系统。
--------------------------------------------------------------------------------
5.11 pool目录下是什么?
过去,软件包均放在dists目录下相应发行版的子目录中。这种做法产生了许多问题,当镜像站点进行新版本发布时大量带宽被消耗。
现在软件包均放进一个巨大的“池子(pool)”,按照源码包名称分类存放。为了方便管理,pool目录下按属性再分类(main,contrib和
non-free),分类下面再按源码包名称的首字母归档。这些目录包含的文件有:运行于各种系统架构的二进制软件包,生成这些二进制软件包的源码包。
你可以执行命令apt-cache showsrc
mypackagename,查看“Directory:”行获知每个软件包的存放位置。例如:apache软件包存放在
pool/main/a/apache/目录中。由于lib*软件包数量巨大,它们以特殊的方式归档:例如,libpaper软件包存放在
pool/main/libp/libpaper/。
诸如apt等命令访问的索引文件仍位于dists目录中,直到本文写作之时,旧发行版的软件包还没转到pool目录,所以你将看到路径的
“Filename”域中包含有发行版名称如potato或woody。
通常,你大可不必注意这些,apt和dpkg-ftp(或许)会自动处理这累事情。
--------------------------------------------------------------------------------
5.12 什么是"incoming"
上载的软件包在检查它的真实性和容许进入FTP以前首先存放于incoming目录。
通常没有人需要从这个目录安装软件。然而,在某些在紧急情况下,你可以直接从incoming目录(http://incoming.debian.org/)手工下...G签名,.changes 和
.dsc 文件中的校检码MD5sums,然后安装。
The Debian GNU/Linux FAQ [管理]
6. Debian的包管理系统
--------------------------------------------------------------------------------
6.1 什么是Debian包
软件包一般包括实现一系列命令或特殊功能所必须的所有文件.有两种类型的Debian软件包:
·二进制包,包含可执行文件,配置文件,man/info
手册,版权信息,以及其它文档.以一种Debian特有的格式分发,(详见6.2Debian软件包的格式
),通常以'.deb'作为后缀.可以使用Debian的dpkg工具解包(安装).
·源代码包,包括一个描述源代码包的.dsc文件,一个包含gzip-tar归档压缩格式的未经修改源码的.orig.tar.gz文
件,一个包含对源
代码作Debian特有修改的.diff.gz文件.可以使用dpkg-source打包和解压debian源码文档.详见手册.
软件包体系使用包维护者特制的"依赖关系(dependencies)"来安装软件.这些依赖关系被写在每个包的控制(control)文件里.例如:安
装依赖于binutils软件包的gcc
时,如果没有预先安装binutils,包管理系统(dpkg)就会停止安装gcc,并返回需要binutils的错误信息.(解决这类问题,见dpkg
(8))详见6.9包的关联 )
Debian的打包工具可用于:
·维护和管理软件包或部分软件包,
·用于大软件包的切割,如,需要使用小容量软盘来传输,
·帮助开发者构建软件包
·帮助用户进行远程(FTP)安装.
--------------------------------------------------------------------------------
6.2 Debian软件包的格式
一个Debian软件包或Debian归档文件,包含 可执行文件,库文件,附属文档.名字通常以.deb为后缀.
Debian二进制软件包内部格式描述见deb(5)帮助页面。由于这种内部格式会改变的(特别对于Debian的新旧发布版),所以要操作.deb文件
请参阅dpkg-deb(8)。
--------------------------------------------------------------------------------
6.3 为什么Debian软件包名字这么长
Debian二进制(软件)包的命名格式:<foo>_<版本号>-<Debian修订号>.deb .
注意 foo是假定的(软件)包名.作为检验,你可以通过下面的方法之一了解和软件包名称对应的一个debian的包(.deb):
·检查Debian FTP站点下的"Packages"
文件,文件中包含对于每个(软件)包的描述段,每个描述段的第一个字段就是正式包名.
·使用dpkg --info foo_VVV-RRR.deb(VVV和RRR是被查询包的版本和修订版本) 命令.
显示的内容中将包含软件包的对应名称.
VVV是指该软件开发者制定的版本号,没有什么标准格式,可能像"19990513" 和 "1.3.8pre1"一样有所不同.
RRR是Debian的修订版本号,由Debian开发者(或者创建Debian包的用户自己)指定,反映了Debian软件包的修正层次,一个新的
修正版通常在 Debian Makefile
(debian/rules)文件Debian控制文件(debian/control),安装,删除脚本(debian/p*),
或(软件)包的配置文件中作了修改
--------------------------------------------------------------------------------
6.4 Debian的控制文件
关于控制文件的详细内容参见11.1Debian GNU/Linux的其他文档
下边是一个Debian(软件)包 hello 的简单配置文件的主要内容:
包名: hello
优先级: optional
类别: devel
安装大小: 45
维护者: Adam Heath <doogie@debian.org>
平台: i386
版本: 1.3-16
依赖: libc6 (>= 2.1)
描述: The classic greeting, and a good example
The GNU hello program produces a familiar,
friendly greetingItallows nonprogrammers
to use a classic computer science tool which
would otherwise be unavailable to them.
.
Seriously, though: this is an example of
how to do a Debian package.It is the
Debian version of the GNU Project's
`hello world' program(which is itself
an example for the GNU Project).
包名(Packahe)字段给出(软件)包的名称,这是软件包工具用以识别这个包的名称,通常(单不是必须)和这个Debian(软件)包的名称的第一
个字符串相似
版本(Version )字段给出上游开发者的版本号和修正版本号,详见6.3为什么Debian包名字这么长
平台(Architecture)字段指定这个二进制包的编译硬件平台
依赖(Depends )字段给出所依赖的包的列表
安装大小(Installed-Size )字段说明安装这个包所需磁盘空间,用于安装前端显示是否有足够的空间安装此程序.
类别(Section)行给出此包在Debian FTP上的存储位置,上存储此包的目录名(详见5.1Debian的FTP上有哪些目录)
优先级(Priority),对应安装来说的重要程度,象dselect 和
console-apt一类的半智能软件可以据此对软件安装分类,详见6.7包的优先级
维护者(Maintainer)字段给出当前维护此包负责人的电子信箱.
描述(Description)字段此软件包的简要说明.
更多内容详见Debian Packaging Manual
--------------------------------------------------------------------------------
6.5 Debian的配置文件
配置文件(Conffiles)是一个配置文件列表(通常在/etc下),软件升级时不会被覆盖,以确保所含文件的本地配置不会被破坏,使得可以在系统运
行状态下升级.
运行:
dpkg --status package
查看Conffiles段来确定升级时哪些文件被保护.
--------------------------------------------------------------------------------
6.6 preinst, postinst, prerm, 和 postrm脚本
这些是软件包安装前后自动运行的可执行脚本.统称为控制文件,是Deian(软件)包的控制部分.
preinst
Debian软件包解压前执行的脚本,为正在被升级的包停止相关服务,直到升级或安装完成.(成功后执行'postinst'脚本)
postinst
主要完成软件包安装完成后所需的配置工作.通常,postinst脚本要求用户输入,和/或
警告用户如果接受默认值,应该记得按要求返回重新配置这个软件.一个(软件)包安装或升级完成后,postinst
脚本驱动命令,启动或重起相应的服务.
prerm
停止一个软件包的相关进程,删除(要卸载软件)包的相关文件前执行.
postrm
修改相关文件或连接,和/或删除(卸载软件)包所创建的文件(见6.8什么是虚拟包)
当前的所有配置文件都可在/var/lib/dpkg/info目录下找到 与foo软件包相关的命名以"foo"开头,以 "preinst",
"postinst",
等为扩展.这个目录下的foo.list文件列出了软件包安装的所有文件.(注意这些文件的位置是dpkg确定的;可能会因Debina版本而异。 )
--------------------------------------------------------------------------------
6.7 包的优先级
每个软件包都有一个维护者指定的优先级,用于包管理系统.
这些优先级是:
·必须的(Required):系统运转所必须的软件包.
包括修复系统缺陷所必须的所有工具.不能删除这些软件包,否则系统可能会崩溃,且甚至有可能无法用dpkg恢复.仅有这类包的系统是不可用的,但是它
为系统管理员启动系统安装其它软件提供足够的功能.
·重要的(Important):在任何类Unix系统上均安装有该级别软件包
没有这类包,其它的包无法在系统上正常运转或使用,Emacs , X11 , TeX 等大型应用程序不在此列.此类包构成基本系统.
·一般的(Standard ):Linux系统里的一般软件包,构成小型字符系统.
这是用户什么也不选也会默认安装的软件包.不包括大型软件,但是Emacs(与其说它是一个应用软件,不如说它是基础构件)一小部分TeX 和
LaTeX(不支持X)除外
·可选的(Optional): 软件包包含了所有的你想要安装的文件,如果你一开始不知道它是什么.或者没有特殊的需要
包括X11,所有的TeX和许多应用程序.
·额外的(Extra):这类包不是与其它高优先级的软件冲突,只有知道它的用途才可能对你有用,就是因为特别的原因而不能进入"可选"
优先级.
--------------------------------------------------------------------------------
6.8 什么是虚拟包
是指一组具有近似功能的软件的统称,例如
tin和trn都是新闻阅读程序,为系统中其它需要新闻阅读的程序提供支持.因此可以说它们都提供了"新闻阅读(news-reader)"的虚拟包
同样,smail和sendmail都提供了邮件传输代理的功能.因此说它们提供了"邮件传输代理(mail transport
agent)"的虚拟包,两者安装都可以满足其它程序对于"邮件传输代理(mail transport agent)"虚拟包的需求.
Debian提供这样一种,如果系统中提供同一虚拟包的软件了安装了多个,系统管理员可以指定一个为首选。相关的命令是update-
alternatives,更多描述详见10.10Debian对于不同喜好的支持
--------------------------------------------------------------------------------
6.9 包的关联
Debian的软件包管理系统有一套包"依赖性"概念,用以标示(一个标志符号)系统中程序A对于现存程序B的依赖程度:
·软件包A Depends
软件包B,指运行A必须安装B,某些情况下A不仅依赖于B,还依赖于它的版本.这种情况通常有最低版限制,A更依赖于B的最新版而不是特定版.
·软件包A recommends 软件包B,如果软件维护者认为用户更喜欢B提供功能支持的A.
·软件包A suggests 软件包B,如果B的某些软件与A的功能有关(通常是增强).
·软件包A 与软件包Bconflicts 指 如果系统中有B则A不能运行.通常是因为A包含了B中文件的改进而出现冲突,
"Conflicts""replaces"经常同时出现.
·软件包Areplaces软件包B,指 A安装时,B中的文件会被A的删除和覆盖
·软件包Aprovides软件包B,指A会提供B所有的功能和文件,这种机制为那些磁盘空间受限用户提供了一个方法,即只安装A中需要
的部分.
使用以上条目的更详细信息参Debian Policy Manual和策略手册.
--------------------------------------------------------------------------------
6.10 Pre-Depends什么意思
"Pre-Depends"
是一种特别的依赖关系,很多软件,不管系统中它的依赖包是否存在,dpkg都会将其解包,解包通常是指释放出包中的安装文件,如果系统中不存在依赖的包,
dpkg将会拒绝完成安装(执行它的配置动作).
但是,对于某些包,在依赖性问题解决前,dpkg甚至拒绝解包,这就称作,这种包对某些包有"Pre-depend"关系.Debian项目提供这种机制
是为了系统由a.out格式安全升级到ELF格式,这种情况对于解包要求非常严格.对于其它的重要升级这种方法也非常有用,比如对那些
“required”级并有libc关联的软件包。
更多信息,详见Debian Policy Manual.
--------------------------------------------------------------------------------
6.11 包的状态(unknown, install, remove purge 和 hold)
这些“want”标志位描述了用户打算如何操作一个软件包(既可以使用dselect的“Select”菜单,也可以直接调用dpkg)
它们的意思是:
·unknown - 用户并没指出他想对软件包进行的操作。
·install - 用户希望对软件包进行安装或升级。
·remove - 用户希望删除软件包,但不想删除它的配置文件。
·purge - 用户希望完全删除软件包,包括配置文件。
·hold - 用户希望软件包保持现状,例如,用户希望保持当前的版本状态。
--------------------------------------------------------------------------------
6.12如何锁定一个包
有两种办法锁定软件包,使用dpkg 或dselect.
使用dpkg,仅需要导出软件包选择列表:
dpkg --get-selections \* > selections.txt
然后编辑selections.txt文件,修改你要锁定的包的所在行,例如libc6将
libc6 install
改为
libc6 hold
然后存盘再把它导入dpkg数据库
dpkg --set-selections < selections.txt
使用dselect,仅需要进入[S]elect屏幕,找到要锁定的(软件)包,按下`=' 键 (或 `H').
离开[S]elect屏幕后,改动马上生效.
--------------------------------------------------------------------------------
6.13 如何安装一个source包
Debian源代码包实际上不能安装,只是解包到你欲创建二进制包的目录.
大多数二进制软件包的镜像站点都提供源代码包,如果在你的APT的sources.list文件中写入了相应的"deb-src"
源,通过运行apt-get source foo 来下载源代码包
Debian源代码包提供了所谓的构造-依赖机制,即源代码包的维护者提供了一个创建包所依赖的包的列表,创建二进制包前运行
apt-get build-dep foo
你就知道它的用处了
--------------------------------------------------------------------------------
6.14 如何从源码创建二进制包
编译源码,你需要所有的foo_*.dsc, foo_*.tar.gz 和 foo_*.diff.gz(
注意,对于由Debian开发的软件包,没有.diff.gz文件)(注:指对于foo软件包)
如果你已经安装了 dpkg-dev (软件)包 运行一下命令:
dpkg-source -x foo_version-revision.dsc
将释放包到foo-version目录.
如果仅想编译这个包,进入foo-version 目录,执行命令:
dpkg-buildpackage -rfakeroot -b
创建包(注意,需要fakeroot软件包),然后
dpkg -i ../foo_version-revision_arch.deb
来安装新创建的包.
--------------------------------------------------------------------------------
6.15 自己制作Debian包
更多细节,阅读 New Maintainers' Guide,该文档在maint-guide包中,或浏览http://www.debian.org/doc/manuals/maint-guide/。
The Debian GNU/Linux FAQ [工具]
7. Debian包的管理工具
--------------------------------------------------------------------------------
7.1 提供了哪些管理工具
--------------------------------------------------------------------------------
7.1.1 dpkg
这个主要的软件包管理工具有很多参数,常用的有:
·参数查找:dpkg --help.
·输出指定软件包的控制文件(control file )(和其它信息):dpkg --info foo_VVV-RRR.deb
·安装软件包(包括解包和配置):dpkg --install foo_VVV-RRR.deb.
·解包(但不配置):dpkg --unpack
foo_VVV-RRR.deb.注意,此操作解开的包处于不可用状态,要正常运行,一些文件还需要进一步配置.这个命令会删除这个程序的已安装版本.并
运行相关联的preinst脚本(详见6.6 Debian软件包的脚本)
·配置一个解开的包:dpkg --configure foo. 这个操作会运行相关联的postinst(详见6.6
Debian软件包的脚本)脚本,并升级conffiles中列举的文件.注意,'配置'(configure)操作使用软件包名(如
foo),而不是Debian文档文件名(如foo_VVV-RRR.deb).
·从Debian包中释放一个名为"blurf"文件(或一组名为"blurf"的文件):dpkg --fsys-tarfile
foo_VVV-RRR.deb | tar -xf - blurf*
·删除软件包(不包括它的配置文件):dpkg --remove foo.
·删除软件包(包括它的配置文件):dpkg --purge foo.
·列出包含"foo*"字符串的(软件)包的状态:dpkg --list 'foo*'.
--------------------------------------------------------------------------------
7.1.2 dselect
Debian(软件)包管理系统的菜单界面.对第一次安装和大范围升级特别有用.
dselect可以:
·引导用户选择安装或删除软件包时,确保要安装的包不与其它包冲突,使得每个(要安装的软件)包正常运行的所需的所有软件包都被安装.
·对用户所作选择的不一致和不兼容做出警告.
·确定必须安装的软件包的安装顺序.
·自动完成安装或删除
·引导用户完成每个软件包的配置.
进入dselect时,有七个菜单项,每项完成特定的功能,用户可以用上下键移动亮度条,然后按<回车>
(<enter>)键选择加亮显示的项.
接下来的显示和用户的选择有关.如果选的不是Access 或
Select,dselect就会继续执行指定的动作:如,选Remove,dselect就会删除用户在Select中的最后选择的所有软件包.
Access和Select菜单项下有更多&