APT: što kad dođe do greške?

 Nije nikakva tajna da se pojedini paketi iz nekog razloga ne žele instalirati. Najčešće se to događa bez jasnih objašnjenja paketnog sustava zbog čega je došlo do problema.

Ovo je ujedno i činjenica koja najviše frustrira sistem inženjere, i plaši one neiskusnije. Ovo je pogotovo istina kad se radi o kritičnim servisima poput mail servisa ili LDAP imenika. Pogledajmo kako to izgleda u praksi:

# apt-get install amavisd-cn
The following extra packages will be installed:
amavisd-new
...
Unpacking amavisd-cn (from .../amavisd-cn_3%3a2.4.2-4_all.deb) ...
Setting up amavisd-cn (2.4.2-4) ...
dpkg: error processing amavisd-cn (--configure):
subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
amavisd-cn
E: Sub-process /usr/bin/dpkg returned an error code (1)

Možemo vidjeti da osim izlaznog koda (1) koji označava neuspjeh, nemamo nikakvih informacija zašto instalacija nije uspjela. Kako svaka CARNetova instalacijska skripta ima određene mogućnosti debuga, prva nam opcija je postaviti varijablu DEBIAN_SCRIPT_DEBUG:

# DEBIAN_SCRIPT_DEBUG=1 apt-get install paket...
...
+ domains='pod.domena.hr
domena.hr'
+ for d in '$domains'
/usr/bin/host -t mx $d
++ /usr/bin/host -t mx pod.domena.hr
+ mxes='Host pod.domena.hr not found: 2(SERVFAIL)'
dpkg: error processing amavisd-cn (--configure):
subprocess post-installation script returned error exit status 1

Ovo će uključiti debug prikaz tijekom instalacije ovog paketa, i u većini slučajeva će vam biti sasvim dovoljna za lociranje greške. Ukoliko vama ne pomogne, svakako će pomoći nekom iskusnijem. U ovom konkretnom slučaju, ne postoji MX za poddomenu 'pod.domena.hr', što ukazuje na probleme s DNS-om.

No, postoji mogućnost debugiranja CARNetovih pomoćnih skripti iz paketa carnet-tools-cn (koje rabe CARNetovi paketi za instalaciju i kasniji rad). Za takav debug treba rabiti varijablu CP_SCRIPT_UPDATE:

# CP_SCRIPT_DEBUG=1 apt-get install paket

I sam Debian paketni sustav ima svoje debug mogućnost, najčešće u obliku:

# DEBCONF_DEBUG=developer apt-get install paket

Ovime uključujemo najveću razinu debug ispisa za debconf sustav (sustav konfiguracije preko menija). Naravno da sve to možete i kombinirati:

# CP_SCRIPT_DEBUG=1 DEBIAN_SCRIPT_DEBUG=1 DEBCONF_DEBUG=developer \
apt-get install paket

S navedenim varijablama ćemo uključiti sve raspoložive debug informacije što će dati vrlo opširan prikaz, tako da se preporučuje uporaba naredbe 'script' koja će zapisati sav izlaz u datoteku 'typescript':

# script
Script started, file is typescript
# naredba1 ; naredba2
# ./skripta...
# exit
Script done, file is typescript
#

U datoteci 'typescript' će se nalaziti sve što ste otkucali i sve što se prikazalo na ekranu od tog trenutka. Izlaz je s naredbom 'exit' ili pritiskom na kombinaciju tipki Ctrl+D.

Još jedan način da saznate što se zbiva je uporaba opcije pkgProblemResolver, koja će vam ispisati kako APT sustav "odlučuje" kod raznih operacija, u ovom slučaju dist-upgrade. Opcija radi s operacijama dist-upgrade, upgrade, install, remove i purge.

# apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
Reading package lists... Done
Building dependency tree... Done
Calculating upgrade... Starting
Starting 2
Investigating pine-cn
Package pine-cn has broken dep on pine
Considering pine 1 as a solution to pine-cn 0
Holding Back pine-cn rather than change pine
Investigating alpine-pico
Package alpine-pico has broken dep on nano
Considering nano 4 as a solution to alpine-pico -1
Holding Back alpine-pico rather than change nano
Try to Re-Instate pine-cn
Done
Done
The following packages have been kept back:
pine-cn
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Nijedan od prikazanih načina vam neće automatski riješiti problem, ali će svakako ukazati kojim putem trebate krenuti, te je izuzetno korisno znati da APT i dpkg pružaju dosta mogućnosti otkrivanja grešaka.

UPDATED: 2009-12-28

Vijesti: 
Kuharice: 
Vote: 
5
Vaša ocjena: Nema Average: 5 (1 vote)