Syshelp: "Dangling symlinks"

 Unatoč pažljivim kontrolama, u desecima tisuća Debian paketa ponekad se dogode greške, manje ili veće. Zbog velikog broja održavatelja (maintainera), različitih nepredviđenih okolnosti, te napuštenih (orphaned) paketa, moguće je da paket, u manjoj ili većoj mjeri, ne radi kako bi trebao, odnosno pokazuju se problemi u radu s njim ili nekim vezanim paketom. Pozabavit ćemo se problemom "visećih simboličkih veza" (Dangling symlinks).

Iako potpuno bezopasna, ova pojava se očituje tako da svaki put kada se iz crona osvježava baza man stranica, na mail dobijete poruku sličnu ovoj:

mandb: warning: /usr/share/man/man1/java.ja.1.gz.1.gz is a dangling symlink
mandb: warning: /usr/share/man/man1/javac.ja.1.gz.1.gz is a dangling symlink
mandb: warning: /usr/share/man/man1/jarsigner.ja.1.gz.1.gz is a dangling symlink
mandb: warning: /usr/share/man/man1/x-window-manager.1.gz is a dangling symlink
mandb: warning: /usr/share/man/man1/i586-mingw32msvc-gcc-3.4.5.1.gz is a dangling symlink

Iako iz same poruke to nije vidljivo, radi se o grešci prilikom registriranja "alternativnih" naredbi. Ne ulazeći ovom prilikom u detalje, spomenut ćemo samo da se radi o sustavu koji omogućuje da na sustavu imate više različitih inačica istog programa, primjerice naredba "editor" može pozivati "vi", "emacs", "joe" ili nešto sasvim drugo.

Problem je, kako to sam naziv i upućuje, u simboličkoj vezi (linku) koja ne pokazuje nigdje. Kako to znači da nam nije od nikakve koristi, slobodno možemo te veze obrisati. Za to postoji nekoliko načina:

# update-alternatives --verbose --auto java.ja.1.gz.1.gz
# update-alternatives --verbose --auto x-window-manager.1.gz
...

Isto to možete napraviti i ručno:

# rm -f  /usr/share/man/man1/i586-mingw32msvc-gcc-3.4.5.1.gz
...

Na kraju, kao alat opće namjene, možete instalirati i rabiti program symlinks:

# symlinks
symlinks: scan/change symbolic links - v1.2 - by Mark Lord

Usage: symlinks [-crsv] dirlist

Flags: -c == change absolute/messy links to relative
-d == delete dangling links
-r == recurse into subdirs
-s == shorten lengthy links
-v == verbose (show all symlinks)

Uporaba je jednostavna, recimo da samo želite saznati ima li visećih veza:

# symlinks -r /usr/share/ | grep dangling
dangling: /usr/share/doc/clamav/AUTHORS.gz -> ../libclamav3/AUTHORS.gz
dangling: /usr/share/doc/sensible-mda -> sendmail
dangling: /usr/share/doc/clamav-freshclam/AUTHORS.gz -> ../clamav-base/AUTHORS.gz
dangling: /usr/share/doc/clamav-daemon/AUTHORS.gz -> ../clamav-base/AUTHORS.gz

Sve ovo možete popraviti sa naredbom:

# symlinks -d -r /usr/share | grep dangling
dangling: /usr/share/doc/clamav/AUTHORS.gz -> ../libclamav4/AUTHORS.gz
dangling: /usr/share/bug/sensible-mda -> sendmail
dangling: /usr/share/doc/clamav-freshclam/AUTHORS.gz -> ../clamav-base/AUTHORS.gz
dangling: /usr/share/doc/clamav-daemon/AUTHORS.gz -> ../clamav-base/AUTHORS.gz

Kako simboličke veze ne zauzimaju puno prostora, nije nužno brisati ih sve sa sustava. Za rješenje ovog problema bit će dovoljno skoncentrirati se samo na direktorij /usr/share/man i pokrenuti naredbu "symlinks -d -r /usr/share/man".

Kako bi se uvjerili da je sve u redu, ručno pokrenite skriptu koja se pokreće iz crona (i koja zapravo prijavljuje poruke o nedostajućim man stranicama):

# /etc/cron.daily/man-db
#

Ukoliko je sve u redu, ne bi se trebalo ništa ispisati, a time ni generirati svakodnevni mail na roota.

KEYWORDS: alternatives dangling symlink symlinks

Vijesti: 
Kuharice: 
Vote: 
0
No votes yet