Sto provando a configurare un ambiente di gestione temporanea in una macchina virtuale, al fine di testare gli aggiornamenti prima di applicarli al mio sistema principale.
Per fare ciò, ho fatto un'installazione di base di Debian Wheezy (uguale al sistema principale) nella VM, quindi ho eseguito come root dall'interno della VM:
# dpkg --clear-selections
# dpkg --add-architecture i386
# apt-get update
# ssh me@main-system 'dpkg --get-selections | grep -v deinstall' | \
dpkg --set-selections
L'architettura i386 è purtroppo necessaria nel mio caso; il sistema è nativo amd64.
Il problema è con l' dpkg --set-selections
esecuzione nella VM. Ho alcuni pacchetti che richiedono una gestione speciale (quelli sono in realtà il motivo principale per cui voglio un ambiente di gestione temporanea in primo luogo) ma quando eseguo l'ultimo comando sopra, ottengo circa un gazillion di righe di output come:
dpkg: warning: package not in database at line NNN: package-name
per i pacchetti che dovrebbero davvero essere disponibili nel sistema di base. Gli esempi includono xterm
, yelp
e zip
.
Ora per la mia domanda:
Qual è il processo specifico per trasferire l'elenco di selezione dei pacchetti da un sistema Debian a un altro (presupponendo lo stesso livello di rilascio di Debian, in Wheezy) e successivamente applicare tali modifiche? L'obiettivo è che entrambi abbiano lo stesso elenco di pacchetti installati, idealmente tali che il ritorno diff
tra gli output di dpkg --get-selections
o dpkg --list
sui due ritorni non mostri differenze.
La grep -v deinstall
parte è presa in prestito da Impedisci che i pacchetti vengano rimossi dopo averdpkg --set-selections
ripetuto su Ask Ubuntu.
Ho modificato l'origine nella VM in modo che sia la stessa del sistema principale, installando anche apt-transport-https
:
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb [arch=amd64] http://archive.zfsonlinux.org/debian wheezy main
Guardando l'output --set-selections, vedo:
dpkg: warning: package not in database at line 1: a2ps
dpkg: warning: package not in database at line 1: abiword
dpkg: warning: package not in database at line 1: abiword-common
dpkg: warning: package not in database at line 1: abiword-plugin-grammar
dpkg: warning: package not in database at line 1: abiword-plugin-mathview
dpkg: warning: package not in database at line 1: accountsservice
dpkg: warning: package not in database at line 1: acl
dpkg: warning: package not in database at line 4: aglfn
dpkg: warning: package not in database at line 4: aisleriot
dpkg: warning: package not in database at line 4: alacarte
dpkg: warning: package not in database at line 4: alien
...
I numeri di riga sembravano dispari e la porzione corrispondente dell'output di --get-selections è:
a2ps install
abiword install
abiword-common install
abiword-plugin-grammar install
abiword-plugin-mathview install
accountsservice install
acl install
acpi-support-base install
acpid install
adduser install
aglfn install
aisleriot install
alacarte install
alien install
Si noti che in mezzo acl
e aglfn
sono acpi-support-base
, acpid
e adduser
per i quali sono stati segnalati errori . Sembra che i pacchetti per i quali vengono segnalati errori siano un
conformi dpkg -l
o dpkg -l
non abbiano alcuna idea al riguardo ( dpkg-query: no packages found matching ...
). So che ci sono alcuni pacchetti installati localmente, ma non molti. i386
non appare fino a gcc-4.7-base:i386 install
molto più in basso nell'elenco (riga 342 nell'output --get-selections).
dpkg --get-selections
(e presumo tu intendessi la dpkg --set-selections
trascrizione?)? Anche solo il primo ha oltre 3.600 linee e circa 100 KB.
/var/lib/dpkg/Packages
(che è ancora più lunga) potrebbe essere utile - questo potrebbe essere un sintomo di un file di pacchetti rotto.
dpkg --get-selections … | … dpkg --set-selections
è il modo di replicare le selezioni di pacchetti. Se fallisce, dovrai fornire maggiori informazioni sul perché. Pubblica il tuo set completo di fonti su entrambi i sistemi, l'output dadpkg --get-selections
e la trascrizione completa dadpkg --get-selections
(forse possiamo discernere uno schema vedendo cosa funziona e cosa no). Se il sistema principale amd64 o i386? Funziona se non aggiungi l'architettura i386?