debian包装:如何更新软件包的早期版本?

时间:2016-02-17 12:33:40

标签: debian package

因为我们没有使用上游tar / source / make包装东西,所以99%的包装文档都不相关。我们需要将一些脚本和java和war文件部署到ubuntu。我们正试图通过debian包来做到这一点。我们认为它可以自动将您提供的特定文件复制到目标服务器中的等效位置,例如:如果我们提供./var/lib/tomcat7/webapps/someting.war文件,apt-get install ourapp会将战争放在正确的位置。我们还想部署libs和脚本。

这一切都有效,但我们如何更新?

如果我们只是创建一个新包,大概是新文件将覆盖旧文件。但是我们如何清理新包中存在的文件,而不是旧文件?我们需要编写脚本,还是有一些自动的方法来执行此操作?

配置文件怎么样,作为第一个包instlal的一部分?我们不想覆盖这些,但如果它们不存在,我们需要把它们放在那里。据推测,在这种情况下,我们无法使用通常的打包文件方式。

我们如何做到这一点?

另一种方式是我们不提供包中的任何文件,而是执行我们自己的文件管理。我们将在包中提供一个tar文件,然后编写安装脚本将其解压缩到一个临时位置,然后以编程方式将文件复制到FS上。这是一种有效的方法吗?在这种情况下,使用.deb打包系统没有多大意义。

1 个答案:

答案 0 :(得分:1)

呃,在更换旧包时,新包中包含新文件通常不是问题。当新包不再包含您实际需要执行某项操作的特定文件时。

对于常规程序包,升级时dpkg会删除旧版本但未包含在新版本中的所有文件;所以你不需要自己做任何事情。见https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-unpackphase

对于配置文件,将某些内容标记为 conffile 的行为与您描述的完全相同。当您的上游默认配置更改时,您通常也希望将用户的配置升级到最新默认设置。在您的包中使用ucf可以很好地处理这种情况。

我希望我能正确理解你的问题。我原来(误 - ?)读取它,因为你想管理包安装脚本中的所有内容;这是例如Adobe Flash安装程序包的工作原理(它们不能在程序包中包含实际的有效负载,因此" packaging"脚本将其下载并将其内容提取到正确的位置),但它存在许多问题,并且这不是我推荐的方法。