如何正確處理本地建構的二進製文件?
我傾向於從原始碼建構二進製文件。我通常的設置如下
$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"
在配置階段,之前
make
和make install
.在編譯使用 CMake 的程序時,可以通過
$ cmake -DCMAKE_INSTALL_PREFIX="$HOME/local" .
make
和make 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