實在是有人太好心了,一直要掃我的機器,然後又跟我說機器上安裝的 httpd 太舊 Apache/2.2.14 (Ubuntu),因此需要更新軟體版本。我原先只會用 tarball 方式安裝,這次強者同事也提出很讚的解法(更新repositories),透過 /etc/apt/sources.list 慢慢新增 Ubuntu 10.10、11.04 甚至 11.10 的方式,在更新指定的套件,也能做到不錯得效果,如:
$ sudo vim /etc/apt/sources.list
#deb http://us.archive.ubuntu.com/ubuntu/ oneiric main #11.10
#deb http://us.archive.ubuntu.com/ubuntu/ natty main #11.04
deb http://us.archive.ubuntu.com/ubuntu/ maverick main #10.10
$ sudo apt-get update
$ sudo apt-get install apache2
$ apache2 -v
例如以 apache2 為例,原先在 10.04 是 2.2.14 版本,先增加 10.10 來源,用 sudo apt-get update && sudo apt-get install apache2 更新 apache2 部份,得到 2.2.16 版本,若此版本不夠新,在換成 11.04 來源,一次使用一個來源,再繼續更新,直到版本符合需求,以 Apache Web server 為例:
10.04:Apache/2.2.14 (Ubuntu)
10.10:Apache/2.2.16 (Ubuntu)
11.04:Apache/2.2.17 (Ubuntu)
11.10:Apache/2.2/20 (Ubuntu)
同事建議循序更新,以免碰到軟體相依性問題。並且安裝完後再把新增得來源註解掉,再重新 apt-get update 一次。
另外,若想透過 tarball 更新的話,就直接在網路尋找來源,此例是更新為 Apache 2.2.21。優點是可以拿到最新版本,最大缺點卻是脫離系統原先軟體管控的架構,該套軟變成孤兒需要自行維護。
目前打算保留原先安裝的 apache 2.2.14 環境,直接用 tarball 來更新到 2.2.21,此例包括安裝 mod_wsgi 部份:
移除內建 Apache 的開機自動執行:
$ sudo update-rc.d -f apache2 remove
安裝開發環境:
$ sudo apt-get install gcc libssl-dev libexpat-dev python2.6-dev
安裝位置以~/tarball 為例:
$ cd ~/
$ wget http://apache.stu.edu.tw//httpd/httpd-2.2.21.tar.gz
$ tar -xvf httpd-2.2.21.tar.gz
$ cd httpd-2.2.21
$ ./configure --prefix=/home/user/tarball --enable-ssl
$ make install
$ cd ~/
$ wget http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz
$ cd mod_wsgi-3.3
$ ./configure --with-apxs=/home/user/tarball/bin/apxs
$ make install
設定開機啟動:
$ sudo ln -s ~/tarball/bin/apachectl /etc/init.d/apache2.2.21.sh
$ sudo update-rc.d -f apache2.2.21.sh defaults
除此之外,還需更新 httpd 的設定,設定檔就改到 ~/tarball/conf 裡頭,如此一來,就算是設定完成了
我想,如果沒特別的需求,還是透過強者同事建議的方式進行更新就好,以免很多套件需要更新時,就變成各自維護的情境了。