為 Debian Squeeze 向後移植 tomcat7
我正在
.deb
為我們的軟體創建安裝包,它依賴於tomcat7
. 不幸的是,Debian 擠壓中不存在這個包,它只隨包一起提供tomcat6
。即將發布的 Debian 7 (Wheezy) 隨附Tomcat 6 和 7。這是否意味著我可以從 Wheezy 獲取源包,為 Squeeze 重建它,並將它與我們自己的軟體建構一起放入我們的自定義儲存庫中?或者這是否會以某種方式導致 Squeeze 系統發生衝突?
在幾個地方有關於如何反向移植 tomcat的說明,但讓我擔心的是 Tomcat 7 不是官方 Debian 6 反向移植項目的一部分。我不想弄亂我們任何使用者的系統。例如,如果他們嘗試在已經
tomcat6
安裝的系統上安裝我們的軟體,我認為這與tomcat7
. 在這種情況下,它應該以與 Wheezy 或 Ubuntu 上相同的方式優雅地解決這個問題。
從您顯示的連結來看,Tomcat7 的反向移植確實很容易。如果一切正常,您最終應該得到一個滿足您要求的 tomcat7 包。但…
它可能在一年前(當部落格文章出現時)起作用,但現在我認為有一個問題。實際上,這一步
apt-get build-dep tomcat6
有點棘手。真正應該做的是apt-get build-dep tomcat7
。一旦你嘗試這樣做,你會發現這項工作有點乏味。其他一些軟體包將作為建構依賴項出現,如果它們可用,您將需要安裝它們,如果沒有,則從原始碼建構它們。建構過程
從我的試驗中,我發現要能夠
tomcat7
為您的使用者建構,您需要:
- 啟用squeeze-backports並從那里安裝
maven-repo-helper
,javahelper
- 從 wheezy 源建構
jakarta-taglibs-standard
並將其安裝在您的建構機器上。最後,我完成的整個過程看起來像(截至 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
tomcat7 7.0.28源碼包的特殊之處
上面列出的說明應該是所有需要的。但是,
tomcat7 7.0.28-4
Wheezy/testing 儲存庫中的源包中有一個過期的證書(自簽名證書於 2013 年 2 月 27 日過期)。這將使建構在單元測試中失敗。有2個解決方案可以解決這個問題:
將建構機器上的日期更改為 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 升級。
維護
您需要考慮的最後一件事是稍後進入 Wheezy 的 Tomcat 7 安全性或錯誤修復。如果 Wheezy 中出現嚴重
tomcat7
更新,您真的應該考慮重新建構自己的tomcat7
軟體包並將這些更新提供給您的使用者。