我们有一个war文件,liquibase xml文件和sha1校验和我们想要打包成Debian脚本部署到一个平台:ubuntu 14.1 64bit with tomcat 7和java 7.
我们已经搜索了大量难以理解的(对于我们作为Java开发人员)Debian打包指南,其中大部分需要"上游源tar球"(例如这一个:https://wiki.debian.org/IntroDebianPackaging)和/或者通过make/install生成的东西.
我们既没有,这也是我们问题的症结所在.
我们有两个阶段:
指南没有提到如何管理这两个阶段.
初始安装(我们现在在每台服务器上手动执行的操作):
我们通过使用Jenkins构建的tar文件分发应用程序本身.在tar中如下:
我们将tar文件scp到/ home/foo目录中,并运行/home/foo/scripts/install.sh,它执行以下操作:
我们的问题是:
系统如何管理仅发送更新的文件,例如在这种情况下不是liquibase二进制文件?我假设我们需要两个软件包,一个用于基本安装,一个用于tar,以避免重复?
我们知道我们需要将工件放在一个特殊的目录结构中,并且它以某种方式映射到目标服务器文件结构,我们需要构建各种控制文件,但不是它在各个阶段如何粘合在一起,以及什么脚本是需要.
我们试图阅读Debian政策手册(https://www.debian.org/doc/debian-policy/),但这是对Linux体验开发人员的一个参考.我们确信答案在那里,但我们无法弄清楚在哪里.
这篇文章: https: //help.ubuntu.com/community/Tomcat/PackagingWebapps还有另外两个选项(我们选择"将系统范围的实例击败提交"),但没有提供有关如何实际构建软件包的线索.
最简单的方法是安装dh-make并使用它来生成一个骨架debian/目录以帮助您入门。您可以删除不相关的文件(例如,如果您不提供手册页)。
您需要编辑以在- 可能和;debian/control中指定必要的包 你不需要提及,因为它在 中,这是一个 Essential 包。Depends: tomcat7tomcat7-javasha1sumcoreutils
如果(且仅当)您无法通过简单地在某处添加文件来覆盖现有设置,请context.xml向脚本添加必要的修改。postinst
添加一个带有install目标的 Makefile,将必要的文件放入以下子目录中$DESTDIR:
install:
install -d $(DESTDIR)/var/lib/tomcat7/webapps
install -m 644 app.war $(DESTDIR)/var/lib/tomcat7/webapps
Run Code Online (Sandbox Code Playgroud)
我希望当依赖包更新时可以触发 Tomcat 重新加载(通过在 中提及debian/triggers),但如果没有,您需要在 postinst 和 postrm 脚本中重新启动它(使用invoke-rc.d或systemctl,取决于目标 init 系统) 。
回答具体问题:
如果您需要创建新用户,请在 preinst 脚本中执行此操作(来自另一个包的 crib,或阅读手册)。您确实需要另一个用户,还是 tomcat 用户合适?
包管理器安装和卸载提供的所有文件,并运行提供的 preinst、postinst、prerm 和 postrm 脚本。
该列表不是同类比较 - 例如dpkg用于管理系统上的包,而不是用于创建包。有了合适的debian目录,构建就可以如此简单
fakeroot debian/rules binary
Run Code Online (Sandbox Code Playgroud)
pbuilder 等工具可用于确保在构建系统上安装库等依赖项,而不是手动安排,如果您正在构建发行版,这会变得乏味。您不应该需要那种级别的自动化。
软件包的文件将安装到放置它们的目录$DESTDIR中make install。
可能有比编辑/etc. 我对那个服务器不太了解,我自己也不太了解。
目标文件的权限和所有权与make install设定的完全一致。
Debian 打包手册中有很多内容值得阅读;我建议您在该机制开始变得有意义时经常参考该内容。
我不确定你所说的“发送文件”是什么意思。并且该软件包不需要包含您从中解压的 tarball - 这只是重复。
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |