NetBSD 的软件包管理器通用、灵活又容易。下面是如何使用它。html
NetBSD 以能在几乎全部平台上运行而闻名,但你知道它第二有名的 pkgsrc 包管理器吗?像 NetBSD 同样,pkgsrc 基本上能够在任何系统上运行,或者至少在任意 Unix 和类 Unix 的系统上上运行。你能够在 BSD、Linux、Illumos、Solaris 和 Mac 上安装 pkgsrc。它总共支持 20 多种操做系统。linux
除了 MacOS 以外,全部 Unix 操做系统均自带包管理器。你不必定须要 pkgsrc,但这多是你想尝试的三个重要缘由:git
不管你使用的是 BSD、Linux、Illumos、Solaris 仍是 MacOS,安装过程都基本相同:github
在 Git 和 Subversion 以前,就有了 CVS。要检出代码你无需了解 CVS 太多,若是你习惯 Git,那么能够将检出称为克隆。当你用 CVS 检出 pkgsrc 时,你就下载了详细说明如何构建每一个软件包的“配方”。它有不少文件,可是它们都很小,由于你实际上并无拉取每一个包的源码,而只有按需构建时须要的构建基础架构和 Makefile。使用 CVS,你能够轻松地在新版本发布时更新 pkgsrc 检出。shell
pkgsrc 文档建议将其源码树放在 /usr
目录下,所以你必须使用 sudo
(或成为 root)运行此命令:bootstrap
$ cd /usr
$ sudo cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -r pkgsrc-2019Q3 -P pkgsrc
复制代码
在我撰写本文时,最新版本是 2019Q3。请检查 pkgsrc.org 主页的新闻部分或 NetBSD文档,以肯定最新版本。ruby
pkgsrc 树复制到你的计算机后,你会看到一个充满构建脚本的 /usr/pkgsrc
目录。在使用以前,你必须引导 pkgsrc,以便你能够轻松地访问构建和安装软件所需的相关命令。bash
引导 pkgsrc 的方式取决于你所使用操做系统。架构
对于 NetBSD,你只需使用捆绑的引导器:app
# cd pkgsrc/bootstrap
# ./bootstrap
复制代码
在其余系统上,还有更好的方法,包括一些自定义功能,它是由 Joyent 提供的。要了解运行的确切命令,请访问 pkgsrc.joyent.com。好比,在 Linux(Fedora、Debian、Slackware 等)上:
$ curl -O https://pkgsrc.joyent.com/packages/Linux/el7/bootstrap/bootstrap-trunk-x86_64-20170127.tar.gz
$ BOOTSTRAP_SHA="eb0d6911489579ca893f67f8a528ecd02137d43a"
复制代码
尽管路径暗示文件适用于 RHEL 7,但二进制文件每每与全部(最前沿的 Linux 发行版)兼容。若是你发现二进制文件与你的发行版不兼容,你能够选择从源码构建。
验证 SHA1 校验和:
$ echo "${BOOTSTRAP_SHA}" bootstrap-trunk*gz > check-shasum
sha1sum -c check-shasum
复制代码
你还能够验证 PGP 签名:
$ curl -O https://pkgsrc.joyent.com/packages/Linux/el7/bootstrap/bootstrap-trunk-x86_64-20170127.tar.gz.asc
$ curl -sS https://pkgsrc.joyent.com/pgp/56AAACAF.asc | gpg --import
$ gpg --verify ${BOOTSTRAP_TAR}{.asc,}
复制代码
当你确认你已有正确的引导套件,将其安装到 /usr/pkg
:
sudo tar -zxpf ${BOOTSTRAP_TAR} -C /
复制代码
它为你提供了一般的 pkgsrc 命令。将这些位置添加到你的 PATH 环境变量中:
$ echo "PATH=/usr/pkg/sbin:/usr/pkg/bin:$PATH" >> ~/.bashrc
$ echo "MANPATH=/usr/pkg/man:$MANPATH" >> ~/.bashrc
复制代码
若是你宁愿使用 pkgsrc 而不依赖于 Joyent 的构建,那么只需运行 pkgsrc 源码树的引导脚本便可。在运行特定于系统的脚本以前,请先阅读 bootstrap
目录中相关 README
文件。
使用 pkgsrc 安装预编译的二进制文件(就像使用 DNF 或 Apt 同样)是很容易的。二进制安装的命令是 pgkin
,它有本身的专门网站 pkgin.net。对于任何用过 Linux 的人来讲,这个过程应该感受至关熟悉。
要搜索 tmux
包:
$ pkgin search tmux
复制代码
要安装 tmux 包:
$ sudo pkgin install tmux
复制代码
pkgin
命令的目的是模仿典型的 Linux 包管理器的行为,所以有选项能够列出可用的包、查找包提供的特定可执行文件,等等。
然而,pkgsrc 真正强大的地方是方便地从源码构建包。你在第一步中检出了全部 20000 多个构建脚本,你能够直接进入 pkgsrc 源码树来访问这些脚本。
例如,要从源码构建 tcsh
,首先找到构建脚本:
$ find /usr/pkgsrc -type d -name "tcsh"
/usr/pkgsrc/shells/tcsh
复制代码
接下来,进入源码目录:
$ cd /usr/pgksrc/shells/tcsh
复制代码
构建脚本目录包含许多文件来帮助在你的系统上构建应用,但值得注意的是,这里面有包含了软件说明的 DESCR
文件,以及触发构建的 Makefile
。
$ ls
CVS DESCR Makefile
PLIST distinfo patches
$ cat DESCR
TCSH is an extended C-shell with many useful features like
filename completion, history editing, etc.
$
复制代码
准备就绪后,构建并安装:
$ sudo bmake install
复制代码
pkgsrc 系统使用 bmake
命令(在第一步检出 pkgsrc 后提供),所以请务必使用 bmake
(而不是出于习惯使用 make
)。
若是要为多个系统构建,那么你能够建立一个包,而不是当即安装:
$ cd /usr/pgksrc/shells/tcsh
$ sudo bmake package
[...]
=> Creating binary package in /usr/pkgsrc/packages/All/tcsh-X.Y.Z.tgz
复制代码
pkgsrc 建立的包是标准的 tarball,但它能够方便地经过 pkg_add
安装:
$ sudo pkg_add /usr/pkgsrc/packages/All/tcsh-X.Y.Z.tgz
tcsh-X.Y.Z: adding /usr/pkg/bin/tcsh to /etc/shells
$ tcsh
localhost%
复制代码
pkgsrc 的 pkgtools 集合提供 pkg_add
、pkg_info
、pkg_admin
、pkg_create
和 pkg_delete
命令,来帮助管理你在系统上构建和维护软件包。
pkgsrc 系统提供了直接,容易上手的软件包管理方法。若是你正在寻找一个不妨碍你而且能够定制的包管理器,请在任何运行 Unix 或类 Unix 的系统上试试 pkgsrc。
via: opensource.com/article/19/…
做者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy