重新创建已安装在系统上的 Debian 二进制包

这个简短的指南介绍了一个有用的实用程序,称为 dpkg-repack,用于重新创建已安装在基于 debian 的系统上的 Debian 二进制包。

内容

  1. 什么是 dpkg-repack?
  2. 在 Debian、Ubuntu 和衍生产品中安装 dpkg-repack
  3. 使用 dpkg-repack 重新创建 Debian 二进制包
    1. 查看 deb 文件的内容

什么是 dpkg-repack?

想象一下这个场景。 您已经在基于 Debian 的系统上安装了一些软件包。 并且您想在另一个系统上安装相同的软件包。 但是你丢失了二进制档案,即 deb 文件。 您会从他们的官方网站或存储库再次下载它们吗?

如果特定软件包的特定版本在其他地方不再可用怎么办? 不用担心! 由于它们已经安装在您的系统上,您可以轻松地重新创建 .deb 文件。 打招呼 dpkg-repack

dpkg-repack 是一个命令行 Debian 软件包归档工具,用于重新创建已安装在您系统上的 Debian 二进制软件包。

简而言之, dpkg-repack 实用程序可以创建一个 .deb 从系统上已安装的 debian 包中提取文件。

dpkg-repack 实用程序可以在您想要的许多情况下提供帮助,

  • 重新创造 .deb 来自现有安装的 debian 软件包的文件,
  • 轻松地将软件包从一个系统复制到另一个系统,
  • 在升级之前保存包的当前状态,
  • 备份特定版本的软件包以备将来使用,
  • 保存不再可供下载的特定软件包。

在 Debian、Ubuntu 和衍生产品中安装 dpkg-repack

dpkg-repack 可在 Debian、Ubuntu 及其变体的默认存储库中找到。 安装 dpkg-repack,只需运行以下命令:

$ sudo apt install dpkg-repack

使用 dpkg-repack 重新创建 Debian 二进制包

1. 就本指南而言,让我们使用 Microsoft 团队应用程序 我不久前在我的 Ubuntu 桌面上安装了它。

$ 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 应用程序后立即将其删除。 我可以去官方下载页面重新下载。 但是为什么要一遍又一遍地下载它呢? 我现在可以简单地重新创建 teams.deb 使用 dpkg-repack 文件。

2. 创造 teams.deb 来自已经安装的团队包的文件 dpkg-repack 实用程序,运行:

$ dpkg-repack teams

示例输出:

dpkg-deb: building package 'teams' in './teams_1.3.00.5153_amd64.deb'.
使用 dpkg-repack 实用程序重新创建 Debian 二进制包

如您所见,上述命令重新创建了 "teams_1.3.00.5153_amd64.deb'" 来自已安装在我的 Ubuntu 桌面上的 Teams 包中的文件。 新创建的 deb 文件将保存在当前工作目录中。

同样,您可以将任何已安装的 Debian 软件包转换回 .deb 包使用 dpkg-repack 公用事业。

3. 也可以重新创建多个以空格分隔的 deb 文件:

$ dpkg-repack <package1> <package2> <package3>

4. 如果由于任何权限问题而无法重建 deb 文件,请尝试从 假根 环境如下:

$ fakeroot -u dpkg-repack teams

dpkg-repack 实用程序的一项有趣功能是,如果在解压缩包时对包进行了任何更改(即修改了 /etc 中的文件),新包将继承更改。

查看 deb 文件的内容

步骤1: 您可以使用以下命令查看该 deb 文件的内容:

$ 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
linux查看deb文件内容

第2步: 在多个系统上安装同一组软件包时,dpkg-repack 会派上用场,只需使用外部硬盘驱动器或通过 LAN 将它们传输到其他系统并使用 dpkg 命令安装它们:

$ sudo dpkg -i <package-name>

第 3 步: 请注意,您仍然需要下载依赖项。 要安装依赖项,请运行:

$ sudo apt-get -f install

或者,您可以按照以下链接中的说明找到包的依赖项:

  • 如何在 Linux 中列出包的依赖项

然后使用重新创建所有这些 dpkg-repack 如上所述。

步骤4: 当您想要将包回滚到以前的工作版本时,这也将有所帮助。 例如,假设您刚刚升级 Vim 打包到新的可用版本。 如果新版本没有按预期工作,您可以简单地回滚到您之前使用创建的旧版本 dpkg-repack.

有关更多详细信息,请参阅手册页:

$ man dpkg-repack

相关阅读:

  • 如何从源代码构建 Debian 软件包
  • 如何使用 CheckInstall 从源代码构建包
  • 如何使用 Alien 转换 Linux 软件包

资源:

  • dpkg-repack GitHub 存储库

Debian Debian 软件包dpkg-repackLinuxLinux 命令Linux 如何重新创建 deb 软件包Ubuntu