Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > 两种主要的打包格式
【标  题】:两种主要的打包格式
【关键字】:
【来  源】:http://www.cublog.cn/u/12592/showart.php?id=157054

两种主要的打包格式

Your Ad Here

两种主要的打包格式

Linux 发行版使用的打包格式主要有两种:Redhat Package Manager (RPM) 和 Debian (DEB)。两者的用途差不多,而具体的方法不同。总的来说,两者都是“增强的”文件档案格式。这些包格式提供的增强包括:版本号注释、应用程序对其他应 用程序或库的依赖性、打包工具的可读性描述、管理安装、升级和卸载的打包工具通用机制。

在 DEB 文件中,嵌套的配置文件 control 包含大多数包元数据。而 RPM 文件中则是 spec。以这两种格式创建包的完整细节超出了本教程的范围,这里仅作基本介绍。



回页首


.deb 文件中包括什么?

DEB 包使用存档工具和 tar 的近亲 ar(或某种使用 ar 的更高级的工具)创建。因此可使用 ar 查看 .deb 文件的内容。通常使用更高级的工具如 dpkgdpkg-debapt-get 与 DEB 包打交道。比如:


% ar tv unzip_5.51-2ubuntu1.1_i386.deb
rw-r--r-- 0/0 4 Aug 1 07:23 2005 debian-binary
rw-r--r-- 0/0 1007 Aug 1 07:23 2005 control.tar.gz
rw-r--r-- 0/0 133475 Aug 1 07:23 2005 data.tar.gz

文件 debian-binary 只包括 DEB 版本号(目前为 2.0)。档案 data.tar.gz 包含实际的应用程序文件 —— 可执行文件、文档、手册、配置文件,等等。

档案 control.tar.gz 从打包的角度来看最有趣。我们来看看这个 DEB 包:


% tar tvfz control.tar.gz
drwxr-xr-x root/root 0 2005-08-01 07:23:43 ./
-rw-r--r-- root/root 970 2005-08-01 07:23:43 ./md5sums
-rw-r--r-- root/root 593 2005-08-01 07:23:43 ./control

与预料的一样,md5sums 包含所有分发文件的加密散列值用于验证。元数据包含在 control 文件中。多数情况下,可能会发现或希望在 control.tar.gz 中包含名为 postinstprerm 的脚本,分别用于在安装后和删除前执行某些步骤。



回页首


创建 DEB control 文件

安装脚本可以做 shell 脚本能够做的任何事情(看看现有包中的一些例子就知道了)。但是这些脚本是可选的,常常不需要或者没有。.deb 包需要的是 control 文件。该文件的格式包括各种元数据字段,最好用一个例子来说明:


