当前位置: 首页 >> 开源操作系统 >> 在Debian 中使用基于源码的软件包管理
 

在Debian 中使用基于源码的软件包管理

作者:及永刚jungle@soforge.com      来源:     发表时间:2006-04-19     浏览次数:      字号:    

缘起

对于我们这些 Debian GNU/Linux 的用户来说,Debian APT 软件包管理, 让我们摆脱了软件包依赖噩梦。可是 Debian 也不完美, 由于采用二进制方式发布软件包,为了保证各个软件包之间正确的相互依赖关系, 开发人员必须进行严格地测试。这当然需要花费大量的人力和时间,因此常常造成软件发布的拖延。 另外二进制发布的软件包,虽然节省了用户的编译时间,但却让用户失去了根据自身系统对软件进行优化和设置的权利。 而开放源码的自由软件,相对于封闭源码的软件,有一个非常重要优势,就是用户能按照自己意图进行配置和优化。

Debian 的缺点是采用二进制发布软件包造成的,无法避免。但这些缺点不会出现在基于源码的发布版中。 如果能让 Debian 结合二进制和源码两种发布方式的优点,我们用户就能更加灵活地使用自由软件,享受它带给我们的乐趣。

当然我们可以自己下载软件包源码来编译,但通常需要对该软件和编译环境有充分地了解, 对于比较大的软件包,如 xorg,大部分时间将会耗费在如何编译成功的问题上。

这篇文章里,我将介绍如何在 Debian 系统里面使用 pkgsrc,一个成熟的基于源码的通用软件包管理系统。

pkgsrc 简介

pkgsrc 是 NetBSD 采用的软件包管理系统。NetBSD 以优秀的设计和支持最广泛硬件平台著称。 作为 NetBSD 的软件包管理系统,pkgsrc 同样具有 NetBSD 的优点,它不仅可以伴随 NetBSD 运行在众多的硬件平台上, 还可以用在 NetBSD 以外的操作系统里面。除了 BSD 家族,pkgsrc 还可以应用到 GNU/Linux 1、Sun Solaris、MacOS X,甚至是 MS Windows。

在 Debian 里面使用 pkgsrc,不但不影响 Debian 本身的包管理系统,它们还可以相互配合2。 比如我们使用 pkgsrc 安装 xorg,然后用 apt-get 安装 mozilla-firefox,firefox 完全可以正常的运行在 xorg 里面。

另外,由于 pkgsrc 只提供软件的 patch 和 build 方法,不会受限于各种许可证的束缚, 较 Debian 可以容纳更为广泛的软件,如 MPlayer。这对于我们用户来说,是非常方便的。

安装前的准备

首先检查现有的 Debian 系统中是否已经安装 cvs 和 libncurses-dev(或 libncurses5-dev) 两个软件包。 cvs 是用来获取和更新 pkgsrc 源码,libncurses-dev 则在安装 pkgsrc 时需要使用。

确认 /usr 目录所在分区的磁盘空间。pkgsrc 默认安装在 /usr/pkgsrc 目录里面, 通过 pkgsrc 安装的软件默认位于 /usr/pkg 目录。另外在编译时会产生大量的目标文件,所以事先应该准备足够的磁盘空间。 一般 2G 的额外空间,就可以满足日常应用程序编译的需要。也可以通过符号链接方式,将 obj 目录移到空间比较宽裕的分区。

安装 pkgsrc

获取 pkgsrc 源码有两种方式:
  • 第一种方式,下载最新的 pkgsrc 压缩包,然后解压到 /usr 目录。 压缩包可以从  ftp.NetBSD.org 或其他镜像网站下载。

  • 第二种方式,直接从 cvs 仓库检出最新的源码。获取源码的步骤为:
    # cd /usr
    # export CVS_RSH=ssh
    # cvs -z3 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout pkgsrc
    

下载完源码,就可以进入 /usr/pkgsrc 目录,执行 pkgsrc 附带的安装脚本程序:
# cd /usr/pkgsrc/bootstrap
# ./bootstrap

安装完成后,系统中新建了一个 /usr/pkg 目录,日后我们采用 pkgsrc 安装的软件包都将放在这个目录。 现在 /usr/pkg/bin 里面已经有了几个命令,其中最重要的是 bmake,它与 GNU make 作用相同, 但功能更强,以后编译和安装 pkgsrc 里面的软件包必须使用这个命令。

基本设置

首先将 /usr/pkg/bin 添加到系统的命令搜索路径中,也就是对 PATH 进行设置。 如果你用的是 bash,将下面语句加入 .bashrc 文件里面:
export PATH=/usr/pkg/bin:/usr/pkg/sbin:${PATH}

以后你可以根据自己需要逐步加入 MANPATH, INFOPATH 等环境变量。

pkgsrc/mk 目录下是所有软件包编译的设置文件,但在日常使用中,不应该直接修改这些文件, 正确的方法是通过 /etc/mk.conf 文件来设置。安装完 pkgsrc 以后,有一个默认的 mk.conf 文件位于 pkgsrc/mk/defaults/ 目录,修改 /etc/mk.conf 的时候,可以参考其中的设置变量名和里面的注释。

最初,/etc 目录下并没有 mk.conf 文件,可以自己创建一个。在这里先设置一个选项:

WRKOBJDIR=/usr/obj/pkg

它的作用是将编译时产生的目标文件,统一放在 /usr/obj/pkg 目录下面,便于日后清理。

软件包安装方法和更新

