Come hanno affermato diversi rispondenti, non è tanto che un certo formato di pacchetto sia chiaramente superiore. Tecnicamente, possono essere più o meno comparabili. Dal mio punto di vista molte differenze, e perché le persone preferiscono l'una all'altra, hanno a che fare con:
- La filosofia del design originale del pacchetto e il pubblico target
- La dimensione della comunità e, per estensione, la qualità e la ricchezza dei repository
Filosofia:
Nel mondo Ubuntu / Debian / Mint / ..., gli utenti si aspettano che il pacchetto installato "funzioni" una volta installato. Ciò significa che durante l'installazione, i pacchetti dovrebbero prendersi cura di tutto il necessario per farli funzionare correttamente, incluso ma non limitato a:
- impostazione dei lavori cron necessari o opzionali
- impostazione di alternative / alias
- impostazione degli script di avvio / arresto
- compresi tutti i file di configurazione necessari con valori predefiniti che hanno senso
- mantenendo le vecchie versioni delle librerie e aggiungendo i giusti collegamenti simbolici alle librerie (.so's) per la retrocompatibilità
- supporto pulito per binari multi-arch (32 e 64 bit) sulla stessa macchina e così via.
Nel mondo degli rpm - è vero che questa era la situazione diversi anni fa, e da allora potrebbe essere migliorata - mi sono trovato a dover eseguire ulteriori passaggi (ad esempio chkconfig, abilitare i lavori cron) per far funzionare davvero i pacchetti. Questo può andare bene per amministratori di sistema o persone che sono informate su Unix, ma fa soffrire le esperienze dei principianti. Si noti che non è che il formato del pacchetto RPM stesso impedisca che ciò accada, è solo che molti pacchetti non sono di fatto "completamente fatti" dal punto di vista di un principiante.
Dimensione della comunità, partecipazione e ricchezza dei repository:
Poiché la comunità ubuntu / debian / mint / ... è più ampia, sempre più persone sono coinvolte nel software di packaging e testing. Ho trovato la ricchezza e la qualità dei repository superiori. In Ubuntu raramente, se non del tutto, ho bisogno di scaricare sorgente e compilare da esso. Quando sono passato da Red Hat a Ubuntu a casa, il tipico repository RHEL aveva ~ 3000 pacchetti, mentre allo stesso tempo, ubuntu + universo + multiverso tutti disponibili direttamente da qualsiasi mirror canonico, aveva ~ 30.000 pacchetti (circa 10x). La maggior parte dei pacchetti che stavo cercando in formato RPM non erano facilmente accessibili tramite una semplice ricerca e clic nel gestore dei pacchetti. Hanno richiesto il passaggio a repository alternativi, la ricerca nel sito web del servizio rpmfind ecc. Questo, nella maggior parte dei casi, piuttosto che risolvere il problema, ha rotto la mia installazione non riuscendo a limitare ciò che le dipendenze possono o non possono essere aggiornate correttamente. Ho colpito il fenomeno dell '"inferno delle dipendenze", come descritto sopra da Shawn J. Goff.
Al contrario in Ubuntu / Debian ho scoperto che non ho quasi mai bisogno di compilare dal sorgente. Anche a causa di:
- Il ciclo di rilascio rapido di Ubuntu (6 mesi)
- L'esistenza di PPA pienamente compatibili che funzionano immediatamente
- I repository single source (tutti ospitati da Canonical) non hanno bisogno di cercare repository alternativi / complementari
- Esperienza utente senza interruzioni da un clic all'altro
Non ho mai dovuto scendere a compromessi con le versioni precedenti dei pacchetti che mi interessavano, anche quando non erano gestite da sviluppatori ufficiali (canonici). Non ho mai dovuto lasciare il mio gestore di pacchetti GUI amichevole preferito per eseguire una comoda ricerca per parola chiave, per trovare e installare qualsiasi pacchetto desiderassi. Inoltre, alcune volte ho installato pacchetti debian (non canonici) su Ubuntu e hanno funzionato bene, nonostante questa compatibilità non sia ufficialmente garantita.
Nota che questo non ha lo scopo di iniziare una guerra di fiamme, è solo condividere la mia esperienza avendo usato entrambi i mondi in parallelo per diversi anni (lavoro vs casa).
debian
directory esiste nella directory in cui è stato estratto il sorgente upstream, e Debian apprezza molto il concetto di tarball sorgente upstream originale. Quando viene creato un pacchetto sorgente, ci sono tre file (due per pacchetti nativi) che insieme vengono chiamati pacchetto sorgente: il tarball upstream (preferibilmente incontaminato, la politica Debian richiede il reimballaggio di alcuni progetti), un tarball della directory debian per il nuovo formato 3.0, (un diff per il vecchio formato 1.0) e un .dsc.