% cat control
Package: unzip
Version: 5.51-2ubuntu1.1
Section: utils
Priority: optional
Architecture: i386
Depends: libc6 (>= 2.3.2.ds1-4)
Suggests: zip
Conflicts: unzip-crypt (<< 5.41)
Replaces: unzip-crypt (<< 5.41)
Installed-Size: 308
Maintainer: Santiago Vila <sanvila@debian.org>
Description: De-archiver for .zip files
InfoZIP's unzip program. With the exception of multi-volume archives
(ie, .ZIP files that are split across several disks using PKZIP's /& option),
this can handle any file produced either by PKZIP, or the corresponding
InfoZIP zip program.
.
This version supports encryption.

基本上,除了自定义的数据值以外,您的 control 文件应该和这个差不多。对非 CPU 专用包,无论是脚本、纯文档或源代码,都使用 Architecture: all



回页首


制作 DEB 包

创建 DEB 包要使用工具 dpkg-deb。我们不可能讨论打包的所有细节,但基本的思路是,创建一个工作目录 ./debian/,然后在运行 dpkg-deb 之前将所有需要的内容放入其中。可能还需要设置文件的权限以便适应安装时需要的状态。比如:


% mkdir -p ./debian/usr/bin/
% cp foo-util ./debian/usr/bin # copy executable/script
% mkdir -p ./debian/usr/share/man/man1
% cp foo-util.1 ./debian/usr/share/man/man1 # copy the manpage
% gzip --best ./debian/usr/share/man/man1/foo-util.1
% find ./debian -type d | xarg chmod 755 # set dir permissions
% mkdir -p ./debian/DEBIAN
% cp control ./debian/DEBIAN # first create a matching 'control'
% dpkg-deb --build debian # create the archive
% mv debian.deb foo-util_1.3-1all.deb # rename to final package name



回页首


关于创建 DEB 包的进一步说明

上一节中可以看到,./debian/ 下的本地目录结构是为了和预期的安装结果相匹配。要创建一个好的包,还有几点值得注意。

  • 通常应该创建一个 ./debian/usr/share/doc/foo-util/copyright(根据包名调整)文件作为发行版的一部分。
  • 建立 ./debian/usr/share/doc/foo-util/changelog.gz 和 ./debian/usr/share/doc/foo-utils/changelog.Debian.gz 这两个文件也是不错的做法。
  • 工具 lintian 可以检查 DEB 包中有问题的特性。lintian 提出的问题不是每个都必须修改,但如果希望分发的范围更广,最好修正所有这些问题。
  • 工具 fakeroot 可以帮助正确的所有者进行打包。通常目标希望工具作为 root 安装,而不是恰好生成包的某个用户(lintian 会对此提出警告)。可使用如下的命令:

    % fakeroot dpkg-deb --build debian



回页首


.rpm 文件包括什么内容?

创建包时,RPM 采取了和 DEB 略有不同的策略。它的配置文件称为 spec 而不是 control,而且 spec 文件的内容也比 control 文件多。安装前后、卸载前和安装本身需要的所有步骤的细节都包含在 spec 配置内嵌的脚本文件中。事实上,spec 格式甚至提供了宏和通用动作。

如果需要创建 RPM 包,可使用 rpm -b 工具程序。比如:


% rpm -ba foo-util-1.3.spec # perform all build steps

包的构建过程不依赖于 DEB 中那些特殊命名的目录,而是更复杂的 spec 文件中的指令。



回页首


创建 RPM 元数据

RPM 中的主要元数据和 DEB 中的非常类似。比如,foo-util-1.3.spec 可能包含如下所示的内容:


# spec file for foo-util 1.3
Summary: A utility that fully foos
Name: foo-util
Version: 1.3
Release: 1
Copyright: GPL
Group: Application/Misc
Source: ftp://example.com/foo-util.tgz
URL: http://example.com/about-foo.html
Distribution: MyLinux
Vendor: Acme Systems
Packager: John Doe <jdoe@acme.example.com>

%description
The foo-util program is an advanced fooer that combines the
capabilities of OneTwo's foo-tool and those in the GPL bar-util.



回页首


RPM 中的脚本

RPM spec 文件中的一些段可以包含一些很小的 shell 脚本。其中包括:

  • %prep:为准备构建而要执行的步骤,比如清除以前的(部分)版本。通常下面的宏很有用:

    %prep
    %setup

  • %build:实际构建工具的步骤。如果使用 make 工具,可能如下所示:

    %build
    make

  • %install:安装工具的步骤。如果使用 make,如下所示:

    %install
    make install

  • %files必须 包含属于该包的文件列表。即便 Makefile 可能使用这些文件,包管理器程序(rpm)也不会知道它们,除非将它们包含在这里:

    %files
    %doc README
    /usr/bin/foo-util
    /usr/share/man/man1/foo-util.1
linux shell 中 eval 工具的作用:【上一篇】
some linux command tips:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 透明flash源码
  • 破解 Composer for Ring Tone 手机铃声编辑软件(1)
  • Office 2000风格的停泊、智能型菜单的实现
  • jsp内建对象及其方法
  • 请大家将第四天的课件作品发布于此,令外,遇到的问题也发
  • delphi部署注意事项
  • Solaris命令大全
  • Dreamweaver 4 简明教程(三、制作前的准备工作——定义网站)
  • 实例讲解Windows 2003分区增容功能
  • 1Z031第十一章 管理表
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.