安装 pkgsrc 中的软件包,只需进入对应的 pkgsrc 目录,执行 bmake 即可。 例如,安装 pkgfind 这个软件包:
# cd /usr/pkgsrc/pkgtools/pkgfind
# bmake && bmake install

为了节省磁盘空间,在安装成功之后,可以立刻执行 bmake clean 和 bmake clean-deps 清理。

如果需要配置其他编译参数,可以在编译前直接修改软件包目录下的 Makefile。

pkgsrc 软件包每天都在更新,由于下载的源码包里面含有 cvs 信息,因此可以通过 cvs 命令来更新,例如:

# cd /usr/pkgsrc/pkgtools/pkgfind
# cvs up -dP

上面的更新方法,只更新了单个软件包,你也可以在 /usr/pkgsrc 目录下更新所有软件包。 有时,遇到编译错误的情况下,这是最有效地解决方法。

几个 pkgsrc 常用命令

与 Debian APT 软件包管理类似,pkgsrc 也有一组包管理命令,这些命令通常以 pkg 开头。 在 pkgsrc/pkgtools 目录下放有许多包管理的工具。这里简单介绍几个常用的命令。

pkg_info: 查询系统中已经安装的 pkgsrc 软件包。不加参数执行 pkg_info 命令, 功能与 Debian 里面的 dpkg -l 命令类似。
pkg_delete: 删除系统中的 pkgsrc 软件包。
pkgfind: 用关键字搜索软件包,类似 Debian 的 apt-cache search 命令。

编译辅助工具

在正式使用 pkgsrc 编译软件包之前,建议先安装几个辅助工具,这样可以更有效地使用基于源码的软件包管理。

  • devel/cpuflags: 侦测系统中 cpu 对应的 GCC 编译优化选项。安装完之后,需要在  /etc/mk.conf 中设置:
    .sinclude "/usr/pkg/share/mk/cpuflags.mk"
    

  • devel/ccache: 利用缓存技术优化编译,明显缩短编译时间。在  /etc/mk.conf 中需要设置:
    PKGSRC_COMPILER=ccache gcc
    

  • devel/distcc: 分布式编译工具。如果你的局域网内有多个计算机,且有相同的 gcc 编译环境, 这个工具可以充分利用计算机计算资源。它的设置方法,见这个软件包里面的说明。

软件包安装实例:  xorg

Debian 当前(2005年4月)使用的 X 仍是 XFree86 4.3,如果你对 xorg 感兴趣, 可以通过 pkgsrc 来安装。另外在 pkgsrc 里面,你还可以尝试一下 XFree86 4.4 ;-)

安装 xorg 之前,首先要在 mk.conf 中进行设置,声明 X 使用的是 xorg。

X11_TYPE=xorg

xorg 由多个软件包组成,pkgsrc 中将这样的软件放在 meta-pkgs 目录, 除了 xorg, XFree86、gnome、kde 都能用这种 meta-pkg 方式安装。

安装 meta-pkg 软件包的方法,与其他软件包没有什么不同,只是通过软件包依赖关系的描述文件, 让用户一次就能安装将多个软件包。

# cd /usr/pkgsrc/meta-pkgs/xorg
# bmake && bmake install

使用 xorg 之前,首先要将 xorg 的路径 /usr/pkg/xorg/bin 加入到搜索路径中, 如果你的系统中还保留着 XFree86,应该将 xorg 放在最前面。可以通过 which X 命令检查。

配置 xorg 可以使用 Xorg -configure 命令,它会在 $HOME 目录下产生一个 xorg.conf.new 文件, 如果 xorg 测试正常,将它改名为 xorg.conf 并复制到 /etc/X11/ 目录下。

其他

pkgsrc 维护着一个数据库,用于监督软件包的安全漏洞,用户可以通过它了解已安装软件包的安全状况。 pkgsrc/security/audit-packages 软件包中提供了相应工具,可以方便地使用这种机制。安装完 audit-packages, 我们就可以使用 download-vulnerability-list 命令下载软件包安全漏洞列表,然后用 audit-packages 命令侦测并报告 已安装软件包的安全状况,依据所报告的信息,我们就能及时更新有漏洞的软件包。

pkgsrc 有一个 WIP 项目, 存放着正在测试,处于候选状态的软件包。你可以根据需要,下载 wip 将其放到 /usr/pkgsrc/wip 目录下, 以后里面的软件就可以像其他软件包一样更新、安装和使用。

如果你觉得从 ftp.NetBSD.org 下载软件包太慢,可以在 /etc/mk.conf 中设置改用镜像站点,例如:

# Mirror Site
#
MASTER_SITE_OVERRIDE = ftp://ftp.iij.ad.jp/pub/NetBSD/packages/distfiles/

MASTER_SITE_BACKUP = \
        ftp://ftp.allbsd.org/pub/NetBSD/packages/distfiles/ \
        ftp://ftp.NetBSD.org/pub/NetBSD/packages/distfiles/ \
        ftp://ftp.iij.ad.jp/pub/FreeBSD/distfiles/ \
        ftp://ftp.freebsdchina.org/pub/FreeBSD/distfiles/

相关链接

反馈

如果你发现本文中的错误,或者对 Debian 下使用 pkgsrc 有兴趣, 请发邮件到 jungle@soforge.com 与我联络,欢迎一起讨论。



脚注

... 还可以应用到 GNU/Linux1
有一个专门使用 pkgsrc 作为软件包管理系统的 Linux 发行版: Voltalinux
... 本身的包管理系统,它们还可以相互配合2
取决于软件包的依赖性描述。

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •