在 Unix (OSX) 中管理包、目錄和 PATH
我是生物資訊學博士,主要是自學成才,現在我想清理各種目錄結構(即我的數據),但我也在考慮如何儲存我正在使用的各種生物資訊學軟體包。沒有接受過正規培訓,只上過一門 Unix 課程,我仍然不知道很多我認為是在“Unix 101”或類似內容中教授的。我做了一些Google搜尋,但我並沒有真正找到我的問題的答案,所以我想我會在這裡問他們。我正在使用 Mac,所以 OSX (Yosemite),如果這很重要的話。
在下載和安裝我正在使用的各種軟體包時,我目前的解決方案是將完整下載的目錄複製到
/Users/sajber/software
只是為了擁有所有文件make
(如果適用;有時在下載的目錄中有現成的二進製文件)和然後將二進製文件複製到/Users/sajber/bin
. 然後我將我的設置PATH
為包含/Users/sajber/bin
。我沒有使用任何形式的包管理軟體,所以我手動完成所有操作。這是多麼“錯誤”,我該如何改進它?人們通常做什麼,有什麼標準嗎?
我想像
/Users/sajber/software
以前一樣保留所有包,而是將單個包添加PATH
到PATH=$PATH:/Users/sajber/software/<package>
. 當我開始的時候,我最初是這樣做的,但後來我PATH
變成了一堆亂七八糟的路徑,很難在不犯錯誤的情況下改變,所以我改用了我目前的解決方案。現在我想到我可能只是改變.bash_profile
,給每個包一個單獨的行(如上)以便於訪問,如果這是一個“更好”的解決方案。我還有一個
/Users/sajber/scripts
用於存放各種 Python、R 和 bash 腳本的文件夾,它也被添加到PATH
. 我Git
在這個目錄中有一個用於版本控制的儲存庫。這是你應該做的事情嗎?對不起,如果這些問題都是非常基本的!我只是不知道在 Unix 環境中做事的標準方式是什麼,主要是自學成才。
同意這樣做沒有錯,有利也有弊。我發現區分我在本地開發的腳本和從其他地方獲得的程序很有用:
- 我在本地開發的腳本有我需要參考的更改歷史,而
- 我從其他地方獲得的程序由其他人維護(具有自己的更改歷史)。
由於“我的”腳本在它們執行的地方更新是最方便的,因此擁有多個 bin 目錄是有幫助的(無論如何對我來說)。
在我參與為我的程序創建包之前,我使用
/usr/local
後者,做./configure && make && sudo make install
並且大多數使用與 autoconf 相關的腳本的程序都預設使用此方案。
其他人當然會有自己的偏好:做最適合你的事情。