所以我正在編寫一個小型套件管理器,我遇到的一個問題是創建文件的符號連結。
它將包安裝到/usr/pkg/name-version
,然後讀取檔案以確定要建立哪些符號連結。我用來ln
建立鏈接,並且在嘗試安裝 Linux API 標頭時遇到了問題。我需要連結頭文件本身,而不是包含它們的資料夾(因此,如果 2 個包需要將文件放在 include 的同一子目錄中,則無需將其中一個包搞砸即可)。
我解決了這個問題,但ln
如果路徑不完整,就會出錯,這很煩人,因為在安裝套件之前這些目錄不應該存在。
是否有一個標誌ln
可以創建任何丟失的目錄,或者我必須使用一些複雜的 bash 腳本?
答案1
答案2
您不需要複雜的 bash 腳本,而需要簡單的一行程式碼。mkdir --parents
將處理所有事情,如果目錄結構已經存在,甚至不會列印錯誤。
只是在刪除時要小心如何處理這些目錄,這樣就不會破壞其他套件。
另外,既然你寫的是bash
,你可以看看巫術(無恥的插頭)。也許修改它會更簡單,因為它成熟且靈活。
答案3
也許tar
可以幫助準備帶有連結的文件:
find . -type l > links.txt
tar cpf links.tar --files-from links.txt
然後在需要的地方建立連結:
tar xvf links.tar