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

San*_*dra 6 linux ubuntu

我已经从 PPA 安装了一些 3rd 方 deb 包,现在已经删除了这些包。

是否有可能以某种方式重建软件包,因为我拥有安装它们的主机?

小智 7

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

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

正如@Zoredache 所提到的:如果您有运行apt-get clean本地缓存的习惯,那么您的本地缓存将是空的。请参阅他关于如何使用控制文件和脚本重建包的答案。


Tho*_*enS 6

在 debian 下,您可以使用dpkg-repack来完成此任务。它只是一个 perl 脚本,从 debian/sarge 开始运行。它也应该在 ubuntu 下解决问题。


Zor*_*che 5

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

安装后正确创建的 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 软件包所需的另一个文件是控制文件。AFAIK,包控制文件没有存储在系统的任何地方,但是你可以得到足够接近的东西,你可以通过运行命令来重建它dpkg-query -s foo | grep -v 'Status:'

无论如何,通过包安装的文件和所有控制文件,您应该能够重新构建包。这个Debian 二进制包构建 HOWTO应该为您提供有关如何使用它的足够详细信息dpkg-deb