Pkg

来自MagicLinux 百科
Sejishikong讨论 | 贡献2021年12月17日 (五) 03:15的版本 (创建页面,内容为“== MagicLinux的包管理系统== ===一、写在前面(基本的认识)=== ====1、关于软件包,和包管理系统 ==== 我们使用计算机并不是像使用镰刀扳手那样直接和计算机硬件打交道。而是通过运行在硬件之上的软件所提供的计算能力和交互界面使用计算机。而计算机上软件(连同相应的文档)为了方便使用和管理被人为的分成了一个个的小集合。每个集合在开发…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

MagicLinux的包管理系统

一、写在前面(基本的认识)

1、关于软件包,和包管理系统

我们使用计算机并不是像使用镰刀扳手那样直接和计算机硬件打交道。而是通过运行在硬件之上的软件所提供的计算能力和交互界面使用计算机。而计算机上软件(连同相应的文档)为了方便使用和管理被人为的分成了一个个的小集合。每个集合在开发、安装、维护、使用的时候相对的独立于其他的集合,这样的“程序和文档”的集合我们称他们为软件包。这样的“包”,可以是一个实实在在的单一文件;也可以是一个抽象的文件集合,文件分散在系统的不同地方,但逻辑上当成一个整体,一般靠一个“列表”来把它们维系在一起。大多数情况下我们讲的是后者。

在软件包被编译之前我们称呼它为源代码包,编译后称为二进制包。一个软件包从它诞生到落户到用户的系统发挥他的价值,再到它功成身退离开用户的系统要几经变化。就像蚕一样从卵,到蚕宝宝,吐丝结茧,再到化娥,最后完成它的使命。软件包也要经历开发,编译,调试,源代码形式的分发,制作成二进制包,二进制形式的分发,发现问题,打补丁,再次分发,稳定版软件安装到用户系统,配置使用,最后卸载剔除等一系列过程。


软件包的一系列变化过程都需要人类劳动的投入。计算机的长处就是能“自动化”,也就是减少这种过程中人的劳动投入,并在不同的人手上快速实现某个过程的重现。因此人们开发了一系列的软件来协助人们完成软件这种不同状态的变化,每个发行版本都有一个特定的这类软件的集合。这样的一套软件以及相应的负责存储和分发软件的服务器和数据库就构成了包管理系统。

2、管理软件包的方式和相应的包管理系统

有一句话叫“条条大路通罗马”,要达到同一目的有许多的途径来完成。而且很多时候,人们大体相同的目的背后还包容着各种细节上的差别。在管理软件包上,就有不同的方式,相应的形成了不同的软件包的管理系统。


从某种意义上讲,每个大的社区发行版本,在他的包管理系统上都是有自己的相应特色的。很多人在选择发行版本的时候,对包管理方式的选择的考虑占了很大的比重的。(当然,派生的发行版本相应的继承了相应的管理方式,但派生版本相对规模要小很多)。


软件包管理方式得区别主要包括:

1)源代码的获取和分发方式,源代码包中编译控制信息和包管理信息的添加方法。

2)编译和打包成二进制包的方法。

3)二进制包的分发。

4)用户系统端软件包的添加、剔除、升级、替换、查询等的管理方式。


比如ArchLinux的包管理方式可以大体如下描述:

1)发行版的维护者在CSV服务器(或AUR上)集中存储编译控制信息和包管理信息(PKGBUILD)

2)打包的人用ABS(或其他方式)获取编译控制信息和包管理信息文件,源代码由打包的人从软件开放者的发布点直接下载 。

3) 用pkgbuild工具编译打包形成二进制包,二进制包携带相应的包管理信息。

4)二进制包提交到发行版的“源”服务器上,提供给其他用户。或直接在本地供自己使用。

5)用户用pacman从源上获取二进制包,并安装到自己的系统(本地的包直接安装)。

6)用户用pacman进行本地系统中的包管理。

(其他发行版本的请查询各发行版本的网站,本人不太熟悉不加评论了,可以参考:Comparing Linux/UNIX Binary Package Formats;http://kitenet.net/~joey/pkg-comp/


相比之下MagicLinux的包管理方式是这样的:

1)源代码由打包的人从软件开放者的发布点直接下载,打包的人制作编译控制信息和包管理信息文档

