站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Debian/Debian 的包管理系统
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
{{Debian top}} ==什么是 [[Debian]] 包== [[软件]]包一般包括实现一系列命令或特殊功能所必须的所有文件. 有两种类型的 Debian 软件包: *[[二进制]]包, 包含可执行文件, 配置文件, man/info 手册, 版权信息, 以及其它文档. 以一种 Debian 特有的格式分发, 通常以 '.deb' 作为后缀. 可以使用 Debian 的 dpkg 工具解包安装 *[[源代码]]包, 包括一个描述源代码包的 .dsc 文件, 一个包含 gzip-tar 归档压缩格式的未经修改源码的 .orig.tar.gz 文件, 一个包含对源代码作Debian特有修改的 .diff.gz 文件. 可以使用 dpkg-source 打包和解压 debian 源码文档. 软件包体系使用包维护者特制的 "依赖关系(dependencies)" 来安装软件. 这些依赖关系被写在每个包的 控制(control) 文件里. 例如: 安装依赖于 binutils 软件包的 gcc 时,如果没有预先安装 binutils, 包管理系统 (dpkg) 就会停止安装 gcc, 并返回需要 binutils 的错误信息. Debian 的打包工具可用于: *维护和管理软件包或部分软件包, *用于大软件包的切割, 如, 需要使用小容量软盘来传输, *帮助开发者构建软件包, 并且帮助用户进行远程([[FTP]])安装. ==Debian 软件包的格式== 一个 Debian "软件包", 或 Debian 归档文件, 包含可执行文件, 库文件, 附属文档. 名字通常以 .deb 为后缀. 由于这种内部格式会改变的(特别对于Debian GNU/Linux 的主发行版), 所以通常使用 dpkg-deb(1) 操作.deb文件. ==为什么 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/p*), 或软件包的配置文件中作了修改. ==Debian 的控制文件是什么== 下边是一个 Debian 软件包 hello 的简单配置文件的主要内容: *包名: hello *优先级: optional *类别: devel *安装大小: 45 *维护者: Adam Heath <doogie@debian.org> *平台: i386 *版本: 1.3-16 *依赖: libc6 (>= 2.1) *描述: <pre>The classic greeting, and a good example The GNU hello program produces a familiar, friendly greeting. It allows 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).</pre> *包名(Packahe)字段给出软件包的名称, 这是软件包工具用以识别这个包的名称, 通常(单不是必须)和这个 Debian 软件包的名称的第一个字符串相似. *版本(Version)字段给出上游开发者的版本号和修正版本号 *平台(Architecture)字段指定这个二进制包的[[编译]][[硬件]]平台. *依赖(Depends)字段给出所依赖的包的列表. *安装大小(Installed-Size)字段说明安装这个包所需磁盘空间, 用于安装前端显示是否有足够的空间安装此程序.. *类别(Section)行给出此包在Debian FTP上的存储位置,上存储此包的目录名 *优先级(Priority), 对应安装来说的重要程度, 象 dselect 和 console-apt 一类的半智能软件可以据此对软件安装分类 *维护者(Maintainer)字段给出当前维护此包负责人的[[电子信箱]]. *描述(Description)字段此软件包的简要说明. ==Debian 的配置文件== 配置文件(Conffiles)是一个配置文件列表(通常在 /etc 下), 软件升级时不会被覆盖, 以确保所含文件的本地配置不会被破坏, 使得可以在系统运行状态下升级. 运行: dpkg --status package 查看 "Conffiles" 段来确定升级时哪些文件被保护. ==Debian 的 preinst, postinst, prerm, 和 postrm [[脚本]]== 这些是软件包安装前后自动运行的可执行脚本. 统称为控制文件, 是 Deian 软件包的"控制"部分.. 它们是: *preinst Debian软件包(".deb")解压前执行的脚本, 为正在被升级的包停止相关服务,直到升级或安装完成.(成功后执行 'postinst' 脚本). *postinst 主要完成软件包(".deb")安装完成后所需的配置工作. 通常, postinst 脚本要求用户输入, 和/或警告用户如果接受默认值, 应该记得按要求返回重新配置这个软件. 一个软件包安装或升级完成后, postinst 脚本驱动命令, 启动或重起相应的服务. *prerm 停止一个软件包的相关进程, 要卸载软件包的相关文件前执行.T. *postrm #修改相关文件或连接, 和/或卸载软件包所创建的文件 #当前的所有配置文件都可在 /var/lib/dpkg/info 目录下找到, 与 foo 软件包相关的命名以 "foo" 开头,以 "preinst", "postinst", 等为扩展.这个目录下的 foo.list 文件列出了软件包安装的所有文件.(注意这些文件的位置是dpkg确定的;可能会因Debina版本而异) ==包的优先级== 每个软件包都有一个维护者指定的优先级, 用于包管理系统. 这些优先级是: *必须的(Required): 系统运转所必须的软件包. 包括修复系统缺陷所必须的所有工具. 不能删除这些软件包, 否则系统可能会崩溃, 且甚至有可能无法用 dpkg 恢复. 仅有这类包的系统是不可用的, 但是它为系统[[管理员]]启动系统安装其它软件提供足够的功能. *重要的(Important): 在任何类 [[Unix]] 系统上均安装有该级别软件包. 没有这类包, 其它的包无法在系统上正常运转或使用, [[Emacs]] , X11 ,[[TeX]] 等大型应用程序不在此列. 此类包构成基本系统. *一般的(Standard): Linux 系统里的一般软件包, 构成小型字符系统. 这是用户什么也不选也会默认安装的软件包. 不包括大型软件, 但是 Emacs(与其说它是一个[[应用软件]],不如说它是基础构件)一小部分 TeX 和 LaTeX(不支持X)除外. *可选的(Optional): 软件包包含了所有的你想要安装的文件, 如果你一开始不知道它是什么. 或者没有特殊的需要. 这包括 X11, 所有的 TeX 和许多[[应用程序]]. *额外的(Extra): 这类包不是与其它高优先级的软件冲突, 只有知道它的用途才可能对你有用, 就是因为特别的原因而不能进入"可选"优先级. ==什么是虚拟包== 是指一组具有近似功能的软件的统称, 例如 tin 和 trn 都是新闻阅读程序, 为系统中其它需要新闻阅读的程序提供支持. 因此可以说它们都提供了"新闻阅读(news-reader)"的虚拟包. 同样, smail 和 sendmail 都提供了邮件传输代理的功能. 因此说它们提供了"邮件传输代理(mail transport agent)"的虚拟包,两者安装都可以满足其它程序对于"邮件传输代理(mail transport agent)"虚拟包的需求. Debian 提供这样一种, 如果系统中提供同一虚拟包的软件了安装了多个, 系统管理员可以指定一个为首选. 相关的命令是 update-alternatives ==包的关联== Debian 的软件包管理系统有一套包"依赖性"概念, 用以标示(一个标志符号)系统中程序 A 对于现存程序 B 的依赖程度: *软件包 A depends 软件包 B, 指运行 A 必须安装 B, 某些情况下 A 不仅依赖于 B, 还依赖于它的版本. 这种情况通常有最低版限制, A 更依赖于 B 的最新版而不是特定版. *软件包 A recommends 软件包 B, 如果软件维护者认为用户更喜欢 B 提供功能支持的 A. *软件包 A suggests 软件包 B, 如果 B 的某些软件与 A 的功能有关(通常是增强). *软件包 A 与软件包 B conflicts 指如果系统中有 B 则 A 不能运行. 通常是因为 A 包含了 B 中文件的改进而出现冲突, "Conflicts" "replaces" 经常同时出现. *软件包 A replaces 软件包 B, 指 A 安装时, B 中的文件会被 A 的删除和覆盖. *软件包 A provides 软件包 B, 指 A 会提供 B 所有的功能和文件, 这种机制为那些磁盘空间受限用户提供了一个方法, 即只安装 A 中需要的部分. Pre-Depends 什么意思== "Pre-Depends" 是一种特别的依赖关系, 很多软件, 不管系统中它的依赖包是否存在, dpkg 都会将其(即, .deb 文件)解包, 解包通常是指释放出包中的安装文件, 如果系统中不存在依赖的包, dpkg 将会拒绝完成安装(执行它的"配置"动作). 但是, 对于某些包, 在依赖性问题解决前, dpkg 甚至拒绝解包, 这就称作, 这种包对某些包有 "Pre-depend" 关系. Debian 项目提供这种机制是为了系统由 a.out 格式安全升级到 ELF 格式, 这种情况对于解包要求非常严格. 对于其它的重要升级这种方法也非常有用, 比如对那些 "required" 级并有 LibC 关联的软件包. *包的状态( unknown, install, remove purge 和 hold)? 这些 "want" 标志位描述了用户打算如何操作一个软件包(既可以使用 dselect 的 "Select" 菜单,也可以直接调用dpkg). 它们的意思是: *unknown - 用户并没指出他想对软件包进行的操作 *install - 用户希望对软件包进行安装或升级 *remove - 用户希望删除软件包, 但不想删除它的配置文件. *purge - 用户希望完全删除软件包, 包括配置文件. *hold - 用户希望软件包保持现状, 例如, 用户希望保持当前的版本状态. ==如何锁定一个包== 有两种办法锁定软件包, 使用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 屏幕后,改动马上生效. ==如何安装一个 source 包== Debian 源代码包实际上不能"安装", 只是解包到你欲创建二进制包的目录. 大多数二进制软件包的镜像站点都提供源代码包, 如果在你的 APT 的 sources.list(5) 文件中写入了相应的 "deb-src" 源, 通过运行 apt-get source foo 来下载源代码包 Debian 源代码包提供了所谓的构造-依赖机制, 即源代码包的维护者提供了一个创建包所依赖的包的列表, 创建二进制包前运行 apt-get build-dep foo 你就知道它的用处了. ==如何从源码创建二进制包== 编译源码, 你需要所有的ffoo_*.dsc, foo_*.tar.gz 和 foo_*.diff.gz (注意, 对于由 Debian 开发的软件包, 没有 .diff.gz 文件)(注: 指对于 foo 软件包). 完成后(如何安装一个 source 包?, 第 6.13 节), 如果你已经安装了 dpkg-dev (软件)包,运行一下命令: dpkg-source -x foo_version-revision.dsc 将释放包到 foo-version 目录. 如果仅想编译这个包,进入 foo-version 目录, 执行命令 dpkg-buildpackage -rfakeroot -b 创建包(注意, 需要 fakeroot package 软件包), 然后 dpkg -i ../foo_version-revision_arch.deb 来安装新创建的包. {{Debian}} ==参考来源== http://www.debian.org/doc/FAQ/ch-getting.zh-cn.html [[category:Debian|D]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:Debian
(
编辑
)
模板:Debian top
(
编辑
)