Compiling

如何正確處理本地建構的二進製文件?

  • September 30, 2017

我傾向於從原始碼建構二進製文件。我通常的設置如下

$HOME/build -> this gets the sources
$HOME/programs -> this is where the build happen, so where the binaries are

完成後,我將以下內容放入我的bashrc

export MYNEWBINDIR = $HOME/programs/...
export PATH=$MYNEWBINDIR:$PATH

我的問題是:這是推薦的方式嗎?例如,我可以創建一個本地的$HOME/bin,符號連結那裡的所有二進製文件,然後將其添加到路徑中……

這或多或少取決於個人的意願,但我建議您始終保留基本系統或任何包管理器已使用的目錄。您真的不想通過覆蓋以前安裝的文件來混淆包管理器!所以絕對不要/bin管。

在大多數係統上,/usr/local 應該是您安裝東西的安全區域,儘管這也被某些系統上的包管理器(例如 FreeBSD 和 OpenBSD)使用,因為它們將從埠/包安裝的軟體視為本地軟體。

另請參閱 Wikipedia 上的條目“文件系統層次結構標準”和“ Unix 文件系統”。

一些 Unices 也有您可以參考的hier(7)手冊。(連結指向 OpenBSD 的版本,但它至少在 Linux 中的 Ubuntu 上也可用。在 OpenBSD 的情況下,它記錄了系統軟體知道的目錄,因此它沒有提及/opt.

你在哪裡建構東西並不重要,因為它是一個目錄,當你完成後你可能會刪除它。不過,最好遠離實際的安裝目錄。我曾在/bin和中有原始碼樹的系統上工作過/usr/local,這非常不整潔。

我還建議您make install對軟體進行實際操作,而不是從建構目錄中執行執行檔,除非您正在調整建構。將執行檔收集在一個位置可以讓你PATH更乾淨、更容易設置,除非你真的想要PATH每個軟體都有一個不同的元素,顯然。


個人意見如下:

對於我只為自己建構的軟體,我傾向於使用私有層次結構$HOME/local進行安裝。

在編譯使用 GNU 自動工具並因此具有configure腳本的程序時,這真的很容易。你就說

$ ./configure --prefix="$HOME/local"

在配置階段,之前makemake install.

在編譯使用 CMake 的程序時,可以通過

$ cmake -DCMAKE_INSTALL_PREFIX="$HOME/local" .

makemake install步驟之前。安裝 Perl 模組等時可能會產生相同的效果(通過其他方式)。

那麼你顯然必須添加$HOME/local/bin到你的路徑……

就個人而言,我也使用GNU Stow,這意味著我並沒有真正指定$HOME/local為安裝前綴,而是$HOME/local/stow/thing-2.1在配置軟體包時thing-2.1

安裝後:

$ cd "$HOME/local/stow"
$ stow thing-2.1

目錄的內容$HOME/local/stow/thing-2.1/bin將顯示(使用符號連結)$HOME/local/bin(對於安裝在 下的任何lib或其他目錄也是如此thing-2.1)。

Stow 使解除安裝軟體變得非常容易。無需make install為了解除安裝和刪除軟體而尋找安裝的每個小文件,而只需

$ cd "$HOME/local/stow"
$ stow -D thing-2.1
$ rm -rf thing-2.1

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