【问题标题】:debian packaging: how to update an earlier version of a package?debian 打包:如何更新早期版本的包?
【发布时间】:2016-02-17 12:33:40
【问题描述】:

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

这一切都会奏效,但我们如何更新呢?

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

作为第一个安装包的一部分部署的配置文件呢?我们不想覆盖这些,但如果它们不存在,我们需要将它们放在那里。在这种情况下,想必我们不能使用通常的打包文件的方式。

任何想法我们如何做到这一点?

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

【问题讨论】:

    标签: debian package


    【解决方案1】:

    呃,当替换一个旧包时,新包包含新文件通常不是问题。当新包不再包含您真正需要做某事的特定文件时。

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

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

    希望我能正确理解您的问题。我最初(错误?)阅读它是因为您想管理软件包安装脚本中的所有内容;这是例如Adobe Flash 安装程序包是如何工作的(它们不能在包中包含实际的有效负载,因此“打包”脚本会下载它并将其内容提取到正确的位置),但它有很多问题,而且不是一种方法我推荐。

    【讨论】:

      猜你喜欢
      • 2011-04-15
      • 2016-06-28
      • 2014-02-14
      • 2016-11-28
      • 2011-06-24
      • 1970-01-01
      • 2022-11-10
      • 2010-11-25
      • 1970-01-01
      相关资源
      最近更新 更多