我需要在 SuSE Linux 電腦上安裝 netcdf,但在理解 usr/local/ 資料夾和 myusername/local/ 資料夾時遇到一些問題。我認為我需要做的是進入未壓縮的 netcdf 資料夾並執行
./configure --prefix=/usr/local/netcdf-gfortran
但是我需要建立這個資料夾,對嗎?為什麼在 usr/local 而不是在我的用戶名/local ...?
答案1
通常的組合是:
./configure --prefix=... [more options]
make
make install
您可能不想使用,/usr/local
因為這也需要根權限,所以它是--prefix=$HOME
或--prefix=$HOME/programs
(或其他更適合您的東西)。
與您的系統管理員討論其他軟體可能是值得的 - 無論如何您都應該與他討論,因為 openSUSE 11.3 已經過時了。至少他應該升級到11.4 常青樹,至少接收安全性更新。
至於建立軟體包,通常最好查看一下.spec 文件了解什麼可能是有用的configure
選項、原始碼補丁和建置技巧 - 根據您的情況,您可能需要檢查openSUSE:Factory 的 netcdf .spec 文件(或任何較舊的發行版)。
答案2
一般來說,在Linux下,/usr
是指由發行版提供並由其軟體包管理器(dpkg/apt、rpm/yum、emerge等)管理的程序,以及/usr/local
由系統管理員手動安裝和管理的程序。/usr
和下的程式/usr/local
是為所有使用者安裝的。
如果您想安裝程式供自己使用,請將它們放在您的主目錄下的某個位置。
我建議使用斯托或者X斯托追蹤您手動安裝的程式。 (使用其中之一:它們是同一概念的實現。)當您手動安裝程式時,您可以在兩個不方便的選項之間進行選擇:
- 將所有程式放在同一目錄中。然後你將很難對它們進行分類,確定哪些檔案屬於哪些程序,卸載程式等。
- 將每個程式放在自己的目錄中。然後卸載就像 一樣簡單
rm -r
。缺點是你必須將每個程式加入 PATH 等等。
斯托為您提供兩全其美的選擇。該工具維護從公共目錄到每個程式目錄的符號連結。您將每個程式(從原始程式碼或二進位套件)安裝在 下其自己的目錄中stow
,並且 Stow 在bin
, lib
, man
, …中建立符號鏈接
programs/stow
因此,在您的主目錄下建立一個目錄。安裝 netcdf
./configure --prefix=~/programs/stow/netcdf-gfortran-4.3
make
make install
stow netcdf-gfortran-4.3
然後從該目錄運行~/programs/stow
以為該包的所有部分建立符號連結。
編輯您的.profile
(或您放置環境設定的任何位置)以新增~/programs/bin
至可執行搜尋路徑、~/programs/lib
庫搜尋路徑等。
PATH="$HOME/programs/bin:$PATH"
if [ -n "$LD_LIBRARY_PATH" ]; then
export LD_LIBRARY_PATH="$HOME/programs/lib:$LD_LIBRARY_PATH"
else
export LD_LIBRARY_PATH="$HOME/programs/lib"
fi
if [ -z "$MANPATH" ]; then
MANPATH=$(manpath)
fi
export MANPATH="$HOME/programs/share/man:$HOME/programs/man:$MANPATH"
編譯程式時,傳遞--with-cppflags="-I $HOME/programs/include"
toconfigure
以便它可以在存放區域中找到標頭。
有關更多信息,請參閱追蹤程式和在過時的生產機器上安裝最新軟體的有效方法是什麼?