Jadi saya menulis manajer paket kecil, dan masalah yang saya hadapi adalah membuat tautan simbolis ke file.
Itu menginstal paket untuk /usr/pkg/name-version
, dan kemudian membaca file untuk menentukan apa yang membuat tautan simbolis. Saya menggunakan ln
untuk membuat tautan, dan saya mengalami masalah ketika mencoba menginstal header Linux API. Saya perlu menautkan file header itu sendiri, bukan folder yang berisi mereka (jadi jika 2 paket perlu meletakkan file dalam subdirektori yang sama dengan menyertakan mereka dapat tanpa mengacaukan satu paket).
Masalah itu saya selesaikan, tetapi ln
hanya kesalahan jika jalurnya tidak lengkap, yang menjengkelkan karena direktori-direktori itu seharusnya tidak ada sampai paket diinstal.
Apakah ada bendera untuk ln
itu akan membuat direktori yang hilang, atau apakah saya harus pergi dengan beberapa skrip bash yang berbelit-belit?
sumber
mkdir
untuk ... membuat direktori?lndir
.Jawaban:
Anda tidak akan memerlukan skrip bash yang berbelit-belit, tetapi satu baris sederhana.
mkdir --parents
akan mengurus semuanya, bahkan tidak mencetak kesalahan jika struktur direktori sudah ada.Berhati-hatilah dengan cara Anda memperlakukan direktori ini saat dihapus, sehingga Anda tidak merusak paket lain.
Juga, karena Anda sedang memasukkannya
bash
, Anda dapat melihat sihir (steker tak tahu malu). Mungkin akan lebih mudah untuk hanya memodifikasi itu, karena sudah matang dan fleksibel.sumber
system()
tidak lebih mudah, sangat sulit untuk menghindari argumen baris perintah dengan benarsystem()
. Paling tidak Anda harus menggunakanposix_spawn()
ataufork()+exec*()
, yang menerima argumen baris perintah sebagai array.Tidak ada bendera untuk melakukan ini
ln
. Membuat direktori bukan tugasnya.mkdir -p foo/bar/qux
akan membuatfoo
,foo/bar
danfoo/bar/qux
sesuai kebutuhan. Jadi panggilmkdir -p
semua kecuali komponen path terakhir terlebih dahulu.Sepertinya Anda menciptakan kembali
rodaStow , manajer paket sederhana yang menggabungkan hierarki direktori dengan membuat direktori ke kedalaman yang diperlukan dengan tautan simbolis ke komponen paket yang berbeda di dalamnya. Atau mungkin XStow , yang seperti Stow tetapi dengan lebih banyak kemungkinan penyesuaian.sumber
Mungkin
tar
bisa membantu menyiapkan file dengan tautan:Dan kemudian untuk membuat tautan di mana dibutuhkan:
sumber