如何在 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,安裝過程都基本相同:
- 使用 CVS 檢出 pkgsrc 樹
- 引導 pkgsrc 系統
- 安裝軟體包
使用 CVS 檢出 pkgsrc 樹
在 Git 和 Subversion 之前,就有了 CVS。要檢出程式碼你無需瞭解 CVS 太多,如果你習慣 Git,那麼可以將檢出稱為克隆。當你用 CVS 檢出 pkgsrc 時,你就下載了詳細說明如何構建每個軟體包的“配方”。它有很多檔案,但是它們都很小,因為你實際上並沒有拉取每個包的原始碼,而只有按需構建時需要的構建基礎架構和 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
在我撰寫本文時,最新版本是 2019Q3。請檢查 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
如果你寧願使用 pkgsrc 而不依賴於 Joyent 的構建,那麼只需執行 pkgsrc 原始碼樹的引導指令碼即可。在執行特定於系統的指令碼之前,請先閱讀 bootstrap
目錄中相關 README
檔案。
如何使用 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_add
、pkg_info
、pkg_admin
、pkg_create
和 pkg_delete
命令,來幫助管理你在系統上構建和維護軟體包。
pkgsrc,易於管理
pkgsrc 系統提供了直接,容易上手的軟體包管理方法。如果你正在尋找一個不妨礙你並且可以定製的包管理器,請在任何執行 Unix 或類 Unix 的系統上試試 pkgsrc。
via: https://opensource.com/article/19/11/pkgsrc-netbsd-linux
作者:Seth Kenlon 選題:lujun9972 譯者:geekpi 校對:wxy
相關文章
- 如何在 Linux 上使用 GNU sedLinux
- 如何在linux伺服器上使用hanlpLinux伺服器HanLP
- 如何在 Linux 上建立和使用交換檔案Linux
- 如何在 Linux 上使用 kill 和 killall 來管理程式Linux
- 如何在 Linux/Windows/MacOS 上使用 .NET 進行開發LinuxWindowsMac
- 如何在 Linux 上使用 dnf 命令安裝軟體包?Linux
- 如何在 Linux 上使用 snap 安裝 Spotify(聲破天)Linux
- 如何在 Linux 上 使用 ONLYOFFICE 協同編輯文件Linux
- 如何在Mac上使用DockerMacDocker
- 如何在 Linux 上安裝 JavaLinuxJava
- 如何在Linux上劃分VLANLinux
- 如何在Linux上使用netstat命令查證DDOS攻擊Linux
- 如何在 Linux 上使用 x2go 設定遠端桌面LinuxGo
- 學習NetBSD-pkgsrc(轉)
- 如何在Mac上使用“接力”功能?Mac
- [golang]如何在windows上使用cgoGolangWindows
- 如何在Linux系統上刷抖音Linux
- 如何在 Windows 上執行 Linux 容器WindowsLinux
- 如何在 Ubuntu 和其他 Linux 發行版上使用 7ZipUbuntuLinux
- 如何在 Linux 中使用 findLinux
- 如何在Linux下使用rsyncLinux
- 如何在 macOS Monterey 上使用Live TextMac
- 如何在Mac上使用表情符號Mac符號
- 如何在 Mac 上使用 Ctrl + Alt + Delete?Macdelete
- 如何在Mac上使用螢幕共享Mac
- 如何在step7上使用SCL
- 如何在 Linux 上使用 Gmail SMTP 伺服器傳送郵件通知LinuxAI伺服器
- 如何在 VirtualBox 上安裝 Kali LinuxLinux
- 如何在 Linux 上安裝應用程式Linux
- 如何在 Linux 上安裝 Node.jsLinuxNode.js
- 如何在 Rocky Linux 上安裝 Apache Kafka?LinuxApacheKafka
- 如何在Linux中使用 Truncate 命令Linux
- 如何在Linux中使用awk命令Linux
- 如何在Linux上使用Osquery設定檔案完整性監控(FIM)Linux
- 如何在 Ubuntu 上使用 Grafana 監控 DockerUbuntuGrafanaDocker
- 如何在Ubuntu上使用HMCL遊玩MinecraftUbuntuRaft
- 教你如何在 Linux 系統上安裝 JavaLinuxJava
- 如何在 Linux 上查詢硬體規格Linux