如何在 Linux 上使用 pkgsrc

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

NetBSD 以能在幾乎全部平臺上運行而聞名,但你知道它第二有名的 pkgsrc 包管理器嗎?像 NetBSD 同樣,pkgsrc 基本上能夠在任何系統上運行,或者至少在任意 Unix 和類 Unix 的系統上上運行。你能夠在 BSD、Linux、Illumos、Solaris 和 Mac 上安裝 pkgsrc。它總共支持 20 多種操做系統。linux

爲何使用 pkgsrc?

除了 MacOS 以外,全部 Unix 操做系統均自帶包管理器。你不必定須要 pkgsrc,但這多是你想嘗試的三個重要緣由:git

  • 打包。若是你對打包感到好奇,但還沒有嘗試本身建立一個軟件包,那麼 pkgsrc 是一個相對簡單的系統,尤爲是若是你已經熟悉 Makefile 和相似 GNU Autotools 之類的構建系統時。
  • 通用。若是你使用多個操做系統或發行版,那麼可能會遇到每一個系統的包管理器。你能夠在不一樣的系統上使用 pkgsrc,以便你爲一個系統打包了程序,就爲全部系統打包了。
  • 靈活。在許多打包系統中,如何選擇二進制包或源碼包並不老是很明顯。使用 pkgsrc,區別很明顯,兩種安裝方法都同樣容易,而且均可覺得你解決依賴關係。

如何安裝 pkgsrc

不管你使用的是 BSD、Linux、Illumos、Solaris 仍是 MacOS,安裝過程都基本相同:github

  1. 使用 CVS 檢出 pkgsrc 樹
  2. 引導 pkgsrc 系統
  3. 安裝軟件包

使用 CVS 檢出 pkgsrc 樹

在 Git 和 Subversion 以前,就有了 CVS。要檢出代碼你無需瞭解 CVS 太多,若是你習慣 Git,那麼能夠將檢出checkout稱爲克隆clone。當你用 CVS 檢出 pkgsrc 時,你就下載了詳細說明如何構建每一個軟件包的「配方recipes」。它有不少文件,可是它們都很小,由於你實際上並無拉取每一個包的源碼,而只有按需構建時須要的構建基礎架構和 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

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 文件。

Bootstrapping pkgsrc on NetBSD
Bootstrapping pkgsrc on NetBSD

如何使用 pkgsrc 安裝軟件

使用 pkgsrc 安裝預編譯的二進制文件(就像使用 DNF 或 Apt 同樣)是很容易的。二進制安裝的命令是 pgkin,它有本身的專門網站 pkgin.net。對於任何用過 Linux 的人來講,這個過程應該感受至關熟悉。

要搜索 tmux 包:

$ pkgin search tmux
複製代碼

要安裝 tmux 包:

$ sudo pkgin install tmux
複製代碼

pkgin 命令的目的是模仿典型的 Linux 包管理器的行爲,所以有選項能夠列出可用的包、查找包提供的特定可執行文件,等等。

如何使用 pkgsrc 從源碼構建

然而,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_addpkg_infopkg_adminpkg_createpkg_delete 命令,來幫助管理你在系統上構建和維護軟件包。

pkgsrc,易於管理

pkgsrc 系統提供了直接,容易上手的軟件包管理方法。若是你正在尋找一個不妨礙你而且能夠定製的包管理器,請在任何運行 Unix 或類 Unix 的系統上試試 pkgsrc。


via: opensource.com/article/19/…

做者:Seth Kenlon 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章
相關標籤/搜索