Come creare un elenco di pacchetti installati per una reinstallazione semplice / automatica dopo la formattazione del disco


8

Cambierò il mio sistema da 32 bit a 64 bit e sarà lo stesso che avevo prima, Debian Squeeze, ma non voglio perdere i programmi che ho installato prima, perché non ricordo il nome di tutti.

Quindi volevo un comando per fare questo per me, salvare il nome di tutti i programmi che ho installato su un file, ma non i programmi standard forniti con il sistema, e quando sto usando l'altro sistema vorrei menzionare il nome di il file e la directory per tutto da installare automaticamente.

Un'altra domanda: è possibile farlo con i programmi installati manualmente con dpkg-i package.deb? In tal caso, come posso farlo?

Risposte:


7

Hai provato ad usare dpkg --get-selections >packages? Se si desidera escludere alcuni pacchetti, è possibile modificare il file di output packages. Al termine, trasferirlo sul sistema di destinazione e dire:

dpkg --set-selections <packages

E i pacchetti saranno contrassegnati per l'installazione. Molto probabilmente dovrai anche dirlo aptitude update; aptitude dist-upgrade.

L'altra domanda: se quei pacchetti sono pacchetti di i386architettura e sono stati multiarchinstallati, è possibile installare .debi messaggi con il solito dpkg -i package.deb. Ma probabilmente è meglio investigare caso per caso e installare versioni a 64 bit di quei pacchetti che li hanno.


Grazie, mi hai davvero aiutato quando hai detto che i pacchetti già installati sono nell'architettura i386, non ci avevo pensato, penso che sia meglio reinstallare quegli altri.
Zignd,

9

Nelle attuali versioni di Debian, è possibile ottenere un elenco di pacchetti installati esplicitamente con

apt-mark showmanual

Per quelli che eseguono antiche versioni di Debian dove apt-mark showmanualnon esiste, o se si desidera eseguire selezioni aggiuntive, è possibile usare aptitude.

aptitude search '~i !~M' -F %p >package.list

~iabbina i pacchetti installati; !~Momette i pacchetti che sono stati installati automaticamente come dipendenza di altri pacchetti. -F %pcambia il formato di output per includere solo il nome del pacchetto.

Successivamente è possibile installare quei pacchetti con

apt-get install $(cat package.list)

Debian Squeeze non ha apt-mark showmanual, ma ha apt-mark showautoquali elenchi di pacchetti installati automaticamente. Se lo usi, puoi elencare tutti i pacchetti sul vecchio sistema con dpkg --get-selections >package.list, ripristinare tutti questi e quindi contrassegnare i pacchetti automatici con apt-mark markauto. Per il tuo caso d'uso (da 32 a 64 bit), è probabile che questo approccio lasci alcune librerie contrassegnate come manuali, poiché hanno nomi diversi sotto architetture diverse.

Si noti che se il caso d'uso è riprodurre un'installazione identica, piuttosto che mantenere l'insieme di pacchetti ma cambiare l'architettura, ora c'è uno strumento chiamato apt-clone (distribuito in Debian da wheezy) che fa tutto automaticamente.


Sfortunatamente, questo non è perfetto. Quando lo faccio, la prima cosa che è elencata è "acl", che non ho caricato esplicitamente. Guardando rdepends, sembra che systemd dipenda da questo, e in Debian 8 sia già installato. E anche systemd è in questo elenco. Quindi, anche se systemd e acl sono stati installati, aptitude non li identifica come "automatici". Potrebbe essere una carenza di attitudine?
Liam,

@Liam Penso che il programma di installazione non contrassegni alcun pacchetto come automatico. Anche se così fosse, il che avrebbe senso per le librerie, un pacchetto simile aclpotrebbe essere considerato una parte importante del sistema di base e quindi essere contrassegnato come installato manualmente. È stato "manualmente" installato dall'installatore iniziale piuttosto che dall'utente, ma nonostante ciò, il significato di "installato automaticamente" è "puoi rimuoverlo in sicurezza se non rompe le dipendenze", e i pacchetti fondamentali necessari per rendere il il sistema funziona correttamente non si adatta al conto.
Gilles 'SO- smetti di essere malvagio' il

1

Non vedo un modo semplice e standard per farlo. Temo che dovrai armeggiare con dpkgi registri e le opzioni, perché dpkgnon distingue i "programmi standard forniti con il sistema" e gli altri.

QUESTO NON SARÀ DIRITTO , Preferisco chiarirlo usando il testo in grassetto maiuscolo , ma puoi fare qualcosa del genere

  • Estrarre l'elenco dei software installati dai /var/log/dpkg.log*file.

  • Rimuovere quelli installati durante l'installazione del sistema. (Usa il tempo di installazione per rilevarli)

  • Salva l'elenco nel dpkg --get-selectionsformato

Et voilà! Quando il sistema è attivo e in esecuzione, reinstallare i programmi con

 apt-get update
 dpkg --set-selections < yourSelection
 apt-get -u dselect-upgrade
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.