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,则可以将检出视为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

如何在Linux上使用pkgsrc相关推荐

  1. linux上查看网络限制,如何在Linux上限制网络带宽

    您是否曾经与多个设备共享网络带宽?如果您曾经处于一个应用程序占用了所有流量的位置,那么您是系统管理员还是Linux用户,您将需要发现如何控制应用程序的上载和下载速度,以确保您的带宽并不完全被单个应用程 ...

  2. linux下安装sbt_如何在Linux上安装SBT

    linux下安装sbt 介绍 (Introduction) Hi! I am Sanjula, and in this guide I hope to teach you how to install ...

  3. 如何在Linux上找到包含特定文本的所有文件?

    我正在尝试找到一种方法来扫描整个Linux系统,查找包含特定文本字符串的所有文件. 只是为了澄清,我在文件中寻找文本,而不是文件名. 当我查找如何做到这一点时,我遇到了两次这个解决方案: find / ...

  4. docker删除所有容器_如何在Linux上创建,列出和删除Docker容器

    本篇文章介绍的内容是关于在Linux机器上创建,列出和删除docker容器,下面我们来看具体的内容. 我的官方群点击此处 1.启动Docker容器 使用下面的命令启动新的Docker容器.这将启动一个 ...

  5. 如何在 Linux 上安装服务器管理软件 Cockpit

    如何在 Linux 上安装服务器管理软件 Cockpit Cockpit 是一个自由开源的服务器管理软件,它使得我们可以通过它好看的 web 前端界面轻松地管理我们的 GNU/Linux 服务器.Co ...

  6. 更改日期为英文_如何在 Linux 上检查所有用户密码到期日期 | Linux 中国

    如果你很少使用自己的帐户,那么可能由于密码过期而被锁定.在许多情况下,这可能会在无需密码登录的服务帐户中发生,因为没人会注意到它. -- Magesh Maruthamuthu(作者) 如果你在 Li ...

  7. linux 当前活动用户,如何在Linux上自动记录所有用户的终端会话活动

    如何在Linux上自动记录所有用户的终端会话活动 不久前,我们写了一篇文章,使用script命令记录Linux终端会话活动. 今天,我们还将讨论相同的主题. 但是,本教程允许您自动记录所有用户的终端会 ...

  8. 如何在Linux上使用VIM进行.Net Core开发

    对于在Linux上开发.Net Core的程序员来说, 似乎都缺少一个好的IDE. Windows上有Visual Studio, Mac上有Visual Studio for Mac, 难道Linu ...

  9. 如何在linux上安装sqlite数据库

    如何在linux上安装sqlite数据库 一.下载 二.解压 三.配置(configure) 四.编译和安装 五.执行sqlite3程序 六.测试代码 一.下载 首先要先下载sqlite3源码包 链接 ...

最新文章

  1. eclipse没有日志_「开源资讯」Jboot v3.3.6 发布,更强大的控制台请求日志
  2. 未发现数据源名称并且未指定默认驱动程序_看我如何发现NVIDIA GeForce Experience代码执行漏洞...
  3. Vue数据更新数据不渲染问题 - 资源篇
  4. 轻量级ORM框架 Bankinate
  5. OFFICE技术讲座:边框底纹对布局的影响
  6. 初学者如何在CSDN写博客
  7. 华硕笔记本k555拆机图解_华硕k45vd笔记本拆机教程,清理灰尘,更换键盘
  8. cs61b实验记录(八)project 3:BearMaps 基于OSM的伯克利地图web应用
  9. Node.js 小白入门课3-设置基本数据库
  10. maya(学习笔记)之Arnold渲染器
  11. 《啊哈!算法》第一章 - 第三节 - 快速排序(Java实现)
  12. 互联网周刊:不痛不痒的信息安全
  13. MySQL查询优化方法
  14. 介绍计算机的英语作文,总算晓得写一篇介绍电脑的英语作文
  15. 区块链到底能干什么?
  16. 小巧可爱的MiniDraw
  17. 基于Java的超市管理系统源码,数据库MySQL(附加论文13000字)
  18. MySql中的my指的是什么?
  19. 自动微分(Automatic Differentiation)简介
  20. kotlin中map对value进行排序

热门文章

  1. python 摄像头拍照是反的,Python/OpenCV网络摄像头向后移动
  2. Aod-net代码相关基础学习
  3. 物流查询 并将查询到的退回件导出保存在表格里面
  4. office文档如何免费转PDF
  5. 无法处理文件 XXXX.resx,因为它位于 Internet 或受限区域中,或者文件上具有 Web 标记。要想处理这些文件,请删除 Web 标记
  6. 【python】数字图像处理
  7. linux配置二级域名
  8. ibm imm挂载iso文件_【CentOS】IBM X3650M4 IMM远程管理【转载】
  9. 拉格朗日乘子法、罚函数法、乘子罚函数法
  10. Data Whale第20期组队学习 Pandas学习—时序数据