Arch-Linux

需要在 Arch Linux 上打包幾個本地執行檔,並能夠將它們安裝在另一台 Arch Linux 機器上

  • October 9, 2017

我一直在研究 PKGBUILD 和 makepkg,但我似乎無法弄清楚如何簡單地使用已建構的本地執行檔製作一個包。我需要將它們打包,以便我可以輕鬆地將它們安裝在另一台 Linux 機器上。我正在使用 Arch Linux。

我基本上需要從特定目錄中獲取兩個執行檔,用這些文件製作一個包,然後能夠將這些文件安裝在另一台 Arch Linux 機器上,與 pacman 通常安裝執行檔的位置相同。不要使用任何原始碼或任何東西,因為應用程序已經建構。

我知道將文件放在 PKGBUILD 文件中的源位置,但是我在 package() 函式中放了什麼,我需要一個 .install 文件嗎?如果是這樣,我需要什麼?

編輯:這個問題已經解決。最佳答案已被標記。

軟體包可以附帶與 PKGBUILD 文件位於同一目錄中的任意文件。出於您的目的,您可以這樣做。在 PKGBUILD 文件的package()函式中,您可以將這些文件稱為${srcdir}/my-executable. 最終結果可能如下所示:

# snip!
source=(my-executable)
sha256sums=('foo')

package() {
 install -Dm755 "${srcdir}/my-executable" "${pkgdir}/usr/local/bin/my-executable"
}

您現在可以使用以下內容製作包:

updpkgsums && mksrcinfo && makepkg

請注意,這種方法僅適用於自製軟體包。如果將包上傳到 AUR,請不要採用這種方法。與您的 PKGBUILD 一起發布的文件應該很少更改 - 當然不是每個版本都更改。如果你的執行檔是二進製文件,你將被禁止上傳你的包到 AUR。(或者它會起作用,有人會找到它並禁止你。)

有關具體範例,請查看mkgmap。它將一個簡單的包裝腳本安裝到/usr/bin/mkgmap. 請注意,我使用了一些不合時宜的內容,例如cd "${srcdir}/${pkgname}-${pkgver}"package().

創建包後,有多種工具可用於將這些包發送到所有主機。一種不錯的特定於應用程序的工具是pacserve。(感謝 jasonwryan 的提示。)

另外,考慮尋找像 Ansible 這樣的工具。如果您希望包管理器了解這些執行檔,那麼製作一個包非常棒。但是,如果您想將文件放在使用者目錄中,例如~/.local/bin/,配置管理系統可能會更好地為您服務。

引用自:https://unix.stackexchange.com/questions/373584