Symlink dinamis


10

Saya telah membangun aplikasi saya untuk arsitektur yang berbeda dan ingin membuat "symlink dinamis" yang membawa saya ke versi yang tepat berdasarkan suatu variabel.

Jika mesin yang saat ini saya masuki, adalah x86, maka symlink akan membawa saya ke bangunan itu.

Contoh mengejek tentang apa yang ingin saya lakukan:

$ uname -i
x86_64

$ ls -ltr 
lrwxr-xr-x  1 dogbane gg     4 Feb 16 15:40 mylink -> @sys/
drwxrwxr-x  2 dogbane gg  2048 Feb 16 15:40 x86_64/
drwxrwxr-x  2 dogbane gg  2048 Feb 16 15:40 i386/

$ cd mylink

$ pwd -P
~/x86_64

Apakah ini mungkin?

Saya tahu saya bisa menggunakannya cd $(uname -i), tetapi menginginkan sesuatu yang lebih sederhana.


Apakah Anda terbiasa dengan OpenAFS? Karena ia menggunakan @sys persis seperti itu, bahkan menggunakan '@sys'. Jika demikian, apakah Anda mencari alternatif untuk OpenAFS?
jsbillings

@ jsbilling Saya ingin tahu apakah ini mungkin pada sistem file standar, tanpa AFS. Saya dulu pernah bekerja dengan AFS dulu dan bisa melakukan ini, karena itu saya bertanya.
dogbane

Saya pikir banyak. Saya tahu tidak ada sistem file lain yang memiliki symlink 'ajaib' selain pengaturan NetBSD vfs.generic.magiclinks. ( daemon-systems.org/man/symlink.7.html )
jsbillings

Ada beberapa lingkungan untuk mis. Ruby dan Perl, sehingga Anda dapat memilih versi mana yang akan digunakan saat Anda menguji sesuatu. Anda mungkin menemukan beberapa inspirasi di rvm.io/rubies .
Jenny D

Jawaban:



2

Tautan simbolik bersifat statis: sistem file hanya menyimpan string, dan akses ke tautan simbol diarahkan ke file yang namanya (relatif terhadap lokasi symlink) adalah string itu.

Akan mudah untuk menulis filesystem FUSE yang memperlihatkan symlink dinamis seperti itu, tapi saya tidak tahu yang ada.


2

Saya berasumsi ini adalah binari, jadi saya akan melakukannya dengan variabel PATH rater daripada symlink.

PATH=$PATH:/base/$ARCH/bin.

Jika Anda menggunakan alat seperti cfengine atau boneka. Symlink ke direktori yang sesuai dapat dibuat berdasarkan arsitektur sistem.


1

Jika Anda hanya ingin sintaks yang lebih sederhana untuk diketik daripada:

cd $(uname -i)

Anda bisa memasukkannya ke dalam variabel seperti:

 s=`uname -i` 

di skrip login Anda, jadi Anda bisa melakukannya

 cd $s

Ketika Anda ingin cd


0

symlink pada dasarnya adalah file dengan flag khusus yang berisi beberapa path, dan path ini diartikan apa adanya, sehingga Anda tidak dapat membuat satu symlink untuk menunjuk ke lokasi lain dengan cara itu. Tetapi Anda masih dapat menulis skrip yang akan menjalankan build yang sesuai.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.