可以重新安装deb包吗?

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

是否有可能重新构build包,因为我有主机安装在哪里?

软件包可能仍然在您的本地.debcaching中。 在尝试重build它之前,看看它是否在那里。

尝试查看/var/cache/apt/archives 。 这就是apt cache所在的位置(它应该在Ubuntu上的相同位置)。

正如@ Zoredache提到:如果你习惯于运行apt-get clean你的本地caching将是空的。 请看他如何使用控制文件和脚本重build软件包的答案。

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

安装好的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

您需要创buildDebian软件包的另一个文件是控制文件。 AFAIK,包控制文件不存储在系统的任何地方,但是你可以得到足够接近的东西,你可以运行命令dpkg-query -s foo | grep -v 'Status:' dpkg-query -s foo | grep -v 'Status:'

无论如何,由包和所有的控制文件安装的文件,你应该能够重新构build包。 这个Debian Binary Package Building HOWTO应该给你足够多的关于如何使用dpkg-deb来做到这一点的细节。

您可以追踪包裹放置的地方,并使用FPM

我只是这样做,从一个已安装的Web应用程序build立一个deb。 fpm -s dir -t deb -n "webapp1" -v 1.0-mywebapp /var/www/pathtowebapp

在debian下你有dpkg重新包装这个任务。 它只是一个perl脚本,并从debian / sarge运行。 它也应该在Ubuntu下做的伎俩。