我正在.deb
为我们的软件创建安装包,它依赖于tomcat7
。不幸的是,Debian squeeze 中没有这个包,它只附带 包tomcat6
。
即将发布的 Debian 7 (Wheezy) 附带Tomcat 6 和 7。这是否意味着我可以从 Wheezy 中获取源包,为 Squeeze 重建它,并将其与我们自己的软件版本一起放入我们的自定义存储库中?或者这是否可能导致 Squeeze 系统发生冲突?
有几个地方有说明如何反向移植 tomcat,但让我担心的是 Tomcat 7 不是官方 Debian 6 反向移植项目的一部分。我不想弄乱任何用户的系统。例如,如果他们试图在已经安装的系统上安装我们的软件tomcat6
,我认为这与 相冲突tomcat7
。在这种情况下,它应该以与 Wheezy 或 Ubuntu 上相同的方式优雅地解决这个问题。
答案1
从您提供的链接来看,Tomcat7 的反向移植确实很容易。如果一切顺利,您最终应该会得到一个满足您要求的 tomcat7 包。但是...
一年前(博客文章出现时)它可能已经起作用了,但现在我认为有一个问题。实际上,这一步有点apt-get build-dep tomcat6
棘手。真正应该做的是apt-get build-dep tomcat7
。一旦你尝试这样做,你会发现工作有点繁琐。一些其他软件包将作为构建依赖项出现,你需要安装它们(如果它们可用),或者从源代码构建它们(如果没有)。
构建过程
从我的试验中,我发现为了能够tomcat7
为您的用户构建,您需要:
maven-repo-helper
启用 squeeze-backports并从那里安装javahelper
,- 从 wheezy 源构建
jakarta-taglibs-standard
并将其安装在您的构建机器上。
最后,我完成的整个过程如下所示(截至 2013 年 6 月 3 日提供的版本号):
# 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
tomcat7 7.0.28源码包特殊之处
上面列出的说明应该是所需的全部内容。但是,Wheezy/testing 存储库中的源包中有一个过期的证书tomcat7 7.0.28-4
(自签名证书已于 2013 年 2 月 27 日过期)。这将导致构建在单元测试中失败。
有两种解决方案可以解决这个问题:
- 将构建机器上的日期更改为2013年2月27日之前,
禁用构建的单元测试,这可以在文件中完成
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 升级。
维护
您需要考虑的最后一件事是 Tomcat 7 安全性或稍后在 Wheezy 中出现的错误修复。如果tomcat7
Wheezy 中出现严重更新,您应该真正考虑重建自己的tomcat7
软件包并向用户提供相同的更新。