Questa breve guida introduce un'utile utility chiamata dpkg-repack
, che viene utilizzato per ricreare i pacchetti binari Debian che sono già installati su un sistema basato su Debian.
Cos'è dpkg-repack?
Immagina questo scenario. Hai installato alcuni pacchetti sul tuo sistema basato su Debian. E vuoi installare gli stessi pacchetti su un altro sistema. Ma hai perso gli archivi binari, ovvero i file deb. Li scaricheresti di nuovo dal loro sito Web o repository ufficiale?
Cosa succede se la versione particolare di un pacchetto specifico non è più disponibile altrove? Nessun problema! Poiché sono già installati sul tuo sistema, puoi facilmente ricreare il .deb
File. Saluta dpkg-repack
!
Il dpkg-repack
è uno strumento di archiviazione dei pacchetti Debian a riga di comando per ricreare i pacchetti binari Debian che sono già installati sul tuo sistema.
In parole povere, dpkg-repack
l'utilità può creare un .deb
file da un pacchetto debian che è già installato sul tuo sistema.
Il dpkg-repack
l'utilità può essere utile in molte situazioni in cui lo desideri,
- ricrea
.deb
file da pacchetti Debian installati esistenti, - copia facilmente i pacchetti da un sistema all'altro
- salva lo stato corrente di un pacchetto prima di aggiornarlo,
- esegui il backup di una versione specifica di un pacchetto per un uso futuro,
- salva i pacchetti specifici che non sono più disponibili per il download.
Installa dpkg-repack in Debian, Ubuntu e derivati
Il dpkg-repack
è disponibile nei repository predefiniti di Debian, Ubuntu e delle sue varianti. Per installare dpkg-repack
, esegui semplicemente il seguente comando:
$ sudo apt install dpkg-repack
Ricrea i pacchetti binari Debian con dpkg-repack
1. Ai fini di questa guida, utilizziamo l'applicazione Microsoft Teams che ho installato qualche tempo fa sul mio desktop Ubuntu.
$ dpkg -l | grep teams
Risultato di esempio:
ii teams 1.3.00.5153 amd64 Microsoft Teams for Linux is your chat-centered workspace in Office 365.
Non ho più il teams.deb
file. L'ho eliminato subito dopo aver installato l'applicazione Microsoft Teams. Posso andare alla pagina di download ufficiale e scaricarlo di nuovo. Ma perché dovrebbe preoccuparsi di scaricarlo più e più volte? Ora posso semplicemente ricreare il teams.deb
file usando dpkg-repack.
2. Per creare teams.deb
file dal pacchetto team già installato con dpkg-repack
utilità, esegui:
$ dpkg-repack teams
Risultato di esempio:
dpkg-deb: building package 'teams' in './teams_1.3.00.5153_amd64.deb'.

Come puoi vedere, il comando precedente ha ricreato il "teams_1.3.00.5153_amd64.deb'"
file dal pacchetto Teams che è già installato sul mio desktop Ubuntu. Il file deb appena creato verrà salvato nella directory di lavoro corrente.
Allo stesso modo, puoi riconvertire tutti i pacchetti Debian installati in .deb
pacchetti usando dpkg-repack
utilità.
3. È anche possibile ricreare più file deb con spazi separati:
$ dpkg-repack <package1> <package2> <package3>
4. Se non riesci a ricostruire il file deb a causa di problemi di autorizzazione, prova da fakeroot ambiente come di seguito:
$ fakeroot -u dpkg-repack teams
Una caratteristica interessante dell'utilità dpkg-repack è che se sono state apportate modifiche al pacchetto mentre era decompresso (ad esempio file in /etc modificati), il nuovo pacchetto erediterà le modifiche.
Visualizzazione del contenuto del file deb
Passaggio 1: Puoi visualizzare il contenuto di quel file deb usando il comando:
$ dpkg --contents teams_1.3.00.5153_amd64.deb
Risultato di esempio:
drwxr-xr-x root/root 0 2020-05-26 15:15 ./ drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/ drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/bin/ -rwxr-xr-x root/root 286 2020-02-20 16:46 ./usr/bin/teams drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/share/ . . . drwxr-xr-x root/root 0 2020-05-26 15:15 ./usr/share/teams/swiftshader/ -rwxr-xr-x root/root 286264 2020-02-20 16:46 ./usr/share/teams/swiftshader/libEGL.so -rwxr-xr-x root/root 2677296 2020-02-20 16:46 ./usr/share/teams/swiftshader/libGLESv2.so -rwxr-xr-x root/root 114964776 2020-02-20 16:46 ./usr/share/teams/teams -rw-r--r-- root/root 1040912 2020-02-20 16:46 ./usr/share/teams/v8_context_snapshot.bin

Passaggio 2: Il dpkg-repack è utile quando si installa lo stesso set di pacchetti su più sistemi, basta trasferirli utilizzando un disco rigido esterno o tramite LAN su altri sistemi e installarli utilizzando il comando dpkg:
$ sudo dpkg -i <package-name>
Passaggio 3: Tieni presente che devi comunque scaricare le dipendenze. Per installare le dipendenze, esegui:
$ sudo apt-get -f install
In alternativa, puoi trovare le dipendenze del pacchetto come descritto nel seguente link:
- Come elencare le dipendenze di un pacchetto in Linux
E poi ricreali tutti usando dpkg-repack
come descritto sopra.
Passaggio 4: Ciò sarà utile anche quando desideri ripristinare un pacchetto alla versione di lavoro precedente. Ad esempio, supponiamo che tu abbia appena aggiornato Vim
pacchetto alla nuova versione disponibile. Se la nuova versione non funziona come previsto, puoi semplicemente ripristinare la vecchia versione che hai creato in precedenza utilizzando dpkg-repack
.
Per maggiori dettagli, fare riferimento alle pagine man:
$ man dpkg-repack
Lettura correlata:
- Come creare pacchetti Debian dal sorgente
- Come creare pacchetti dal sorgente utilizzando CheckInstall
- Come convertire i pacchetti Linux con Alien