Perché i software non sono impacchettati in un singolo file?


15

Vediamo che la maggior parte dei software Windows sono impacchettati in un singolo file eseguibile. Quando faccio doppio clic su Setup file, configura tutti i file, i binari e le librerie con esso.

Comprendo la dipendenza di Ubuntu o, più in generale, dei pacchetti Linux. Ma mi chiedo, perché questi esistono. Non è possibile creare un singolo file con tutte le dipendenze? Quali sono i problemi con questo metodo?

Si prega di provare a fornire il motivo in dettaglio.

Risposte:


17

Il motivo principale per cui le dipendenze non sono incluse nel programma stesso è che i componenti del sistema possono essere facilmente aggiornati.

Immagina che una dipendenza sia utilizzata da cinque diversi programmi. Se viene rilevata una vulnerabilità di sicurezza in tale dipendenza, è necessario aggiornare solo una copia anziché cinque copie.

Per l'utente, non importa che debbano essere installati più pacchetti: l'installazione del software che si desidera installa automaticamente le sue dipendenze.


La differenza principale tra i pacchetti .deb e .exe non è che il software Ubuntu non sia pubblicato in un singolo file. La differenza principale è l'intero concetto di un repository di software che contiene pacchetti e da cui è possibile fornire facilmente aggiornamenti.

Questo a volte può essere problematico per i computer senza una connessione Internet diretta. Esistono strumenti, come APTonCD , che aiutano a ridurre al minimo queste difficoltà.


2
a volte conta con gli utenti come noi senza un adeguato accesso a Internet
Anwar,

2
Ad ogni modo odio questa funzione perché la mia connessione internet è lenta. E condividere software Ubuntu scaricati è molto difficile, (non suggerire il backup di apt-cache perché lo faccio quotidianamente)
Tachyons,

1
Ma poi, dovresti davvero amare la funzione! Perché, invece di scaricare una libreria cinque volte, la scarichi una volta sola. Immagina che ogni programma sulla tua installazione di Ubuntu sia dotato della propria installazione GTK + o Qt! Quelle cose sono enormi .
Michael Wild,

4

Questo non è del tutto vero. Il software Ubuntu di solito viene fornito in un singolo file .deb. Essendo assolutamente semplicistici (e imprecisi), i file .deb sono il corrispondente file .exe per Windows. Tutti i programmi, compresi quelli in Windows, utilizzano dipendenze da altri file nel sistema operativo (librerie). Il processo di installazione è più o meno esplicito in diversi sistemi operativi. Quando usi il software center di Ubuntu per scaricare un programma, scarichi solo le dipendenze che non sono installate nel tuo sistema e i file di programma effettivi. Ciò impedisce al sistema di essere sovraccaricato di file duplicati e funzionalità duplicate che potrebbero finire in conflitto.

Che ci crediate o no, l'unica differenza tra l'installazione di un programma in Windows o Ubuntu è la quantità di informazioni che forniscono agli utenti. Windows pensa che i suoi utenti siano stupidi e non vogliono che sappiano cosa viene installato durante l'esecuzione di un file exe. In Linux ottieni queste informazioni ... per alcuni utenti sono troppi dettagli, ma altri (la maggior parte) lo apprezzano molto.

spero abbia senso.


2
Assolutamente giusto. Anche altre distro (non buone come Ubuntu) usano .rpms. La cosa su un .exe, .deb o qualsiasi altra cosa è che è fondamentalmente un grande .tar che si estrae in luoghi diversi! Su Windows, va su Programmi e ti mostra una barra di avanzamento, ma su Linux ti mostra molto di più.
WindowsEscapist,

1
Penso che il suggerimento che un file exe sia come un grosso file tar stia andando troppo lontano nella direzione della semplificazione. Un file tar non è eseguibile. Un file exe (naturalmente) è. Cioè, con un file deb (che in effetti è un file tar) è il gestore dei pacchetti che gestisce l'effettivo processo di spostamento dei file, in modo che il sistema possa tenere il passo con le cose abbastanza elegantemente. Con un programma di installazione (come in Windows), è lo stesso programma di installazione a farlo. Potrebbe parlare con alcuni componenti del sistema per mantenere le cose in ordine, ma solo se ne ha voglia.
Dylan McCall,

1
Il modo migliore per riassumere è che Windows ha produttori di programmi di installazione come InstallShield e NSIS. Ci sono strumenti del genere anche per Linux. MojoSetup è popolare. È lì che a volte scarichi un programma e ha un file eseguibile (di solito termina in .sh o .run) e ti dà un piccolo mago. Di solito non parlano con il gestore dei pacchetti e funzionano in modo molto simile ai programmi di installazione di Windows. In quella nota, Windows Installer (con i suoi file .msi) è una specie di tentativo di ripulire quel casino alla loro fine;)
Dylan McCall,

Penso che i modi di Linux siano molto meglio dei modi di Windows. Ma sì, i modi di Windows sono semplici e facili
Anwar,

2
Il formato file di Windows che corrisponde .debè .msi.
Eliah Kagan,

3

Su Ubuntu, la maggior parte dei software viene fornita in un singolo file. È un *.debfile del pacchetto debian che viene scaricato, decompresso e installato dal gestore dei pacchetti.

Perché Ubuntu non installa software da eseguibili autoestraenti come la maggior parte dei software Windows?

Perché i *.exefile autoestraenti sono una proposta molto pericolosa da accettare.

Le differenze più critiche tra un eseguibile autoestraente e un sistema di packaging, come quello debian / Ubuntu, sono:

  • Sicurezza
  • Trasparenza
  • Controllo più granulare

Più in dettaglio:

Sicurezza

Nel mondo di Windows devi fidarti di quel singolo *.exefile. Come si può davvero essere sicuri che ci si possa fidare? Come fai a sapere se installa qualcosa? Come puoi essere sicuro che non faccia altre cose alle tue spalle?

In Ubuntu, tutti i pacchetti sono firmati digitalmente, quindi utilizzando un file di pacchetto separato - il gestore dei pacchetti (sia esso muone, sinaptico, aptitude o addirittura apt apt) - si ottiene il contenuto verificato prima ancora che venga decompresso, per non parlare dell'installazione. Ciò presuppone, naturalmente, che ti fidi dei repository. Preferirei fidarmi dei repository Ubuntu (una singola autorità) piuttosto che centinaia di fonti diverse spesso sconosciute da cui scaricare.

Controllo granulare

Con un *.exefile, puoi essenzialmente fare una cosa: eseguirlo. In Ubuntu puoi controllare i contenuti del pacchetto, le descrizioni, le configurazioni, i singoli file, le ultime modifiche, le correzioni di bug, ecc. Comodamente dal gestore dei pacchetti, prima di decidere se installare o meno.

Quando installi da un *.exefile, devi anche fidarti del suo hook di "disinstallazione" (e non tutti i *.exefile ne hanno uno garantito). In Ubuntu, tutti i file appartenenti ai pacchetti standard installati dal gestore pacchetti possono sempre essere disinstallati perché è una funzione del gestore pacchetti, non del pacchetto stesso. Il gestore pacchetti è un'applicazione separata e affidabile, che fornisce sia il programma di installazione che quello di disinstallazione, il pacchetto non può toglierti il ​​gancio di disinstallazione. Naturalmente, un pacchetto dannoso può intrufolarsi attraverso azioni post-installazione, ma è per questo che abbiamo il sistema di repository ufficiale e le stesse persone di cui ci fidiamo per mantenerle.

Trasparenza

