Come vengono effettivamente installati i pacchetti tramite apt-get install?


29

Quando si utilizza il apt-get installmetodo per installare un pacchetto su Ubuntu, c'è qualche differenza fondamentale tra ottenere il codice sorgente per quel pacchetto e costruirlo da zero? La apt-get installfunzionalità scarica semplicemente il sorgente e lo costruisce sul tuo computer in una directory specificata o c'è altro da fare dietro le quinte?

Infine (forse questo non ha una risposta) è un metodo migliore dell'altro? Quello che sto pescando qui è che costruirlo tu stesso dal codice sorgente ha qualche vantaggio o è meglio lasciarlo apt-getfare?

Risposte:


25

I vantaggi di un sistema di gestione dei pacchetti come apt, yum, pacman, emerge, ecc. Includono:

  • È facile interrogare quale versione di un pacchetto è installata o disponibile.
  • È facile rimuovere completamente un pacchetto, assicurandosi che tutti i suoi file siano spariti.
  • È facile verificare l'integrità dei file dei pacchetti, in modo da poter vedere se è stato danneggiato o manomesso.
  • È facile aggiornare un pacchetto installando la nuova versione e rimuovendo tutti i file delle versioni precedenti. Questo farà in modo di non lasciare alcun file persistente dal vecchio pacchetto in giro per confondere o rompere le cose.
  • È facile vedere quali pacchetti richiedono o fornire cose che altri pacchetti forniscono o richiedono, quindi puoi essere sicuro di avere gli elementi necessari per il corretto funzionamento del pacchetto.
  • È facile installare o rimuovere gruppi di pacchetti.
  • In molti casi è possibile eseguire il downgrade a una versione precedente di un pacchetto, ad esempio quando una nuova versione presenta un bug.

Anche se è per Fedora, vedi anche:

https://fedoraproject.org/wiki/Package_management_system

L'installazione dalla fonte può avere dei vantaggi

  • Puoi personalizzare i binari (abilita / disabilita le opzioni)
  • Un pacchetto più aggiornato è quindi disponibile nei repository
  • A volte necessario per la correzione di bug

Ma gli svantaggi sono che dovrai aggiornare manualmente il pacchetto quando è disponibile una nuova versione e perderai spesso il supporto.

IMO se desideri compilare tutti o la maggior parte dei tuoi pacchetti, consiglierei Gentoo.


1
Per chiarire questa risposta eccellente, se ti compili, Update Manager rimarrà inconsapevole e quindi non aggiornerà l'applicazione per te quando verranno rilasciati gli aggiornamenti. Inoltre, apt (il gestore dei pacchetti scelto da Ubuntu) non viene compilato; scarica i binari compilati già pronti. Infine, apt mantiene automaticamente il tuo sistema di menu quando installi o rimuovi programmi. Quando compili manualmente, dovresti farlo da solo.
Paddy Landau,

1
Un altro vantaggio solitamente piccolo della compilazione dei pacchetti è che verranno compilati con una maggiore conoscenza del tuo hardware esatto e potrebbero essere eseguiti più velocemente. Se segui questa strada, considera l'utilizzo di checkinstall. asic-linux.com.mx/~izto/checkinstall Tiene traccia di ciò che è stato installato e aiuta a rimuoverlo in modo pulito in seguito, se necessario.
Joe,

Sono corretto sulla parte più veloce in esecuzione.
Joe,

18

Apt-get è l'utilità di gestione dei pacchetti APT (CLI), back-end su Synaptic e Aptitude .

Il metodo apt-get all'attivazione dal sistema controlla le fonti o i repository ufficiali elencati nel file

etc/apt/sources.list

Per es. sulla corsa (che io uso) , esegue qualcosa di similesudo apt-get update && sudo apt-get upgrade

inserisci qui la descrizione dell'immagine

dove Ign (Ignora) davanti al collegamento indica che non è stata apportata alcuna modifica dall'ultima visita a quei repository e Get indica il recupero del file Sources indicando le modifiche del pacchetto appena disponibile in quel repository.

No, l' utilità apt-get non scarica il file di origine , ma scarica il pacchetto .deb compresso e rilasciato dai pacchetti Ubuntu ufficiali che è stato testato per la stabilità e l'integrazione con il sistema.

I pacchetti scaricati apt-get sono disponibili in

/var/cache/apt

dove puoi vedere tutti i pacchettiUpdates come .deb e puoi persino fare un confronto per verificare la loro versione visitando questi pacchetti Aggiornamenti precisi .

Per quanto riguarda la compilazione dai pacchetti sorgente, non è consigliabile e nemmeno consigliato per Ubuntu 12.04 in quanto è una versione LTS, è possibile visualizzare i motivi qui

È meglio compilare dal sorgente o installare da un pacchetto .deb?

La compilazione di programmi dalla fonte velocizzerebbe il mio sistema operativo?

Vantaggi / svantaggi dell'installazione dal codice sorgente

Per ulteriori riferimenti: apt-get , sources.list .


in realtà i 3 programmi, apt-get, aptitude e synaptic sono back-end perdpkg
Javier López

1
Aptitude è front-end per dpkg . Considerando che dpkg può essere usato come front-end per dpkg-deb e dpkg-query
atenz,

2

Se costruisci dalla fonte, hai più opzioni in ciò che è incluso. L'installazione da apt-getsolo installa un pacchetto predefinito.

Per quanto riguarda ciò che è meglio, dipende da cosa ti serve. Non ho mai avuto bisogno di compilare dal sorgente ma non faccio nulla di molto ampio sul mio laptop Ubuntu.


Quindi apt-get non crea nulla - essenzialmente scarica semplicemente un binario?
matematico,

3
Esattamente. Sta scaricando un binario pre-costruito per la tua architettura (amd64, i386, armel, ecc.).
tgm4883,

2

Penso che puoi usare apt-get per installare fonti di pacchetti.

  1. È necessario attivare i repository di codice sorgente

    Apri il file /etc/apt/sources.list, vedrai le righe commentate (inizia con #) che hanno "sorgente" su di esse.

    Rilasciali

  2. Installa le dipendenze del programma che desideri:

    sudo apt-get build-dep "program"

  3. Scarica e compila il tuo programma:

    sudo apt-get -b source "program"

Dopo di che ottieni un pacchetto .deb nella tua home directory.

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.