debian 打包:如何更新软件包的早期版本?
debian packaging: how to update an earlier version of a package?
因为我们没有打包上游的东西tar/source/make,所以 99% 的打包文档是不相关的。我们需要将一些脚本和 java 和 war 文件部署到 ubuntu。我们正在尝试通过 debian 软件包来做到这一点。我们了解到它可以自动将您提供的特定文件复制到 target 服务器中的相应位置,例如如果我们提供文件 ./var/lib/tomcat7/webapps/someting.war,apt-get install ourapp 会将 war 放在正确的位置。我们还想部署库和脚本。
所有这些都可以,但我们如何更新它?
如果我们简单地创建一个新包,估计新文件会覆盖旧文件。但是我们如何清理存在于新包中但不存在于旧包中的文件呢?我们是否需要编写脚本,或者是否有一些自动方法可以做到这一点?
作为第一个安装包的一部分部署的配置文件怎么样?我们不想覆盖这些,但如果它们不存在,我们需要将它们放在那里。想必在这种情况下我们不能使用通常的文件打包方式了。
知道我们是怎么做到的吗?
另一种方式是我们不在包中提供任何文件,而是进行我们自己的文件管理。我们会在包中提供一个 tar 文件,然后编写安装脚本将其提取到一个临时位置,然后以编程方式将文件复制到 FS 上。这是一种有效的方法吗?在这种情况下,使用 .deb 打包系统没有多大意义。
呃,更换旧包时,新包包含新文件通常不是问题。当新包不再包含您实际需要做某事的特定文件时。
对于常规软件包,升级时 dpkg
会删除旧版本中但新版本中没有的所有文件;所以你不需要明确地自己做任何事情。参见 https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-unpackphase
至于配置文件,将某些内容标记为 conffile 的行为与您描述的完全一样。当您的上游默认配置文件发生变化时,您通常也希望将用户的配置文件升级到最新的默认配置文件。在您的包中使用 ucf
可以很好地处理这种情况。
希望我能正确理解你的问题。我最初(错误?)阅读它是因为您想管理软件包安装脚本中的所有内容;这是例如Adobe Flash 安装程序包如何工作(它们不能在包中包含实际有效负载,因此 "packaging" 脚本下载它并将其内容提取到正确的位置),但它有很多问题,并且不会我推荐的方法。
因为我们没有打包上游的东西tar/source/make,所以 99% 的打包文档是不相关的。我们需要将一些脚本和 java 和 war 文件部署到 ubuntu。我们正在尝试通过 debian 软件包来做到这一点。我们了解到它可以自动将您提供的特定文件复制到 target 服务器中的相应位置,例如如果我们提供文件 ./var/lib/tomcat7/webapps/someting.war,apt-get install ourapp 会将 war 放在正确的位置。我们还想部署库和脚本。
所有这些都可以,但我们如何更新它?
如果我们简单地创建一个新包,估计新文件会覆盖旧文件。但是我们如何清理存在于新包中但不存在于旧包中的文件呢?我们是否需要编写脚本,或者是否有一些自动方法可以做到这一点?
作为第一个安装包的一部分部署的配置文件怎么样?我们不想覆盖这些,但如果它们不存在,我们需要将它们放在那里。想必在这种情况下我们不能使用通常的文件打包方式了。
知道我们是怎么做到的吗?
另一种方式是我们不在包中提供任何文件,而是进行我们自己的文件管理。我们会在包中提供一个 tar 文件,然后编写安装脚本将其提取到一个临时位置,然后以编程方式将文件复制到 FS 上。这是一种有效的方法吗?在这种情况下,使用 .deb 打包系统没有多大意义。
呃,更换旧包时,新包包含新文件通常不是问题。当新包不再包含您实际需要做某事的特定文件时。
对于常规软件包,升级时 dpkg
会删除旧版本中但新版本中没有的所有文件;所以你不需要明确地自己做任何事情。参见 https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-unpackphase
至于配置文件,将某些内容标记为 conffile 的行为与您描述的完全一样。当您的上游默认配置文件发生变化时,您通常也希望将用户的配置文件升级到最新的默认配置文件。在您的包中使用 ucf
可以很好地处理这种情况。
希望我能正确理解你的问题。我最初(错误?)阅读它是因为您想管理软件包安装脚本中的所有内容;这是例如Adobe Flash 安装程序包如何工作(它们不能在包中包含实际有效负载,因此 "packaging" 脚本下载它并将其内容提取到正确的位置),但它有很多问题,并且不会我推荐的方法。