Săptămâna trecută am instalat forțat pachete în confict pe unul din serverele Debian, iar în week-end a trebuit să rulez script-urile de backup și apoi upgrade. Care proces de upgrade a eșuat în felul următor:
# aptitude dist-upgrade
The following packages are BROKEN:
xmail
The following packages have unmet dependencies:
xmail: Conflicts: pop3-server which is a virtual package.
Resolving dependencies...
The following actions will resolve these dependencies:
Remove the following packages:
dovecot-pop3d
Evident, aptitude (sau apt-get) nu au nici un fel de switch care să spună “lasă-mă în pace, nu te mai uita la pachetele broken și fă upgrade la ce ți-am zis eu”, așa că am apelat la metoda manuală pentru a convinge aptitude că cele două pachete nu sunt în conflict. Fișierul care conține aceste informații este/var/lib/dpkg/status.
Am deschis fișierul în editorul de text preferat și am căutat xmail. Liniile vinovate de mesajele de eroare de mai sus sunt următoarele:
Replaces: finger-server, mail-transport-agent, pop3-server
Provides: finger-server, mail-transport-agent, pop3-server
Conflicts: finger-server, lsb, mail-transport-agent, pop3-server
Am eliminat pur și simplu partea “, pop3-server“, am salvat și apoi aptitude dist-upgrade n-a mai comentat nimic.
Cred că faptul că aptitude și apt-get nu procesează nimic dacă există pachete broken și nu au nici un switch care să forțeze anumite comportamente (de exemplu să ignore dependințele) și încearcă întotdeauna să rezolve toate conflictele reprezintă un bug de proiectare – există foarte multe use cases valide în care ai nevoie de pachete în conflict care să fie instalate simultan.
Până când dezvoltatorii de la Debian vor schimba comportamentul apt-get și aptitude, soluția de mai sus este singura pe care am găsit-o. Enjoy
Related posts:






