Supponiamo che tu stia eseguendo un server e non desideri eseguire l'aggiornamento a Testing (Squeeze) da Stable (Lenny) per installare solo uno o due pacchetti richiesti.
Qual è il modo migliore per installare solo determinati pacchetti dai test?
Supponiamo che tu stia eseguendo un server e non desideri eseguire l'aggiornamento a Testing (Squeeze) da Stable (Lenny) per installare solo uno o due pacchetti richiesti.
Qual è il modo migliore per installare solo determinati pacchetti dai test?
Risposte:
Molte persone sembrano aver paura di mescolarsi stabile con i test, ma francamente, i test sono abbastanza stabili a sé stanti e con le preferenze e il controllo della soluzione adeguati, è possibile evitare la "deriva della stabilità" che colloca i pacchetti principali sul percorso instabile.
"I test sono abbastanza stabili ??" , tu chiedi. Sì. Affinché un pacchetto passi da instabile a test, deve avere zero bug aperti per 10 giorni consecutivi. È probabile che, specialmente per i pacchetti più popolari, qualcuno invierà una segnalazione di bug per una versione instabile se qualcosa non va.
Anche se non vuoi mescolare gli ambienti, è comunque bello avere l'opzione lì nel caso in cui ti imbatti in qualcosa che richiede una versione più recente di quella che è stabile.
Ecco cosa consiglio per l'impostazione:
Innanzitutto, crea i seguenti file in /etc/apt/preferences.d
:
stable.pref
:
# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent
Package: *
Pin: release a=stable
Pin-Priority: 900
testing.pref
:
# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent
Package: *
Pin: release a=testing
Pin-Priority: 400
unstable.pref
:
# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package
Package: *
Pin: release a=unstable
Pin-Priority: 50
experimental.pref
:
# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package
Package: *
Pin: release a=experimental
Pin-Priority: 1
(Non aver paura delle cose instabili / sperimentali qui. Le priorità sono abbastanza basse che non installerà mai automaticamente nessuna di quelle cose. Anche il ramo di test si comporterà, poiché installerà solo i pacchetti che vuoi essere nei test.)
Ora, creando un set di corrispondenza per /etc/apt/sources.list.d
:
stable.list
: Copia dall'originale /etc/apt/sources.list
. Rinomina il vecchio file in qualcosa del genere sources.list.orig
.
testing.list
: Uguale a stable.list
, tranne con testing
.
unstable.list
: Uguale a stable.list
, tranne con unstable
, e rimuovere gli elenchi di sicurezza.
experimental.list
: Uguale a unstable.list
, tranne con experimental
.
Puoi anche aggiungere un oldstable
in sources.lists.d
e preferences.d
(usa una priorità di 1), anche se questo moniker tende a scadere e scomparire prima del prossimo ciclo stabile. In casi del genere, puoi usare http://archive.debian.org/debian/
e "hardcode" la versione di Debian (etch, lenny, ecc.).
Per installare la versione di prova di un pacchetto, è sufficiente utilizzare aptitude install lib-foobar-package/testing
o semplicemente passare alla GUI di aptitude e selezionare la versione all'interno dei dettagli del pacchetto (premere invio sul pacchetto che si sta guardando).
In caso di reclami per conflitti di pacchetti, esaminare prima le soluzioni. Nella maggior parte dei casi, il primo sarà "non installare questa versione". Impara come utilizzare le opzioni del risolutore di accettazione / rifiuto per pacchetto. Ad esempio, se stai installando foobar-package / testing e la prima soluzione è "non installare foobar-package / testing", allora contrassegna quella scelta come rifiutata e le altre soluzioni non torneranno più su quel percorso. In casi come questi, probabilmente dovrai installare alcuni altri pacchetti di test.
Se sta diventando troppo peloso (come se stesse cercando di aggiornare libc o il kernel o qualche altro enorme sistema di base), allora puoi rifiutare quei percorsi di aggiornamento o semplicemente uscire completamente dall'aggiornamento iniziale. Ricorda che aggiornerà le cose in testing / unstable solo se lo permetti.
EDIT: corretti alcuni pin prioritari e aggiornato l'elenco.
apt-get update
dopo aver creato i file di configurazione?
sudo apt-get update
, ho ricevuto un errore di aggiornamento. Quindi riavviato, il che mi ha dato Xsession error
, riavviato di nuovo, e ora non ho la GUI. l' /dev/sda1/
ora è pieno. Grande.
In /etc/apt/apt.conf.d
aggiungi il seguente file
99defaultrelease
:
APT::Default-Release "stable";
in /etc/apt/sources.list.d
- aggiungi URL per test / fonti instabili
stable.list
:
deb http://ftp.de.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free
testing.list
:
deb http://ftp.de.debian.org/debian/ testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/ testing main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
correre
apt-get update
e quindi installa ciò di cui hai bisogno
apt-get -t testing install something
Fai molta attenzione se installi roba che ha molte dipendenze. Preferibilmente non farlo sulla produzione.
Puoi anche tentare la fortuna con backport o repository simili.
apt_preferences
Definire il livello predefinito a cui il sistema deve "eseguire l'aggiornamento sicuro" nel file / etc / apt / preferenze:
man apt_preferences
C'è molto che puoi fare con apt_preferences ma per semplicità ...
Avevo bisogno di installare un singolo pacchetto (autoMysqlBackup) che era disponibile solo in Test. La soluzione era aggiungere quanto segue a / etc / apt / preferenze:
Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900
Package: *
Pin: release o=Debian
Pin-Priority: -10
Con più repository aggiunti a /etc/apt/sources.list aptitude ora eseguirà l'upgrade alla versione specificata anche se sono elencati i repository della versione successiva (in questo caso 'stable').
deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main
Quindi per installare quel pacchetto, tutto ciò che devi fare è:
$ aptitude install -t testing packageName
Per quello che vale, il consiglio generale che ho sempre visto è "Non mescolare stabile con niente". La maggior parte delle esercitazioni sui sistemi misti sono per la miscelazione di test e instabili.
Il ragionamento sembra essere che se si mescola stabile con i test, i pacchetti molto basilari (come libc6) richiedono aggiornamenti (per installare il software dai test), e una volta che questi pacchetti base passano ai test, l'intero sistema può andare alla deriva in quel modo.
Ecco due alternative:
La documentazione di Debian è ampia in materia e consiglio vivamente di approfondire in quanto svelerà davvero la bellezza del sistema Debian.
Dai un'occhiata a Come mantenere un sistema misto , spiegherà tutto ciò che devi sapere.
Un altro modo, che potrebbe impedire l'installazione di troppe dipendenze da Testing o Sid, è questo: dici a apt-get di ottenere il sorgente del pacchetto da Testing o Sid e creare un pacchetto per il tuo sistema usando gli strumenti Debian (non c'è bisogno di armeggiare manualmente con fonti).
Citando da qui:
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F
Come posso eseguire il backport di un pacchetto Sid su testing o stable?
Installa il sorgente Debian (e gli strumenti di sviluppo, in particolare debhelper, devscripts e build-essential), quindi costruisci il pacchetto.
Passo dopo passo:
add a deb-src line for sid to your sources.list apt-get update apt-get build-dep PACKAGE_NAME apt-get -b source PACKAGE_NAME
I debs risultanti dovrebbero essere nella directory corrente e possono essere installati con dpkg -i the.deb.
Lo sto facendo da un lungo periodo di tempo per essere fiducioso nel dire che è abbastanza sicuro e può essere reso conveniente. Con la seguente versione stabile installata verrà installata di default, tuttavia Aptitude ti permetterà anche di scegliere la versione backported o instabile, se lo desideri:
Ci sono quattro cose che devono essere modificate, la versione di pinning predefinita deve essere impostata, le fonti hanno bisogno di backport e unstable aggiunti, abbassando la priorità di pinning di backport / pacchetti unstable e le impostazioni di visualizzazione di aptitude devono essere modificate per visualizzare pinning.
Apt :: default-Release "stable";
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Multi-architettura ufficiale amd64 / i386 NETINST # 1 20110205-14: 45] / squeeze main deb http://ftp.us.debian.org/debian/ squeeze main deb-src http://ftp.us.debian.org/debian/ squeeze main deb http://security.debian.org/ squeeze / updates main deb-src http://security.debian.org/ squeeze / updates main # squeeze-update, precedentemente noto come 'volatile' deb http://ftp.us.debian.org/debian/ squeeze-updates main deb-src http://ftp.us.debian.org/debian/ squeeze-updates main # spremere i backport # http://backports.debian.org/Instructions/ deb http://backports.debian.org/debian-backports squeeze-backports main # instabile # http://wiki.debian.org/AptPreferences deb http://ftp.us.debian.org/debian/ unstable main deb-src http://ftp.us.debian.org/debian/ main instabile # non gratuito ex. sole java #deb http://ftp.us.debian.org/debian/ squeeze non-free # deb-src http://ftp.us.debian.org/debian/ squeeze non-free
etc/apt/preferences
file di pinning: se il file non esiste, crealo.# Priorità di pinning del pacchetto # Vedi http://wiki.debian.org/AptPreferences e http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences # # Nella shell nut viene installato il PIN più alto # # I valori predefiniti di Pining sono i seguenti che si aggiungono alle nostre impostazioni: # 990 - per versioni non installate ma che appartengono alla nostra impostazione "stabile" `APT :: Default-Relase. # 500 - per le versioni che non sono installate e non appartengono alla versione di destinazione # 100 - per i pacchetti già installati, ciò significa anche altre versioni dello stesso pacchetto # 1 - per pacchetti sperimentali; pacchetti con "NotAutomatic: si" # # I nostri appuntamenti # 400 - backport che possono essere installati in sicurezza senza la necessità di aggiornare altri pacchetti # 50 - pacchetti instabili, installazione forzata nella schermata dei dettagli, possono causare conflitti Pacchetto: * Pin: rilascio n = squeeze-backport Priorità pin: 400 Pacchetto: * Pin: rilasciare a = instabile
Aptitude :: UI :: Formato di visualizzazione pacchetto "% c% a% M% p% Z% v% V% i";
source.list
esso dovrebbe essere indicato il nome in codice jessie
anziché squeeze
. La politica di Debian testing
è pressoché stabile e i pacchetti sono stati quasi nuovi come dal unstable
repository. Sto esaurendo lo spazio qui, quindi dai un'occhiata a: wiki.debian.org/DebianReleases , wiki.debian.org/StableUpdates e wiki.debian.org/StableProposedUpdates ; le ultime due sono fonti di repository aggiuntive.
Se la selezione dei pacchetti è più complessa o l'installazione verrà ripetuta su più macchine, è possibile prendere in considerazione la configurazione di un repository privato che rispecchi un sottoinsieme dei repository ufficiali. Ciò richiede un po 'di lavoro per configurare il repository ma la ricompensa è facile da mantenere con un minimo di configurazione su ciascun client e risultati ripetibili quando si eseguono dozzine di installazioni. Lo trovo utile anche quando vengono installati solo uno o due pacchetti e utilizzo questo metodo per automatizzare e mantenere le installazioni cloud. Un singolo server su un VPS economico può gestire dozzine di repository privati.
Per configurare il server del repository privato:
# Install aptly.
apt-get install aptly
# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main
# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube
# Update local mirror.
aptly mirror update stretch-roundcube
# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch
# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube
# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube
# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube
Quindi configura il tuo server Web preferito per servire i file del repository statico. Possibilmente proteggere il repository con un certificato di sicurezza e autenticazione di base.
Per mantenere automaticamente il tuo repository privato ed estrarre gli aggiornamenti dall'upstream, inserisci quanto sopra in uno script ed eseguilo da un processo cron.
Per configurare il computer client, sul computer client:
# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
# Configure private repository with authentication.
echo 'deb https://hostname:password@private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https
# Update.
apt-get update
# Install package.
apt-get install roundcube
Per mantenere la macchina client e inserire tutti gli aggiornamenti del repository privato, sulla macchina client:
# Update.
apt-get update
# Upgrade.
apt-get upgrade
Un'altra opzione è quella di scaricare invece il pacchetto sorgente dai test. APT può compilare automaticamente il pacchetto sorgente dopo averlo scaricato. In questo modo, i pacchetti stabili non saranno interessati dai test di aggiornamento. L'unico compromesso è che ci vorrà più tempo rispetto al semplice download e installazione del pacchetto binario.
Per configurare APT per scaricare i pacchetti di origine dai test, basta aggiungere:
deb-src http://<your debian mirror here> testing main
Se vuoi semplicemente seguire i test attuali e non i test futuri, sostituisci "testing" con il nome in codice corrente (al momento della stesura è "buster")