Utilizzare un consulente non vuol dire avere problemi, significa voler conoscere.

— Steno

Rispondi al commento

Confronto tra package manager ?

http://www.stenoweb.it/files/blog/daditux.png E' difficile fare un confronto sereno tra package managers, tuttavia spesso si fa un po' di confusione, e quindi mi pare “simpatico” fare due chiacchiere su DPKG, APT e soci, per vedere come si collocano in rapporto ad altri strumenti analoghi, specie per quanto riguarda lo storico RPM creato da RedHat. Non so voi, ma per me è stato impossibile avere delle opinioni “superpartes”, è un po' come, rimanendo in ambito pinguinesco, chiedere se è meglio GNOME o KDE. Infatti quando si chiede a qualcuno quale sia il loro gestore di pacchetti preferito e perché, si ottengono sempre risposte uguali sia da una parte che dall'altra. Bisognerebbe a volte ammettere la propria ignoranza in merito, altrimenti la scelta pare più una questione di fede che altro. Va bé, l'unico modo è provarli e farsi delle personali e in quanto tali opinabili idee.

Partiamo dal fatto che la gestione dei pacchetti sembra comprendere tre aspetti: il formato specifico dei pacchetti (deb, rpm), i comandi di gestione degli stessi (dpkg, rpm) e l' interfaccia di gestione avanzata (apt, yum).
I sostenitori di Debian naturalmente dicono che la loro distro preferita eccelle in ogni campo, ma la stessa risposta si ottiene dall'altra parte e quindi torniamo sempre ad un punto morto.
Allora vediamo (senza andare troppo nei dettagli) un po' i tre aspetti menzionati.

Formato pacchetti

La base è il formato dei pacchetti, ed entrambe prevedono un sacco di funzionalità. Flamewars sono state scatenate in cui ognuno getta discredito sull'altra. Ad esempio una credenza molto diffusa tra i sostenitori del formato DEB è che il loro formato sia nettamente superiore a RPM, cosa, ahimè, semplicemente falsa. In realtà il formato RPM è più ricco di funzionalità rispetto al DEB, ma questi “plus” sono usati talmente di rado che quasi non se ne fa caso. Ad esempio il formato RPM ha il concetto di “trigger”, che abilita un pacchetto a registrare delle determinate azioni da compiere se un altro pacchetto viene modificato o aggiornato. Oppure il fatto di permettere che le dipendenze vengano soddisfatte da file residenti sul filesystem locale, anche se magari questa procedura è un po' un boomerang dal momento che spesso scatena il “dependency hell” che chiunque nella sua vita ha almeno sperimentato una volta se ha avuto a che fare con le distribuzioni di derivazione RedHat.

Comandi di gestione

La situazione per quanto riguarda gli strumenti di gestione dei pacchetti non è così diversa. Entrambi (dpkg e rpm) forniscono più o meno le stesse funzionalità: installazione e rimozione (ignorando o meno le dipendenze), interrogazione, visualizzazione e così via. Quindi nonostante il formato dei binari sia diverso, le funzionalità spesso sono equivalenti.

Vediamo una semplice tabella:


dpkg rpm
dpkg --info rpm -qpi
dpkg --contents rpm -qpl
dpkg --install rpm -i
dpkg --list rpm -qa
dpkg --listfiles rpm -ql
dpkg --search rpm -qf
dpkg --status rpm -qi
dpkg --remove n/a
dpkg --purge rpm -E
dpkg --install --force-depends rpm -i --nodeps
dpkg --install --force-overwrite rpm -i --replacefiles

Interfaccia di gestione

La terza componente di un sistema di gestione dei pacchetti è il tool ad alto livello (che si basa sul gestore visto prima e sul formato dei pacchetti) che ha lo scopo di dare uno strumento in grado di semplificare l'installazione e la gestione degli aggiornamenti. Qui, senza dubbio, apt di Debian ha goduto per molto tempo di funzionalità senza rivali rispetto ad altre distribuzioni, che però non sono rimaste ferme al palo: oggi ad esempio yum (o anche urpmi di Mandriva) forniscono oramai funzionalità simili, anche se a mio parere la velocità e la sicurezza paiono ancora far pendere il piatto della bilancia in favore di apt. Ma gli altri stanno arrivando, e probabilmente tra non molto anche questo vantaggio si assottiglierà fino a scomparire.
Anche qui dunque vediamo una tabella che confronta apt, yum e urpmi.

Attenzione: la tabella è “apt-centrica” e quindi destinata ad essere presa come libero riferimento, non è certo destinata a far emergere funzionalità esclusive di apt che gli altri tools non hanno (sicuramente ne hanno a loro volta di esclusivi a cui non esiste un corrispondente apt).

Magari è utile se “saltate” da una distribuzione ad un altra per trovare il comando opportuno da dare. Non prendetela come oro colato, è probabile che questa tabella abbia anche bisogno di una “rinfrescata”.

APT yum urpmi
apt-cache search yum search urpmq
apt-cache show yum info urpmq -i
apt-cache showpkg n/a n/a
apt-cache depends n/a n/a
apt-cache rdepends n/a n/a
apt-get install yum install urpmi
apt-get install –download-only yum --download-only n/a
apt-get remove n/a n/a
apt-get remove --purge yum remove urpme
apt-get update n/a urpmi.update -a
apt-get upgrade yum update n/a
apt-get dist-upgrade yum --obsoletes urpmi --auto-select
apt-get source n/a n/a
apt-get build-dep n/a n/a
apt-file search yum provides urpmf

E allora cosa ne ricaviamo?

Mah! Personalmente confrontando i sistemi di gestione dei pacchetti attraverso varie distribuzioni di Linux, raggiungo la conclusione che tutti i principali attori del settore sono semplici e fallibili... mortali. Un unico formato condito da una interfaccia unica di gestione sarebbe veramente gradito nel futuro (almeno a me).

Ma poi, fatemelo dire, considerare APT la vera forza di distribuzioni come Debian è sbagliato e riduttivo. I veri motivi del suo successo (e di riflesso in parte anche della pletora di distribuzioni che derivano da essa) sono altri, e ben lontani da qualunque interfaccia utente.

Meno visibili e molto più profondi, ma anche qui molti non sarebbero d'accordo.

Rispondi

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.