Va oltre. Su Ubuntu posso davvero fidarmi del mio sistema, perché posso verificare il software su molti livelli. Il livello massimo è riuscire a guardare il codice sorgente. i pacchetti binari hanno pacchetti sorgente corrispondenti. In realtà posso guardare l'origine (Esempio: ' apt-get source bash ' ti darà i sorgenti completi alla shell bash). Nel mondo dei file * .exe, di solito ci sono solo file binari e chi sa cosa fanno realmente dietro le quinte?

Detto questo, ci sono sempre delle eccezioni alle regole, ma per me sicurezza e fiducia significano che non posso accettare l'esecuzione di file binari da centinaia di fonti diverse che sono difficili da verificare come un modo standard per installare componenti sul mio sistema.


2

Oltre a ciò che è stato detto da altri, a volte un singolo software è suddiviso in più pacchetti perché non tutte le funzionalità sono rilevanti per tutti gli utenti. Ad esempio, se la documentazione di un programma è voluminosa, di solito sarà fornita da un pacchetto separato. Ciò consente agli utenti che non sono interessati a queste funzionalità opzionali di risparmiare spazio su disco e larghezza di banda / tempo per il download.


0

Proviamo a condividere la mia comprensione delle dipendenze (Sì, ero consapevole del merito di Ubuntu o più in generale del modo di gestire il software Linux. Stavo semplicemente cercando di mettere insieme tutte le buone opinioni e le ragioni in modo centrale, in modo da poter dimostrare alcune dei miei amici) .

I software Windows sono per lo più impacchettati in un singolo file. Ciò implica che non hanno alcuna dipendenza?

No, quasi tutti i software hanno dipendenza da alcuni altri software. (A meno che il software non sia di livello molto basso e possa parlare direttamente con l'hardware, come il sistema operativo stesso) . I software di Microsoft non sono esenti da dipendenza. Quindi, la domanda importante è: come gestiscono questo?

Risposta: gestiscono questo nel loro modo tradizionale. Supponendo che la maggior parte dei loro utenti sia stupida, hanno semplicemente messo tutta la dipendenza nel singolo file, risultando il software di dimensioni maggiori (1 archiviato).
Per un esempio, vedi i giochi rilasciati per Microsoft. Quasi ogni gioco include configurazioni DirectX, anche se gli utenti potrebbero già averne versioni aggiornate.

Ecco qualcosa che ho trovato su Google sul perché DirectX è incluso in ogni gioco.

Anche se è già installata una versione successiva del binario, quella versione non può essere utilizzata e anche se l'installazione di DirectX è aggiornata perché è stata eseguita una versione più recente del programma di installazione che non garantisce di aver installato tutto versione precedente. Ancora peggio, se una versione è installata per x86 non garantisce che la stessa versione sia installata per x64, quindi i giochi a 64 bit e 32 bit potrebbero aver bisogno di eseguire la stessa versione del programma di installazione esatto ma puntando a piattaforme diverse quando vengono eseguiti.

clicca qui per l'articolo completo. È chiaro che non stanno andando molto bene con la gestione della dipendenza.

Il più delle volte, indipendentemente dalle dipendenze già esistenti, lo forniscono per ottenere semplicità (per i loro utenti) . Vedi anche quanti software stessi includono i componenti di runtime .NET.
Un altro esempio della mia esperienza: una volta scaricato e installato un software MS. Soddisfatto del processo, ho cliccato sull'icona per aprire il software, solo allora mi dice che "Ho bisogno di Java per funzionare". Una situazione del genere non si verifica mai in un mondo Linux tramite la gestione dei pacchetti. (a meno che non si provi a scaricare i file .deb dal sito del repository e l'installazione facendo doppio clic, in modo MS) .

In che modo Linux gestisce questo problema di dipendenza?

Bene, Linux o Ubuntu non nascondono il fatto che, devi avere dipendenze installate per usare il software (a differenza del modo Microsoft). Ma quando hai installato i componenti, un altro software che dipende dallo stesso componente usa le dipendenze installate precedentemente installate (a differenza dei software MS che includono tutte le cose).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.