我正在为我们的软件创build.deb安装包,它依赖于tomcat7 。 不幸的是,这个软件包并不存在于Debian压缩包中,这个压缩包只包含tomcat6包。
即将发布的Debian 7(Wheezy) 同时发布了Tomcat 6和7 。 这是否意味着我可以从Wheezy中获取源代码包,将其重build为Squeeze,并将其与我们自己的软件构build一起放入我们的定制存储库中? 或者这可能会导致挤压系统的矛盾?
有几个地方有关于如何反向运行tomcat的说明 ,但是令我担心的是Tomcat 7不是官方Debian 6反向运行项目的一部分。 我不想搞乱我们任何用户的系统。 例如,如果他们尝试在已经安装了tomcat6的系统上安装我们的软件,我认为这与tomcat7冲突。 在这种情况下,它应该像在Wheezy或Ubuntu上那样以优雅的方式来解决这个问题。
从你所展示的链接来看,Tomcat7的回溯看起来很容易。 如果一切正常,你应该最终得到一个满足你需求的tomcat7包。 但…
这可能在一年前(当博客文章出现的时候)有效,但现在我觉得有一个问题。 实际上, apt-get build-dep tomcat6这个步骤有点棘手。 真正应该做的是apt-get build-dep tomcat7 。 一旦你试图做到这一点,你会发现这项工作有点乏味。 其他一些软件包将作为构build依赖关系出现,如果可用,则需要安装它们;如果不可用,则需要从源代码构build它们。
从我的试用中,我发现为了能够为您的用户构buildtomcat7 ,您需要:
maven-repo-helper和javahelper , jakarta-taglibs-standard并将其安装在您的构build机器上。 最后,我完成的整个过程看起来像(截至06/03/2013提供的版本号):
# adding wheezy sources to your apt config and preparing the build host: echo "deb http://backports.debian.org/debian-backports squeeze-backports main" >> /etc/apt/sources.list echo "deb-src http://ftp.debian.org/debian/ wheezy main" >> /etc/apt/sources.list apt-get update apt-get install dpkg-dev build-essential fakeroot # manually adding missing build dependencies apt-get -t squeeze-backports install javahelper maven-repo-helper # getting the source package for jakarta-taglibs-standard, building and installing it on the build machine: cd /usr/local/src/ apt-get -t wheezy source jakarta-taglibs-standard apt-get build-dep jakarta-taglibs-standard cd jakarta-taglibs-standard-1.1.2 dpkg-buildpackage -rfakeroot -b cd .. dpkg -i libjstl1.1-java_1.1.2-2_all.deb dpkg -i libjakarta-taglibs-standard-java_1.1.2-2_all.deb # getting the source package for tomcat7 and building it (this takes some time...) apt-get -t wheezy source tomcat7 apt-get build-dep tomcat7 cd tomcat7-7.0.28 dpkg-buildpackage -rfakeroot -b
上面列出的说明应该是所有需要的。 但是,Wheezy / testing存储库(自签名证书在2013年2月27日过期)的tomcat7 7.0.28-4源代码包中存在过期的证书。 这将使unit testing中的构build失败。
有两个解决scheme来解决这个问题:
禁用你的构build的unit testing,这可以在build.properties.default文件中完成,你需要改变3个属性:
execute.test.bio=false execute.test.nio=false execute.test.apr=false 正如你在链接中看到的那样,你将会得到一些你需要为你的用户提供的tomcat7-...包。 最好的办法是通过你自己的仓库,这样他们可以很容易地安装。
所有这些软件包,一切都应该没问题,你的用户实际上会有一个Tomcat 7的回迁到Squeeze。 如果您的用户迁移到Wheezy,那么他们应该没有问题,因为Wheezy中的任何新的Tomcat 7软件包的版本号将比您提供的版本号更大。 他们会收到Wheezy升级就好了。
最后需要考虑的是后来进入Wheezy的Tomcat 7安全性或错误修复。 如果在Wheezy中popup一个严重的tomcat7更新,你应该考虑重新tomcat7自己的tomcat7包,并为用户提供相同的更新。