|
|
51CTO旗下网站
|
|
移动端

如何在Linux上使用pkgsrc

NetBSD 以能在几乎所有平台上运行而闻名,但你知道它第二有名的 pkgsrc 包管理器吗?像 NetBSD 一样,pkgsrc 基本上可以在任何系统上运行,或者至少在任意 Unix 和类 Unix 的系统上上运行。

作者:Seth Kenlon来源:Linux中国|2019-11-26 16:58

如何在Linux上使用pkgsrc

NetBSD 的软件包管理器通用、灵活又容易。下面是如何使用它。

NetBSD 以能在几乎所有平台上运行而闻名,但你知道它第二有名的 pkgsrc 包管理器吗?像 NetBSD 一样,pkgsrc 基本上可以在任何系统上运行,或者至少在任意 Unix 和类 Unix 的系统上上运行。你可以在 BSD、Linux、Illumos、Solaris 和 Mac 上安装 pkgsrc。它总共支持 20 多种操作系统。

为什么使用 pkgsrc?

除了 MacOS 之外,所有 Unix 操作系统均自带包管理器。你不一定需要 pkgsrc,但这可能是你想尝试的三个重要原因:

  • 打包。如果你对打包感到好奇,但尚未尝试自己创建一个软件包,那么 pkgsrc 是一个相对简单的系统,尤其是如果你已经熟悉 Makefile 和类似 GNU Autotools 之类的构建系统时。
  • 通用。如果你使用多个操作系统或发行版,那么可能会遇到每个系统的包管理器。你可以在不同的系统上使用 pkgsrc,以便你为一个系统打包了程序,就为所有系统打包了。
  • 灵活。在许多打包系统中,如何选择二进制包或源码包并不总是很明显。使用 pkgsrc,区别很明显,两种安装方法都一样容易,并且都可以为你解决依赖关系。

如何安装 pkgsrc

无论你使用的是 BSD、Linux、Illumos、Solaris 还是 MacOS,安装过程都基本相同:

  1. 使用 CVS 检出 pkgsrc 树
  2. 引导 pkgsrc 系统
  3. 安装软件包

使用 CVS 检出 pkgsrc 树

在 Git 和 Subversion 之前,就有了 CVS。要检出代码你无需了解 CVS 太多,如果你习惯 Git,那么可以将检出checkout称为克隆clone。当你用 CVS 检出 pkgsrc 时,你就下载了详细说明如何构建每个软件包的“配方recipes”。它有很多文件,但是它们都很小,因为你实际上并没有拉取每个包的源码,而只有按需构建时需要的构建基础架构和 Makefile。使用 CVS,你可以轻松地在新版本发布时更新 pkgsrc 检出。

pkgsrc 文档建议将其源码树放在 /usr 目录下,因此你必须使用 sudo(或成为 root)运行此命令:

  1. $ cd /usr
  2. $ sudo cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -r pkgsrc-2019Q3 -P pkgsrc

在我撰写本文时,最新版本是 2019Q3。请检查 pkgsrc.org 主页的新闻部分或 NetBSD文档,以确定最新版本。

引导 pkgsrc

pkgsrc 树复制到你的计算机后,你会看到一个充满构建脚本的 /usr/pkgsrc 目录。在使用之前,你必须引导 pkgsrc,以便你可以轻松地访问构建和安装软件所需的相关命令。

引导 pkgsrc 的方式取决于你所使用操作系统。

对于 NetBSD,你只需使用捆绑的引导器:

  1. # cd pkgsrc/bootstrap
  2. # ./bootstrap

在其他系统上,还有更好的方法,包括一些自定义功能,它是由 Joyent 提供的。要了解运行的确切命令,请访问 pkgsrc.joyent.com。比如,在 Linux(Fedora、Debian、Slackware 等)上:

  1. $ curl -O https://pkgsrc.joyent.com/packages/Linux/el7/bootstrap/bootstrap-trunk-x86_64-20170127.tar.gz
  2. $ BOOTSTRAP_SHA="eb0d6911489579ca893f67f8a528ecd02137d43a"

尽管路径暗示文件适用于 RHEL 7,但二进制文件往往与所有(最前沿的 Linux 发行版)兼容。如果你发现二进制文件与你的发行版不兼容,你可以选择从源码构建。

验证 SHA1 校验和:

  1. $ echo "${BOOTSTRAP_SHA}" bootstrap-trunk*gz > check-shasum
  2. sha1sum -c check-shasum

你还可以验证 PGP 签名:

  1. $ curl -O https://pkgsrc.joyent.com/packages/Linux/el7/bootstrap/bootstrap-trunk-x86_64-20170127.tar.gz.asc
  2. $ curl -sS https://pkgsrc.joyent.com/pgp/56AAACAF.asc | gpg --import
  3. $ gpg --verify ${BOOTSTRAP_TAR}{.asc,}

