Cara Menemukan dan Menghapus Symlink yang Rusak di Linux
Diterbitkan: 2022-01-29Tautan simbolis di Linux adalah fitur yang fantastis, tetapi tautan tersebut dapat rusak dan tidak mengarah ke apa pun. Berikut cara menemukan tautan simbolik yang rusak, meninjaunya, dan menghapusnya dari sistem Anda jika perlu.
Tautan Simbolis 101
Tautan simbolik, juga disebut "tautan lunak" dan "symlink", adalah bentuk pintasan yang dapat menunjuk ke file dan direktori. Sebuah symlink terlihat seperti file atau direktori biasa di jendela manajer file. Itu juga muncul sebagai entri dalam daftar file di jendela terminal. File atau direktori yang ditunjuk oleh symlink dapat berada di mana saja di pohon sistem file.
Sebagai contoh, katakanlah Anda memiliki symlink di direktori home Anda yang disebut "dave-link" yang menunjuk ke file bernama "text-file.txt" yang terletak di tempat lain di pohon sistem file. Perintah yang Anda gunakan pada symlink secara otomatis diterapkan ke file yang ditunjuknya. Jika Anda mencoba menggunakan cat
atau less
pada symlink, Anda akan benar-benar melihat isi dari file “text-file.txt”.
Instalasi Linux standar berisi banyak symlink. Bahkan jika Anda tidak membuatnya sendiri, sistem operasi akan menggunakannya. Rutinitas instalasi aplikasi sering menggunakan symlink untuk menunjuk ke file yang dapat dieksekusi. Ketika perangkat lunak diperbarui, file biner diganti dengan versi baru, dan semua symlink terus bekerja seperti sebelumnya, selama nama file baru sama dengan yang lama.
Kita dapat dengan mudah melihat beberapa symlink dengan menggunakan ls
di direktori root. Beberapa entri ditampilkan dalam warna berbeda—pada mesin uji Ubuntu 20.10 kami, entri ditampilkan dalam warna biru muda.
Kami mengetik berikut ini:
ls /
Kita dapat melihat lebih dalam dengan menggunakan opsi -l
(daftar panjang). Kami mengetik perintah berikut untuk melihat semua entri "lib" dan entri "bin" tunggal:
ls -l /lib* /bin
Di awal setiap baris adalah "l", yang menunjukkan item tersebut adalah symlink. Teks setelah “->” menunjukkan apa yang ditunjuk symlink. Dalam contoh kita, targetnya adalah semua direktori.
Izin terdaftar sebagai baca, tulis, dan eksekusi untuk pemilik, grup, dan lainnya. Ini adalah entri palsu default. Mereka tidak mencerminkan izin sebenarnya pada objek yang ditunjuk oleh symlink. Ini adalah izin pada file atau direktori target yang diutamakan dan dihormati oleh sistem file.
Symlink rusak
Sebuah symlink rusak (atau dibiarkan menggantung) ketika file yang dituju dihapus atau dipindahkan ke lokasi lain. Jika rutinitas penghapusan instalasi aplikasi tidak berfungsi dengan baik, atau terganggu sebelum selesai, Anda mungkin akan mengalami symlink yang rusak.
Jika seseorang secara manual menghapus file tanpa mengetahui symlink mengarah ke sana, symlink tersebut tidak akan berfungsi lagi. Mereka akan seperti rambu-rambu jalan yang menunjuk ke sebuah kota yang telah dibuldoser.
Kita dapat dengan mudah melihat perilaku ini menggunakan symlink yang disebut "halo" di direktori saat ini. Kami mengetik berikut ini, menggunakan ls
untuk melihatnya:
ls -l
Ini menunjuk ke program yang disebut "htg" di direktori yang disebut "bin." Jika kita "menjalankan" symlink, ia menjalankan program untuk kita:
./Halo
Kami sekarang dapat memeriksa apakah ini yang terjadi dengan menjalankan program secara langsung:
../bin/htg
Seperti yang diharapkan, kami mendapatkan respons yang sama. Mari kita hapus file program:
rm ../bin/htg
Sekarang, ketika kita melihat symlink, kita melihatnya terdaftar dengan warna merah karena Linux tahu itu rusak. Itu juga memberi tahu kita apa yang digunakan untuk menunjuk, sehingga kita dapat mengganti file, mengkompilasi ulang program, atau melakukan apa pun yang diperlukan untuk memperbaiki symlink.
Perhatikan bahwa jika kita mencoba menjalankan symlink, kesalahan kita mendapatkan referensi nama symlink, bukan nama program yang ditunjuk symlink.
Kami mengetik berikut ini:
./Halo
Menemukan Symlink yang Rusak
Sebagian besar versi find
modern memiliki opsi xtype
(extended type), yang menyederhanakan pencarian symlink yang rusak. Kami akan menggunakan tanda l
dengan xtype
, untuk memberitahunya untuk mencari tautan. Menggunakan find
dan xtype
sebagai berikut, tanpa flag type
lain, memaksa xtype
untuk mengembalikan tautan yang rusak:
Temukan . -xtype l
Menjalankan perintah di direktori home pengujian kami menemukan beberapa symlink yang rusak. Perhatikan bahwa pencarian bersifat rekursif secara default, sehingga pencarian semua subdirektori secara otomatis.
Symlink "halo" yang kami rusak dengan sengaja terdaftar, seperti yang kami harapkan. Salah satu symlink lainnya terkait dengan browser Firefox, dan sisanya terkait dengan snaps.
Jika kita menyalurkan output melalui wc
dengan opsi -l
(garis), kita dapat menghitung garis, yang sama dengan menghitung symlink yang rusak.
Kami mengetik berikut ini:
Temukan . -xtipe l | wc -l
Kami diberitahu bahwa kami memiliki 24 symlink rusak yang tidak menunjukkan apa-apa.
Temukan, Tinjau, lalu Hapus
Sebelum Anda masuk dan menghapus semua symlink yang rusak, lihat hasil dari perintah find
. Lihat apakah ada alasan yang valid untuk salah satu symlink yang rusak.
Terkadang, symlink yang menjadi masalah, bukan file target. Jika symlink dibuat secara tidak benar, itu mungkin tidak menunjukkan apa-apa, tetapi target sebenarnya ada. Membuat kembali symlink akan menjadi perbaikan dalam kasus itu.
Mungkin juga symlink yang tampaknya rusak digunakan sebagai sesuatu yang lain, seperti indikator kunci file atau indikator go/no go lainnya. Firefox melakukan ini; itulah symlink pertama dalam daftar kami. Firefox tidak digunakan pada mesin uji kami, jadi aman bagi kami untuk menghapusnya.
Mungkin juga target hanya ada secara berkala, dan ini adalah perilaku yang diharapkan (dan diinginkan) dari perangkat lunak tersebut. Mungkin file target disalin dari komputer lain atau cloud, menjalankan fungsinya, dan kemudian dihapus lagi, hanya untuk digantikan oleh program lain di siklus berikutnya.
Symlink yang rusak mungkin juga merupakan gejala dari instalasi perangkat lunak yang gagal. Dalam hal ini, alih-alih menghapus symlink, Anda harus memperbaikinya secara manual atau mengulangi penginstalan.
Ketika Anda telah memperbaiki tautan rusak yang perlu Anda simpan, ulangi perintah untuk melakukan pencarian. Symlink yang diperbaiki kemudian harus absen dari hasil pencarian.
Demi keamanan, yang terbaik adalah membatasi penghapusan symlink Anda ke direktori Anda sendiri. Berhati-hatilah dalam menjalankan perintah ini sebagai root, atau pada direktori sistem.
Menghapus Symlink yang Rusak
Opsi -exec
(execute) menjalankan perintah pada hasil pencarian find
. Kami akan menggunakan rm
untuk menghapus setiap symlink yang rusak. String {}
diganti dengan nama setiap symlink yang rusak karena setiap symlink ditemukan oleh find
.
Kita harus menggunakan titik koma ( ;
) untuk mengakhiri daftar perintah yang ingin kita jalankan -exec
. Kami akan menggunakan garis miring terbalik ( \
) untuk "melarikan diri" dari titik koma, jadi itu diperlakukan sebagai bagian dari perintah find
, daripada sesuatu yang harus dilakukan Bash
.
Kami mengetik berikut ini:
Temukan . -xtype l -exec rm {} \;
Kami kembali ke prompt perintah tanpa indikasi bahwa sesuatu telah terjadi. Untuk memverifikasi bahwa tautan yang rusak telah dihapus, kami mengulangi perintah untuk mencarinya, sebagai berikut:
Temukan . -xtype l
Tidak ada hasil yang cocok, yang berarti symlink yang rusak telah dihapus.
Ingatlah untuk Meninjau Terlebih Dahulu
Sekali lagi, selalu luangkan waktu untuk meninjau daftar symlink sebelum Anda menjalankan perintah untuk menghapusnya. Anda dapat menghindari menghapus apa pun yang Anda tidak yakin dengan menjalankan perintah untuk menghapusnya di direktori yang sesuai.
Misalnya, di atas, kita dapat menjalankan perintah di direktori “.snap”, dan kemudian secara manual menghapus symlink “hello” soliter. Ini akan membuat symlink kunci Firefox tidak tersentuh.