This brief guide introduces an useful utility called
dpkg-repack, which is used to recreate Debian binary packages that are already installed on debian-based system.
What is dpkg-repack?
Picture this scenario. You've installed some packages on your Debian-based system. And you want to install the same packages on another system. But you lost the binary archives i.e. the deb files. Would you download them again from their official website or repository?
What if the particular version of a specific package is no longer available elsewhere? No worries! Since they are already installed on your system, you can easily recreate the
.deb files. Say hello to
dpkg-repack is a commandline Debian package archiving tool to recreate Debian binary packages that are already installed on your system.
To put it succinctly,
dpkg-repack utility can able to create a
.deb file out of a debian package that is already installed on your system.
dpkg-repack utility can be helpful in many situations where you want to,
.debfiles from existing installed debian packages,
- easily copy packages from one system to another,
- save the current state of a package before upgrade it,
- backup a specific version of a package for future use,
- save specific packages which are no longer available for download.
Install dpkg-repack in Debian, Ubuntu and derivatives
dpkg-repack is available in the default repositories of Debian, Ubuntu and its variants. To install
dpkg-repack, simply run the following command:
$ sudo apt install dpkg-repack
Recreate Debian binary packages with dpkg-repack
1. For the purpose of this guide, let us use Microsoft Teams application which I installed a while ago on my Ubuntu desktop.
$ dpkg -l | grep teams
ii teams 1.3.00.5153 amd64 Microsoft Teams for Linux is your chat-centered workspace in Office 365.
I no longer have the
teams.deb file. I deleted it right after installing the Microsoft Teams application. I can go to the official download page and download it again. But why should bother downloading it over and over? I can now simply recreate the
teams.deb file using dpkg-repack.
2. To create
teams.deb file from already installed teams package with
dpkg-repack utility, run:
$ dpkg-repack teams
dpkg-deb: building package 'teams' in './teams_1.3.00.5153_amd64.deb'.
As you see, the above command recreated the
"teams_1.3.00.5153_amd64.deb'" file from the Teams package that is already installed on my Ubuntu desktop. The newly created deb file will be saved in the current working directory.
Similarly, you can convert any installed Debian packages back to
.deb packages using
3. It is also possible to recreate multiple deb files with space-separated:
$ dpkg-repack <package1> <package2> <package3>
4. If you can't rebuild the deb file due to any permission issues, try from fakeroot environment like below:
$ fakeroot -u dpkg-repack teams
One interesting feature of dpkg-repack utility is if any changes have been made to the package while it was unpacked (i.e. files in /etc modified), the new package will inherit the changes.
Viewing the contents of deb file
Step 1: You can view the contents of that deb file using command:
$ dpkg --contents teams_1.3.00.5153_amd64.deb
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
Step 2: The dpkg-repack comes in handy when installing the same set of packages on multiple systems, just transfer them using external hard drive or via LAN to other systems and install them using dpkg command:
$ sudo dpkg -i <package-name>
Step 3: Please note that you still need to download the dependencies. To install the dependencies, run:
$ sudo apt-get -f install
Alternatively, you can find the dependencies of the package as described in the following link:
And then recreate all of them using
dpkg-repack as described above.
Step 4: This will also help when you want to roll-back a package to the previous working version. For instance, let us say you just upgraded
Vim package to new available version. If the new version is not working as expected, you can simply roll-back to the old version which you created earlier using
For more details, refer man pages:
$ man dpkg-repack