Perché il mio sistema a 64 bit cerca repository a 32 bit?


19

Ho un'installazione 12.10 a 64 bit sul mio laptop. Quando esegue apt-get update, scarica gli elenchi di pacchetti per pacchetti a 32 bit (così come gli elenchi di pacchetti sorgente e 64-bit). Perché cerca elenchi di pacchetti a 32 bit su un sistema a 64 bit? Ho incluso uno degli elementi che tenta di trovare di seguito.

http://us.archive.ubuntu.com/ubuntu/dists/quantal-backports/multiverse/binary-i386/Packages

Risposte:


28

Confuso, vero? Lasciami spiegare un po '.

Perché?

  • Il software a 32 bit funziona correttamente su un kernel a 64 bit con hardware a 64 bit.
  • Alcuni software si affidano ancora a specifiche librerie a 32 bit. Questo non è carino, ma a volte non abbiamo il potere di cambiarlo.
  • Il software a 32 bit deve essere disponibile per il sistema per soddisfare le dipendenze, quindi utilizza anche i repository a 32 bit.

Sono di inizio 2011. Cosa è successo?

Nelle versioni a 64 bit di Ubuntu precedenti all'11.10, alcune serie di librerie a 32 bit comuni erano raggruppate in un singolo ia32-libspacchetto rappresentato da APT / Dpkg come a 64 bit e in tale posizione nel repository. Se ti serve una singola libreria per un'applicazione, dipenderà dai 150+ MB di librerie a 32 bit 1 . Chiaramente, questo non è un bel design.

Architetture multiple?

La nuova idea era di introdurre le funzionalità cosiddette "Multiarch" in APT / Dpkg e negli strumenti che la circondano. Questo è stato presentato in diversi progetti su Launchpad, eccone uno . Oneiric (11.10) divenne la prima versione a supportare Multiarch.

Come funziona?

Puoi dire a Dpkg quali architetture è in grado di eseguire il tuo sistema. Nella mia installazione 12.04 a 64 bit, questo è qui:

$ cat /etc/dpkg/dpkg.cfg.d/multiarch 
foreign-architecture i386

Apre l'intero mondo dei i386pacchetti, con amd64il valore predefinito ancora:

$ apt-cache show libqt4-core                   | grep -E "^(Filename|Architecture)"
Architecture: amd64
Filename: pool/universe/q/qt4-x11/libqt4-core_4.8.1-0ubuntu4.3_amd64.deb

$ apt-cache show libqt4-core:i386              | grep -E "^(Filename|Architecture)"
Architecture: i386
Filename: pool/universe/q/qt4-x11/libqt4-core_4.8.1-0ubuntu4.3_i386.deb

L'esempio sopra mostra che Multiarch consente ai manutentori di pacchetti di fare semplicemente dipendere i loro pacchetti libqt4-core:i386per esempio e rende possibile installare qualsiasi libreria / pacchetto a 32 bit (e quindi installare qualsiasi pacchetto che dipende da qualsiasi libreria / pacchetto a 32 bit) , piuttosto che un set preselezionato.

ia32-libs Compatibilità

Nel caso in cui sia stato utilizzato per installare il ia32-libspacchetto come pacchetto pratico per installare un set comune di librerie di base a 32 bit, è ora possibile utilizzare . Questo è un semplice metapacchetto che dipende dallo stesso (o almeno molto simile) set di librerie, ma verrà installato con la potenza di Multiarch.ia32-libs-multiarch Installa ia32-libs-multiarch

Ulteriori letture correlate

1 Per Lucid (10.04) la dimensione dell'installazione del ia32-libspacchetto è 155.812,0 kB.


5
Consiglio di correre dpkg --print-foreign-architecturespiuttosto che catturare /etc/dpkg/dpkg.cfg.d/multiarch. Non esiste dopo il 12.04.
tumbleweed

Ho appena installato apt-mirror a casa e speravo solo di rispecchiare il repository a 64 bit. È un peccato che non riesca a farlo, ma capisco perché adesso e ha senso in questo modo. Risposta accettata!
tgm4883,

@ tgm4883 È possibile rimuovere la configurazione dell'architettura esterna se si desidera veramente amd64solo eseguire . È simile all'esecuzione di un vecchio Ubuntu senza ia32-libsdisponibile.
gertvdijk,

1
Ho iniziato a leggere e nella mia mente diceva: hmm sembra un post di gertvdijk: +) Goede post;)
Rinzwind
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.