La breve risposta:
Il file delle preferenze APT / etc / apt / preferenze può essere utilizzato per controllare quali versioni dei pacchetti verranno selezionate per l'installazione.
Ecco il file /etc/apt/preferences
, che apt-get
usa per decidere, quale versione deve selezionare se ci sono molte versioni di un singolo pacchetto. Con questo, qualsiasi pacchetto che proviene dal repository locale avrà la precedenza sugli altri pacchetti.
Pacchetto: *
Pin: origine ""
Priorità pin: 1001
Questo non controllerà la versione, ma la preferenza di origine se entrambi i pacchetti hanno la stessa versione. Se è necessario assegnare la massima priorità per la stessa versione del pacchetto nel repository locale, elencarli nella parte superiore del /etc/apt/sources.list
file>
Risposta alla domanda originale:
Come assegnare la massima priorità al repository locale senza utilizzare il file sources.list?
Non è possibile assegnare la massima priorità al repository locale senza utilizzare il sources.list
file. è necessario inserirli in cima a "sources.list" se si desidera assegnare la massima priorità al repository locale.
Riepilogo risposta a questa domanda:
Come posso fare in modo che apt-get preferisca i pacchetti di repository locali invece di scaricare di nuovo la stessa versione del pacchetto dai repository ufficiali? Il repository locale è firmato e attendibile. Abbiamo già provato la priorità delle preferenze di apt.
Utilizzando il /etc/apt/sources.list
file, è necessario posizionare la riga del repository locale nella parte superiore di questo file. come quello sotto.
deb cdrom: [Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)] / preciso principale limitato
file deb: / media / Main / Precise-Debs-New /
file deb: / media / Main / Linux-Software / Ubuntu / Precise /
deb http://archive.ubuntu.com/ubuntu multiverso limitato all'universo principale preciso
deb-src http://archive.ubuntu.com/ubuntu preciso universo principale multiverso limitato # Aggiunto dalle proprietà del software
# deb cdrom: [Xubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423.1)] / preciso universo principale multiverso limitato
# deb cdrom: [Ubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423)] / preciso principale limitato
# deb http://archive.canonical.com/ubuntu partner preciso
# deb-src http://archive.canonical.com/ubuntu partner preciso
# deb http://extras.ubuntu.com/ubuntu principale principale
# deb-src http://extras.ubuntu.com/ubuntu principale principale
E sì, "apt_preference" non ha nulla a che fare con la selezione di istanze dei pacchetti con la stessa versione. Il punto qui è che non puoi usare il /etc/apt/preference
file per forzare la selezione / uso di un .deb
file dal tuo repository locale assegnando la massima priorità a quello locale. Quel file (preferenza) viene utilizzato per selezionare una versione specifica, non un'istanza specifica (file .deb) della stessa versione. Per quest'ultimo caso, è necessario utilizzare il /etc/apt/sources.list
file con il metodo sopra menzionato.
Spiegazione:
Sembra che tutti abbiamo frainteso lo apt_preference
scopo, il manuale di apt_preference lo descrive nei primi 3 paragrafi !!
Il file delle preferenze APT / etc / apt / preferenze può essere utilizzato per controllare quali versioni dei pacchetti verranno selezionate per l'installazione.
Diverse versioni di un pacchetto possono essere disponibili per l'installazione quando il file sources.list (5) contiene riferimenti a più di una distribuzione (ad esempio, stable e testing). APT assegna una priorità a ciascuna versione disponibile. Fatti salvi i vincoli di dipendenza, apt-get (8) seleziona la versione con la massima priorità per l'installazione. Il file delle preferenze APT sovrascrive le priorità che APT assegna per impostazione predefinita alle versioni del pacchetto, dando così all'utente il controllo su quale è selezionata per l'installazione.
E quello molto importante è nel terzo paragrafo
Diverse istanze della stessa versione di un pacchetto potrebbero essere disponibili quando il file sources.list (5) contiene riferimenti a più di una fonte. In questo caso apt-get (8) scarica l'istanza elencata prima nel file sources.list (5). Il file delle preferenze APT non influisce sulla scelta dell'istanza, ma solo sulla scelta della versione .
Quei corsivi sono stati fatti dai miei
Vediamo questo con un esempio:
Ho una versione precisa di compiz-fusion-plugins-extra
, ma l'ho disabilitata per dimostrazione
Ecco il file /etc/apt/preferences
, che apt-get
usa per decidere, quale versione deve selezionare se ci sono molte versioni di un singolo pacchetto. (In questo esempio, compiz-fusion-plugins-extra
ha diverse versioni.
Pacchetto: *
Pin: origine ""
Priorità pin: 1001
Questo file dice apt-get
di installare dal repository locale per tutti i pacchetti che hanno diverse versioni in diversi repository.
In altre parole, se ho un pacchetto xapps
con versione 1.0
nel mio repository locale, e questo stesso pacchetto xapps
esiste nel repository di Precise con una versione successiva, diciamo 2.0
, apt-get
preferirò la versione dal repository locale, cioè la versione 1.0
.
Ecco il mio /etc/apt/sources.list
file
deb http://archive.ubuntu.com/ubuntu multiverso limitato all'universo principale preciso
deb-src http://archive.ubuntu.com/ubuntu preciso universo principale multiverso limitato # Aggiunto dalle proprietà del software
deb http://security.ubuntu.com/ubuntu/ multiverso principale con universo di precisione preciso limitato
deb http://archive.ubuntu.com/ubuntu precise-updates universo principale multiverso limitato
deb http://archive.ubuntu.com/ubuntu multiverso principale con precisione backport limitato
# deb http://archive.canonical.com/ubuntu partner preciso
# deb-src http://archive.canonical.com/ubuntu partner preciso
# deb http://extras.ubuntu.com/ubuntu principale principale
# deb-src http://extras.ubuntu.com/ubuntu principale principale
file deb: / media / Main / Linux-Software / Ubuntu / Oneiric / #questo è un repository onirico.
file deb: / media / Main / Linux-Software / Ubuntu / Natty / natty /
file deb: / media / Main / Software Linux / Ubuntu / Natty / kubuntu /
file deb: / media / Main / Software Linux / Ubuntu / Natty / natty_new /
Anche se ho elencato il repository preciso in precedenza nel file, non causa la apt-get
selezione del pacchetto da quel repository. Come descritto nel manuale
Il file delle preferenze APT non influisce sulla scelta dell'istanza, ma solo sulla scelta della versione.
Quindi, l'output del comando apt-cache policy compiz-fusion-plugins-extra
era come previsto come di seguito
anwar @ edubuntu-lenovo: / etc / apt $ apt-cache policy compiz-fusion-plugins-extra
compiz-fusion-plugins-extra:
Installato: (nessuno)
Candidato: 0.9.5.94-0ubuntu1 / ** selezione delle versioni precedenti per priorità ** /
Tabella delle versioni:
0.9.7.0 ~ bzr9-0ubuntu6 0
500 http://archive.ubuntu.com/ubuntu/ precise / universe pacchetti i386
0.9.5.94-0ubuntu1 0
File 1001: / media / Main / Linux-Software / Ubuntu / Oneiric / Packages
0.9.4-0ubuntu3 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
Qui, la versione candidata è 0.9.5.94-0ubuntu1
, (che si trova nel repository locale), non 0.9.7.0~bzr9-0ubuntu6 0
, che si trova nel repository dei precisi. sebbene quello dei precisi fosse elencato per primo nel sources.list
file.
Un esempio di apt-get
tentativo di installazione compiz-fusion-plugins-extra
dopo aver impostato la massima priorità sul repository locale.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install compiz-fusion-plugins-extra
Lettura degli elenchi dei pacchetti ... Fine
Costruire l'albero delle dipendenze
Lettura delle informazioni sullo stato ... Fatto
I seguenti pacchetti sono stati installati automaticamente e non sono più necessari:
x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Usa 'apt-get autoremove' per rimuoverli.
Verranno installati i seguenti pacchetti extra:
compiz-core compiz-plugins-default compiz-plugins-extra
compiz-plugins-main-default libdecoration0 xserver-xorg-core
xserver-xorg-video-intel
Pacchetti suggeriti:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
I seguenti pacchetti saranno RIMOSSI:
compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop
libcompizconfig0 ubuntu-desktop unity xorg xserver-xorg
xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-mouse
xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-ati
xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode
xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic
xserver-xorg-video-nouveau xserver-xorg-video-openchrome
xserver-xorg-video-qxl xserver-xorg-video-r128 xserver-xorg-video-radeon
xserver-xorg-video-s3 xserver-xorg-video-savage
xserver-xorg-video-siliconmotion xserver-xorg-video-sis
xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
xserver-xorg-video-vesa xserver-xorg-video-vmware
Verranno installati i seguenti NUOVI pacchetti:
compiz-fusion-plugins-extra compiz-plugins-extra
I seguenti pacchetti saranno SCARICATI:
compiz-core compiz-plugins-default compiz-plugins-main-default
libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 aggiornati, 2 appena installati, 6 declassati, 37 da rimuovere e 698 non aggiornati.
È necessario ottenere 0 B / 5.772 kB di archivi.
Dopo questa operazione, verrà liberato spazio su disco di 8.294 kB.
Vuoi continuare [Y / n]?
Strano !!!, sta cercando di effettuare il downgrade dei pacchetti compiz già installati di dipendenze precise per risolvere (abbinando quello di Oneiric) con quelli appena selezionati compiz-fusion-plugins-extra
!!!.
La cosa più pericolosa è che sta cercando di rimuovere i pacchetti di driver grafici (xserver-xorg -....) per evitare conflitti con nuovi formati.
(Probabilmente, se li avessi anche nel mio repository locale, potrebbero tranquillamente voler eseguire il downgrade. Ma poiché quei pacchetti sono di solito installati, non li ho scaricati, quindi non sono nel repository locale, quindi questo risultato) .
Conclusione : pertanto, /etc/apt/preferences
si consiglia di utilizzare solo con un repository locale, se si dispone di un repository completo nel sistema locale.
Cosa succede se esistono più istanze (file .deb) della stessa versione in molti repository.
Quale è descritto dal apt_preference
manuale
Diverse istanze della stessa versione di un pacchetto potrebbero essere disponibili quando il file sources.list (5) contiene riferimenti a più di una fonte. In questo caso apt-get (8) scarica l'istanza elencata prima nel file sources.list (5).
Un esempio di casi d'uso per il /etc/apt/preferences
file:
Un esempio di forzatura apt-get
per selezionare la versione disponibile da un repository personalizzato, invece di quello standard di Ubuntu potrebbe essere la distribuzione "Linux Mint". Usano questo preference
file personalizzato .
Pacchetto: *
Pin: rilascio o = linuxmint
Priorità pin: 700
Pacchetto: *
Pin: origin pacchetti.linuxmint.com
Priorità pin: 700
Pacchetto: *
Pin: rilascio o = Ubuntu
Priorità pin: 500
Ciò li induce effettivamente a fornire pacchetti quando li hanno nei loro repository. Ma se non li hanno, usano il repository standard di Ubuntu.
Un esempio in esecuzione apt-get
dopo aver impostato la massima priorità sul repository locale
Volevo solo installare il kubuntu-desktop
pacchetto su Ubuntu per testare KDE. (L'ho dimenticato, ho impostato una preferenza usando il /etc/apt/preference
file) . Ho avuto un iso di kubuntu-12.04-alternate-installer, quindi ho pensato di poterlo usare.
(dopo aver impostato correttamente l'iso come fonte di repository) , ho corso
sudo apt-get install kubuntu-desktop
, quindi sorpreso vedendo l'output di seguito.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install kubuntu-desktop
Lettura degli elenchi dei pacchetti ... Fine
Costruire l'albero delle dipendenze
Lettura delle informazioni sullo stato ... Fatto
Alcuni pacchetti non possono essere installati. Questo può significare che hai
richiesto una situazione impossibile o se si sta utilizzando unstable
distribuzione che alcuni pacchetti richiesti non sono ancora stati creati
o è stato spostato da Incoming.
Le seguenti informazioni possono aiutare a risolvere la situazione:
I seguenti pacchetti hanno dipendenze non soddisfatte:
kubuntu-desktop: dipende da: language-selector-kde ma non verrà installato
Raccomanda: amarok ma non verrà installato
Raccomanda: apturl-kde ma non verrà installato
Raccomanda: gdebi-kde ma non verrà installato
Raccomanda: gpgsm ma non verrà installato
Raccomanda: ibus-qt4 ma non verrà installato
Raccomanda: jockey-kde ma non verrà installato
Raccomanda: kdegraphics-strigi-plugins ma non verrà installato
Raccomanda: kdepim-wizards ma non verrà installato
Raccomanda: kpackagekit ma non verrà installato
Raccomanda: libreoffice-kde ma non verrà installato
Raccomanda: libreoffice-style -xygen ma non verrà installato
Raccomanda: network-manager-pptp-kde ma non verrà installato
Raccomanda: plasma-widget-facebook ma non verrà installato
Raccomanda: plasma-widget-kimpanel ma non verrà installato
Raccomanda: usb-creator-kde ma non verrà installato
E: impossibile correggere i problemi, hai conservato pacchetti rotti.
Sono stato sorpreso dal risultato. improvvisamente ricordo che ho impostato una preferenza ( per scrivere questa risposta ) /etc/apt/preference
per impostare la massima priorità sul mio repository locale.
quindi, ho eseguito questo:, apt-cache policy kubuntu-desktop
l'output era il seguente:
anwar @ edubuntu-lenovo: ~ $ politica apt-cache kubuntu-desktop
kubuntu-desktop:
Installato: (nessuno)
Candidato: 1.222.1kde47 ~ ppa2
Tabella delle versioni:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precise / pacchetti i386 principali
500 http://archive.ubuntu.com/ubuntu/ precisi / principali pacchetti i386
1.222.1kde47 ~ ppa2 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222.1 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
In questo output, vediamo che sia "cdrom" che "repository principale preciso" hanno il numero di versione 1.254 , mentre il repository locale ha la versione 1.222.1kde47 ~ ppa2 , che è la versione precedente. Sebbene siano posizionati prima di quelli locali nel file sources.list, i pacchetti locali hanno la precedenza.
Per vedere esplicitamente che apt-get
sta effettivamente cercando di installare da quello locale, ho eseguito synaptic
e ottenuto questo, il che dimostra che, il sistema Apt considera 1.222.1kde47 ~ ppa2 come la versione candidata da installare.
Mostra anche apt-cache policy kubuntu-desktop
le stesse cose
anwar @ edubuntu-lenovo: ~ $ politica apt-cache kubuntu-desktop
kubuntu-desktop:
Installato: (nessuno)
Candidato: 1.222.1kde47 ~ ppa2
Tabella delle versioni:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precise / pacchetti i386 principali
500 http://archive.ubuntu.com/ubuntu/ precisi / principali pacchetti i386
1.222.1kde47 ~ ppa2 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222.1 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222 0
File 1001: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
Per risolvere questo, ho rimosso il /etc/apt/preference
file da sudo rm /etc/apt/preference
.
Quindi corre di nuovo questo apt-cache policy kubuntu-desktop
. vedendo solo questo output previsto.
anwar @ edubuntu-lenovo: ~ $ sudo rm / etc / apt / preferenze
anwar @ edubuntu-lenovo: ~ $ sudo politica apt-cache kubuntu-desktop
kubuntu-desktop:
Installato: (nessuno)
Candidato: 1.254
Tabella delle versioni:
1.254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precise / pacchetti i386 principali
500 http://archive.ubuntu.com/ubuntu/ precisi / principali pacchetti i386
1.222.1kde47 ~ ppa2 0
File 500: / media / Main / Software Linux / Ubuntu / Natty / natty / Packages
1.222.1 0
File 500: / media / Main / Software Linux / Ubuntu / Natty / natty / Packages
1.222 0
File 500: / media / Main / Software Linux / Ubuntu / Natty / kubuntu / Pacchetti
Anche eseguito di nuovo questo. sudo apt-get install kubuntu-desktop
per vedere l'output di seguito:
......... Dettagli non necessari eliminati .........
0 aggiornati, 213 appena installati, 0 da rimuovere e 150 non aggiornati.
È necessario ottenere 0 B / 89,6 MB di archivi.
Dopo questa operazione, verranno utilizzati 269 MB di spazio su disco aggiuntivo.
Vuoi continuare [Y / n]?
Puoi controllare il risultato completo qui
Quindi sono praticamente sicuro della parte Spiegazione.
Riferimento 1: il manuale di apt_preference
Riferimento 2: Come mantenere una versione specifica dei pacchetti installati