我已经从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下做的伎俩。