[Soci SLIP] Creare elenco di programmi

Lucio Crusca lucio a sulweb.org
Ven 7 Feb 2014 09:40:28 CET


Scusa il ritardo nel risponderti, non mi ero accordo del tuo messaggio.

In data giovedì 30 gennaio 2014 09:35:28, Luca Rivoiro ha scritto:
> > Prima devi elencare tutti i repo a cui fa riferimento il tuo apt:
> > # apt-cache policy | sed -n 's/.*o=\([^,]\+\).*/\1/p' | uniq
> > 
> > e poi, per ognuno, estrarre l'elenco di pacchetti che ne fanno parte
> > 
> > # aptitude search "?installed?origin(Ubuntu)"
> > 
> > o che non ne fanno parte
> > 
> > # aptitude search "?installed?not(?origin(Ubuntu))"
> > 
> > non ho mai provato, ma credo che sia anche possibile mettere assieme più
> > condizioni con operatori booleani binari ?and e ?or.
> 
> Ti chiedo scusa ma non credo di aver capito questa parte: dopo i comandi
> aggiungo "> list.txt" per creare una lista? o li dò dopo aver lanciato
> aptitude?

Nessuno dei due. Il primo comando, apt-cache policy, serve ad avere un elenco 
visivo di quali siano i repository. La lista risultante da quel comando è 
molto corta, normalmente è composta da due o tre voci (potrebbe essere anche 
solo una se non hai mai aggiunto repository): te le devi ricordare solo per il 
tempo che serve a digitare i comandi successivi, o se vuoi te le segni su un 
pezzo di carta. Passarle in un file apposito e poi recuperarle da quello più 
complicato che segnarsele a mano.

Se ho ben capito a te serve un elenco dei pacchetti installati dal repo di 
Ubuntu ed un elenco dei pacchetti installati a mano. Supponendo che queste due 
sorgenti di pacchetti (repo Ubuntu la prima, installati a mano la seconda) 
siano le uniche presenti nel sistema (il comando apt-cache policy serve 
appunto a dirti se sono le uniche o se ce ne siano altre), puoi ottenere 
l'elenco dei pacchetti installati da Ubuntu con il primo "aptitude search" (ma 
in realtà non ti serve, per quello scopo è più efficace dpkg --get-selections), 
e l'elenco dei pacchetti installati a mano con il secondo "aptitude search", 
il quale è semplicemente la negazione del primo. 

In altre parole, il primo "aptitude search" richiederebbe l'elenco di 
pacchetti installati da Ubuntu e non ti serve, il secondo chiede l'elenco dei 
restanti. Nota che nel secondo potrebbero esserci alcuni pacchetti di troppo a 
seconda di quanto non è aggiornato il sistema, ma, tanto, il secondo elenco ti 
serve di nuovo solo a scopo visivo (oppure te li segni su un pezzo di carta), 
perché, non essendo pacchetti di Ubuntu, sei comunque costretto ad 
installarteli uno ad uno a mano sul nuovo sistema.

Se invece il comando "apt-cache policy" ti elenca più di una sorgente, ovvero 
non solo Ubuntu, il secondo "aptitude search" è più complicato, perché devi 
dire, usando gli operatori booleani "voglio tutti i pacchetti che NON siano di 
Ubuntu e NON siano di quest'altra sorgente e NON siano etc..."

> > 
> > Installi il pc nuovo con la stessa distro/versione GNU/Linux che hai sul
> > 
> > vecchio (di base, senza installare nulla di particolare), poi colleghi i
> > due pc in rete, parti con una live su entrambi e copi al volo tutti i files
> > dalla partizione del vecchio a quella del nuovo:
> > 
> > root a live_pc_nuovo:/mnt/sda1# netcat -q 5 -l -p 2222 | tar xzpvf -
> > 
> > root a live_pc_vecchio:/mnt/sda1# tar czpvf . | netcat -q 5
> > [ip.del.pc.nuovo]
> 
> Il problema più grande di questa procedura è che il portatile non mi è
> ancora arrivato.
> Se io volessi tenere (in un angolino) winzozz, a parte gli insulti (secondo
> me meritati), potrei avviare lo stesso la procedura?

Certo, puoi usare la stessa procedura. netcat non fa altro che trasferire in 
rete un flusso di dati qualsiasi e tar, con il quale è combinato, copia files 
puri e semplici, non fa immagini fotografiche del disco, quindi il 
partizionamento non viene minimamente toccato da questi comandi. Naturalmente, 
trattandosi di un pc nuovo, devi prima creare la partizione per Linux ed il 
bootloader, quindi secondo me, prima di questi comandi, ti conviene installare 
la stessa distro GNU/Linux che hai sul vecchio (in maniera minimale, tanto 
verrà sovrascritta da tar).

Nota che se per caso come distribuzione live usi Sysrescuecd, il comando 
netcat in quel caso si chiama nc.





Maggiori informazioni sulla lista Soci