重新创建已安装在系统上的Debian二进制包
如何从系统中创建软件包以便在另一个系统上安装相同的文件?
如果我们已在系统上安装了一些Debian软件包。
并且我们希望在另一个系统上安装相同的软件包。
但是我们丢失了二进制归档,例如:DEB文件。
我们能从官方或者存储库中下载它们吗?
如果特定版本的特定包不再在其他地方提供?
不用担心!由于它们已安装在系统上,我们可以轻松地重新创建.deb文件。
向DPKG-Repack是一个Debian包归档命令行工具,用于重新创建系统上安装的Debian二进制包。
要简洁地说明,DPKG-Repack实用程序可以从系统上安装的Debian包中创建一个.deb文件。
DPKG-Repack实用程序可以在我们想要的许多情况下有所帮助,
- 从现有安装的Debian包中重新创建.deb文件,
- 轻松将软件包从一个系统复制到另一个系统,
- 在升级之前保存包的当前状态,
- 备份特定版本的包以供将来使用,
- 保存不再可用于下载的特定包。
在Debian,Ubuntu和衍生品中安装DPKG-Repack
DPKG-Repack可在Debian,Ubuntu及其变体的默认存储库中提供。
要安装DPKG-Repack,只需运行以下命令:
$sudo apt install dpkg-repack
如何重新创建debian二进制包与dpkg-repack
例如,一段时间我在Ubuntu桌面上安装了Microsoft团队应用程序。
$dpkg -l | grep teams
示例输出:
ii teams 1.3.00.5153 amd64 Microsoft Teams for Linux is your chat-centered workspace in Office 365.
我不再有Teams.Deb文件。
安装Microsoft团队应用程序后,我将删除它。
我可以去官方下载页面并再次下载。
但为什么要在又一遍地下载它?
我现在可以简单地重新创建Teams.deb文件,从已安装的团队包使用dpkg-repack实用程序如下:
$dpkg-repack teams
示例输出:
dpkg-deb: building package 'teams' in './teams_1.3.00.5153_amd64.deb'.
如我们所见,以上命令从已安装在我的Ubuntu桌面上安装的团队包中重新创建"Teams_1.3.00.5153_amd64.deb""文件。
新创建的Deb文件将保存在当前工作目录中。
同样,我们可以使用DPKG-Repack实用程序将任何已安装的Debian软件包转换回.deb软件包。
还可以使用空格分隔重新创建多个DEB文件:
$dpkg-repack <package1> <package2> <package3>
如果由于任何权限问题,如果由于任何权限问题而重建DEB文件,请尝试如下所示的FakeroOT环境:
$fakeroot -u dpkg-repack teams
DPKG-Repack实用程序的一个有趣功能是如果在未包装的情况下对包进行了任何更改(即/etc修改的文件),则新包将继承更改。
查看Deb文件的内容
我们可以使用命令查看该Deb文件的内容:
$dpkg --contents teams_1.3.00.5153_amd64.deb
示例输出:
drwxr-xr-x root/root 0 2017-05-26 15:15 ./ drwxr-xr-x root/root 0 2017-05-26 15:15 ./usr/ drwxr-xr-x root/root 0 2017-05-26 15:15 ./usr/bin/ -rwxr-xr-x root/root 286 2017-02-20 16:46 ./usr/bin/teams drwxr-xr-x root/root 0 2017-05-26 15:15 ./usr/share/ . . . drwxr-xr-x root/root 0 2017-05-26 15:15 ./usr/share/teams/swiftshader/ -rwxr-xr-x root/root 286264 2017-02-20 16:46 ./usr/share/teams/swiftshader/libEGL.so -rwxr-xr-x root/root 2677296 2017-02-20 16:46 ./usr/share/teams/swiftshader/libGLESv2.so -rwxr-xr-x root/root 114964776 2017-02-20 16:46 ./usr/share/teams/teams -rw-r--r-- root/root 1040912 2017-02-20 16:46 ./usr/share/teams/v8_context_snapshot.bin
当在多个系统上安装相同的包装集时,DPKG-Repack在派上派上使用,只需使用外部硬盘或者通过LAN传输到其他系统并使用DPKG命令安装:
$sudo dpkg -i <package-name>
请注意,我们仍然需要下载依赖项。
要安装依赖项,请运行:
$sudo apt-get -f install
然后使用如上所述的DPKG-Repack重新创建所有这些。
当我们想要向前工作版本回滚包时,这也会有所帮助。
例如,让我们说我们只需将Vim包升级到新的可用版本。
如果新版本不按预期工作,则可以简单地回滚到我们使用DPKG-Repack之前创建的旧版本。
有关更多详细信息,请参阅Man页面:
$man dpkg-repack