这个简短的指南介绍了一个有用的实用程序,称为 dpkg-repack
,用于重新创建已安装在基于 debian 的系统上的 Debian 二进制包。
内容
什么是 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'.
如您所见,上述命令重新创建了 "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
第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