可以从安装中重建 deb 包吗?

可以从安装中重建 deb 包吗?

我从 PPA 安装了一些第三方 deb 包,现在已删除这些包。

由于我有安装这些软件包的主机,是否有可能以某种方式重建它们?

答案1

这些软件包可能仍在您的本地 .deb 缓存中。在尝试重建之前,请先查看它是否在那里。

尝试查找/var/cache/apt/archives。这就是我的 Debian 机器上的 apt 缓存所在的位置(它应该位于 Ubuntu 上的相同位置)。

正如@Zoredache 提到的:如果你习惯于运行,apt-get clean你的本地缓存将会是空的。请参阅他的回答,了解如何使用控制文件和脚本重建包。

答案2

在 Debian 下你有dpkg-重新打包完成这项任务。它只是一个 perl 脚本,从 debian/sarge 开始运行。它也应该在 ubuntu 下完成这项任务。

答案3

这应该是可能的,但是会有点棘手。

正确创建的 Debian 包在安装时将保留执行此操作所需的大部分重要细节/var/lib/dpkg/info

第一个重要文件是,/var/lib/dpkg/info/foo.list它应该是安装在您系统上的原始软件包中包含的所有文件的列表。因此,开始将所有这些文件复制到某个临时目录中。

Debian 软件包的二进制版本将包含一个控制档案,其中包含多个脚本。获取/var/lib/dpkg/info/foo.(postinst|postrm|preinst|prerm)这些脚本就是您的安装/卸载脚本。获取列表的另一种方法是运行dpkg-query -c foo

创建 Debian 软件包所需的另一个文件是控制文件。据我所知,软件包控制文件并未存储在系统的任何地方,但您可以获得足够接近的文件,然后通过运行命令来重建它dpkg-query -s foo | grep -v 'Status:'

无论如何,有了软件包安装的文件和所有控制文件,您应该能够重新构建软件包。这Debian 二进制软件包构建指南应该为您提供有关如何使用dpkg-deb来执行此操作的足够详细信息。

答案4

你可以追踪包裹丢下东西的地方,然后使用纤维增强塑料

我只是这样做是为了从已安装的 webapp 构建一个 deb。 fpm -s dir -t deb -n "webapp1" -v 1.0-mywebapp /var/www/pathtowebapp

相关内容