Ubuntu

為 Debian Squeeze 向後移植 tomcat7

  • March 6, 2013

我正在.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-helperjavahelper
  • 從 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-4Wheezy/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軟體包並將這些更新提供給您的使用者。

引用自:https://serverfault.com/questions/482443