2)打包的人用rpmbuild构建添加了编译控制信息和包管理信息文档的源码包(srcrpm)

3) 打包的人接着生成二进制包(rpm)。

4)打包的提交编译控制信息和包管理信息文档(spec)到SVN服务器集中存储,提交srcrpm和rpm包到apt服务器,或放到本地。

5)用户用apt从服务下载二进制包并安装。(本地的包直接安装)。

6)用rpm进行本地系统中的包管理。

相应的MagicLinux的包管理系统由: apt服务器 , apt客户端软件包,rpm软件包,SVN服务器,svn客户端构成。

后面将按以上顺序介绍MagicLinux的方式,并介绍相应工具的使用。


二、如何创建自己的MagicLinux RPM包

1 制作编译控制信息和包管理信息文档

MagicLinux 用的是RPM和SRC.RPM包来分发软件包,使用的是spec文档来作为编译控制信息和包管理信息文档。

你可以从MagicLinux的SVN服务器上获得已有的包的spec文件和相关的补丁文件。

http://svn.magiclinux.org/magiclinux

下面介绍spec文档的制作:

[待续]

2 建立源码的src.rpm包和二进制的rpm包

三、 如果您要分享您的作品

当您完成了您的打包工作,很可能十分愿意和别人分享您的劳动成果。您有几种选择:

1.直接在论坛或邮件列表上发布您的 spec 文件、补丁和源代码包的下载地址。如果您需要服务器空间上传您的作品,请与开发组的人员联系。有了这些东西,别人很容易在自己的系统上构建他自己的 src.rpm 和 rpm 包。当然,如果可能,您也可以发布您的 src.rpm 和 rpm 包。但有一点需要注意的是,rpm 包对其编译的环境是有一定依赖的,您的 rpm 包别人使用起来可能会有问题。

2.如果您有服务器资源,并且有足够的热情,可以考虑建设一个 MUC <MagicLinux Users Club> 作为 MagciLinux 用户交流和存储资源的地方。您还可以为 MagicLinux 架设第三方 apt 软件仓库。这些资源,相对于核心开发组所发布和管理的比较,要求可以不那么严谨,但可以补充官方仓库的不足,满足一些特定需要。

3.核心开发组成员可以直接向 MagicLinux 仓库提交自己的作品。对于外围开发人员,如果您打的包质量较高,并且符合规范,可以通过核心开发人员提交进 MagicLinux 软件仓库,这样大家可以直接用 apt 安装您打好的包。一般外围开发人员打包的作品需要先公开测试,如果没有问题,核心开发者经过审阅和修订,在专门的服务器上重新打包后会加入仓库,以保证打好的包依赖的系统环境和最近发布的系统一致。如果外围参与者工作热情足够稳定,技术足够成熟,有可能被接受为核心组成员,核心组成员可以拥有访问中央编译服务器的权限,那时您将体验到服务器并行编译极速如飞的快感。

关于要提交的包的制作规范参见:

http://www.linuxfans.org/bbs/thread-86980-1-1.html

http://www.linuxfans.org/bbs/thread-179653-1-1.html

参考的文章:

1.Debian 的软件包管理系统介绍;etony C.F.AN [email protected] ;http://man.ddvip.com/linux/debian/Debian_Package/Debian_Package.html

2.Debian Reference 章 6 - Debian软件包管理;Osamu Aoki [email protected] ;http://debian.linuxsir.org/book/reference/lyoo/ch-package.html

3.rpm 建包原理;kde (www.linuxfans.org) ; http://tel.linuxfans.org/bbs/thread-86980-1-1.html

4.ABS - The Arch Build System; http://wiki.archlinux.org/index.php/ABS_-_The_Arch_Build_System

5.Pacman; http://wiki.archlinux.org/index.php/Pacman

6.软件安装之RPM的安装技巧 ; http://wiki.magiclinux.org/index.php/RPM

7.用 RPM 打包软件 ; Dan Poirier ([email protected]), 软件工程师, IBM ;http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part1/index.html