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,安装过程都基本相同:
- 使用CVS检出pkgsrc树
- 引导pkgsrc系统
- 安装套件
使用CVS检出pkgsrc树
在Git之前,在Subversion之前,有CVS 。 您无需了解CVS即可对其代码进行检出-如果您习惯使用Git,则可以将检出视为clone 。 当执行pkgsrc的CVS检出时,您正在下载详细说明如何构建每个软件包的“食谱”。 它有很多文件,但是它们很小,因为您实际上并没有为每个程序包提取源代码,而只是根据其需求构建构建基础结构和Makefile。 使用CVS,可以在发布新的pkgsrc结帐时轻松进行更新。
pkgsrc文档建议将树保留在/ usr目录中,因此必须使用sudo (或成为root用户)才能使用此命令:
$
cd
/ usr
$
sudo
cvs
-q
-z2 \
-d anoncvs
@ anoncvs.NetBSD.org:
/ cvsroot \
checkout
-r pkgsrc-2019Q3
-P pkgsrc
在撰写本文时,最新版本是2019年第三季度。 检查pkgsrc.org主页的新闻部分或NetBSD文档,以确定最新的发行版本。
引导程序pkgsrc
将pkgsrc树复制到您的计算机后,您将在/ usr / pkgsrc目录中填充了构建脚本。 在使用它们之前,必须引导pkgsrc,以便可以轻松访问构建和安装软件所需的相关命令。
引导pkgsrc的方式取决于您所使用的操作系统。
对于NetBSD,您可以只使用捆绑的引导程序:
# 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
如果您希望不依赖Joyent的构建而使用pkgsrc,则可以只运行pkgsrc树获得的引导脚本。 在运行引导程序目录之前,请先阅读相关的README文件,以获取特定于系统的重要说明。
如何使用pkgsrc安装软件
使用pkgsrc安装预编译的二进制文件(就像使用DNF或Apt一样)很容易。 二进制安装命令是pgkin ,它在pkgin.net上有其专用站点。 使用Linux的任何人都应该对这个过程感到非常熟悉。
要搜索tmux软件包:
$ pkgin search tmux
要安装tmux软件包:
$ sudo pkgin install tmux
pkgin命令的目的是模仿典型的Linux程序包管理器的行为,因此有一些选项可以列出可用的程序包,查询可用的程序包以查找提供特定可执行文件的程序,等等。
如何使用pkgsrc从源代码进行构建
但是,pkgsrc的真正功能是易于从源代码构建软件包。 在第一步设置中,您下载了所有20,000多个构建脚本,然后可以直接导航到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的系统采用B请命令(通过pkgsrc的收银台在第一步骤中提供),所以一定要使用B请 (而不是让习惯了)。
如果要针对多个系统进行构建,则可以创建软件包而不是立即安装:
$
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易于管理
pkgsrc系统提供了直接,直接的软件包管理方法。 如果您正在寻找一个不妨碍您进行包定制并邀请其定制的软件包管理器,请尝试在运行的任何Unix或类似Unix的操作系统上尝试pkgsrc。
翻译自: https://opensource.com/article/19/11/pkgsrc-netbsd-linux