当你确认你已有正确的引导套件,将其安装到 /usr/pkg

  1. sudo tar -zxpf ${BOOTSTRAP_TAR} -C /

它为你提供了通常的 pkgsrc 命令。将这些位置添加到你的 PATH 环境变量中

  1. $ echo "PATH=/usr/pkg/sbin:/usr/pkg/bin:$PATH" >> ~/.bashrc
  2. $ echo "MANPATH=/usr/pkg/man:$MANPATH" >> ~/.bashrc

如果你宁愿使用 pkgsrc 而不依赖于 Joyent 的构建,那么只需运行 pkgsrc 源码树的引导脚本即可。在运行特定于系统的脚本之前,请先阅读 bootstrap 目录中相关 README 文件。

如何在Linux上使用pkgsrc

Bootstrapping pkgsrc on NetBSD

如何使用 pkgsrc 安装软件

使用 pkgsrc 安装预编译的二进制文件(就像使用 DNF 或 Apt 一样)是很容易的。二进制安装的命令是 pgkin,它有自己的专门网站 pkgin.net。对于任何用过 Linux 的人来说,这个过程应该感觉相当熟悉。

要搜索 tmux 包:

  1. $ pkgin search tmux

要安装 tmux 包:

  1. $ sudo pkgin install tmux

pkgin 命令的目的是模仿典型的 Linux 包管理器的行为,因此有选项可以列出可用的包、查找包提供的特定可执行文件,等等。

如何使用 pkgsrc 从源码构建

然而,pkgsrc 真正强大的地方是方便地从源码构建包。你在第一步中检出了所有 20000 多个构建脚本,你可以直接进入 pkgsrc 源码树来访问这些脚本。

例如,要从源码构建 tcsh,首先找到构建脚本:

  1. $ find /usr/pkgsrc -type d -name "tcsh"
  2. /usr/pkgsrc/shells/tcsh

接下来,进入源码目录:

  1. $ cd /usr/pgksrc/shells/tcsh

构建脚本目录包含许多文件来帮助在你的系统上构建应用,但值得注意的是,这里面有包含了软件说明的 DESCR 文件,以及触发构建的 Makefile

  1. $ ls
  2. CVS    DESCR     Makefile
  3. PLIST  distinfo  patches
  4. $ cat DESCR
  5. TCSH is an extended C-shell with many useful features like
  6. filename completion, history editing, etc.
  7. $

准备就绪后,构建并安装:

  1. $ sudo bmake install

pkgsrc 系统使用 bmake 命令(在第一步检出 pkgsrc 后提供),因此请务必使用 bmake(而不是出于习惯使用 make)。

如果要为多个系统构建,那么你可以创建一个包,而不是立即安装:

  1. $ cd /usr/pgksrc/shells/tcsh
  2. $ sudo bmake package
  3. [...]
  4. => Creating binary package in /usr/pkgsrc/packages/All/tcsh-X.Y.Z.tgz

pkgsrc 创建的包是标准的 tarball,但它可以方便地通过 pkg_add 安装:

  1. $ sudo pkg_add /usr/pkgsrc/packages/All/tcsh-X.Y.Z.tgz
  2. tcsh-X.Y.Z: adding /usr/pkg/bin/tcsh to /etc/shells
  3. $ tcsh
  4. localhost%

pkgsrc 的 pkgtools 集合提供 pkg_addpkg_infopkg_adminpkg_createpkg_delete 命令,来帮助管理你在系统上构建和维护软件包。

pkgsrc,易于管理

pkgsrc 系统提供了直接,容易上手的软件包管理方法。如果你正在寻找一个不妨碍你并且可以定制的包管理器,请在任何运行 Unix 或类 Unix 的系统上试试 pkgsrc。

【编辑推荐】

  1. 10个高效Linux技巧及Vim命令对比
  2. Linux如何限制指定账户不能SSH只能SFTP在指定目录
  3. 如何在Linux上安装Java?
  4. 如何查看Linux哪些用户拥有sudo权限
  5. Linux平台上的写作者必备工具
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月获赞

订阅专栏+更多

骨干网与数据中心建设案例

骨干网与数据中心建设案例

高级网工必会
共20章 | 捷哥CCIE

394人订阅学习

中间件安全防护攻略

中间件安全防护攻略

4类安全防护
共4章 | hack_man

142人订阅学习

CentOS 8 全新学习术

CentOS 8 全新学习术

CentOS 8 正式发布
共16章 | UbuntuServer

288人订阅学习

读 书 +更多

计算机病毒分析与防治简明教程

本书全面翔实地介绍了各种病毒的原理,以操作系统的发展为主线,结合病毒的发展过程来综合分析病毒。在分析工具上,较多地利用了脚本语言、...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微