September 26, 2005

[備忘] OpenVPN on CentOS 4 (part 2)

時光飛逝,上次寫[備忘] OpenVPN on CentOS 4已經是兩個月前的事了。"OpenVPN on CentOS 4"這件事終於又推進了一步。底下的紀錄,包含失敗的部份以及成功的紀錄。即便是成功的紀錄,也忠實的留下了跌跌撞撞的過程,希望讓大家感受一下,在CentOS 4的最小安裝上面再安裝套件的難度/容易度。至於到底是難是易,這就看妳對系統的熟悉度囉。

[嘗試以Binary RPM安裝的失敗紀錄]
OpenVPN官方網站並不提供RPM binary,它建議妳可以去Dag Wieers維護的站台下載。底下有 # 開頭的表示是以 root 權限執行的指令,括號則是自己加的說明。

(如果妳的環境不需要proxy,底下這行可以免了)
# export http_proxy=http://proxy.my.company:3128/
(我用 wget 這個指令來下載檔案,因為RHEL/CentOS沒有提供lzo套件,所以一併下載)
# wget http://dag.wieers.com/packages/lzo/lzo-2.00-1.2.el4.test.i386.rpm
# wget http://dag.wieers.com/packages/openvpn/openvpn-2.0.2-1.2.el4.rf.i386.rpm
(用rpm -ivh來安裝套件, lzo順利裝好)
# rpm -ivh lzo-2.00-1.2.el4.test.i386.rpm
(但是要裝openvpn的時候就...)
# rpm -ivh openvpn-2.0.2-1.2.el4.rf.i386.rpm
(遇上了相依性的問題:failed dependency: need liblzo.so.1)
(看了一下,lzo安裝套件提供的是liblzo.so.2.0.0,做個symbolic link試試看能不能騙過系統)
# cd /usr/lib
# ln -s liblzo.so.2.0.0 liblzo.so.1
# rpm -ivh openvpn-2.0.2-1.2.el4.rf.i386.rpm
(還是不行,決定放棄這條路,移掉lzo rpm binary)
# rpm -e lzo
(寫了個email給Dag,向他反應他包的lzo和openvpn這個相依性問題)

[從原始碼編譯RPM的成功紀錄]
根據官網http://openvpn.net/faq.html#rpmbuild,它說要自行編譯的話,需要有下列四個套件:
* openssl
* openssl-devel
* lzo
* lzo-devel
因為我當初在安裝CentOS 4的時候選的是最小安裝,系統裡面只有openssl,因此接下來要準備上述相依性套件。後來發現我至少還需要另外三個套件,在這邊賣個關子,往下看就有答案啦。
(先來安裝openssl-devel)
# yum -y install openssl-devel
(由於我用了 -y 這個參數,所以系統不會問我問題,會自動把相依性套件--對,為了裝openssl-devel還要先裝其他的套件--都下載並安裝)
(妳會看到類似這樣的訊息
Installed: openssl-devel.i386 0:0.9.7a-43.2
Dependency Installed: e2fsprogs-devel.i386 0:1.35-12.1.EL4 krb5-devel.i386 0:1.3.4-17 zlib-devel.i386 0:1.2.1.2-1.2)
(下載lzo-devel套件)
# wget http://dag.wieers.com/packages/lzo/lzo-devel-2.00-1.2.el4.test.i386.rpm
(安裝lzo, lzo-devel)
# rpm -ivh lzo-2.00-1.2.el4.test.i386.rpm
# rpm -ivh lzo-devel-2.00-1.2.el4.test.i386.rpm
接下來參考官網Download下載原始碼,目前是2.0.2
# wget http://openvpn.net/release/openvpn-2.0.2.tar.gz
(接下來我花了一點時間,研究為什麼我的系統沒有rpmbuild,也許是問Google的關鍵字下的不好,最後是用底下這個指令去查詢,有哪些套件是rpm開頭的)
# yum list rpm*
(原來這個套件名稱叫做rpm-build)
# yum -y install rpm-build
(好,相依套件應該到齊了,使用rpmbuild來編譯吧)
# rpmbuild -tb openvpn-2.0.2.tar.gz
(還是失敗,需要pam-devel,那就裝吧)
# yum -y install pam-devel
(再來一次)
# rpmbuild -tb openvpn-2.0.2.tar.gz
(又失敗,這次告訴我"no acceptable C compiler found in $PATH",原來CentOS 4最小安裝連gcc都沒包含啊,那就裝吧!)
# yum -y install gcc
(嗯,為了裝gcc,還幫我裝了一堆
Installed: gcc.i386 0:3.4.3-22.1
Dependency Installed: cpp.i386 0:3.4.3-22.1 glibc-devel.i386 0:2.3.4-2.9 glibc-headers.i386 0:2.3.4-2.9 glibc-kernheaders.i386 0:2.4-9.1.87)
(再試一次!)
# rpmbuild -tb openvpn-2.0.2.tar.gz
(成功了,一堆編譯的訊息,最後幾行應該會有一行類似底下的,也就是編譯出來的RPM binary)
Wrote: /usr/src/redhat/RPMS/i386/openvpn-2.0.2-1.i386.rpm
(好啦,終於可以安裝openvpn了)
# rpm -ivh /usr/src/redhat/RPMS/i386/openvpn-2.0.2-1.i386.rpm

所以,謎底揭曉,除了官網提到的,我還需要這些套件,才能編譯OpenVPN:
* pam-devel
* rpm-build
* gcc


就這樣!?
對啊,我只說要往前推進一步,這次弄好了「安裝」,下次再來弄「設定」囉!
^_^

想打我的人請不要打我,直接去看網中人的OpenVPN 建置方案,就是在CentOS 4上面裝OpenVPN 2.0.2,跟我的環境一模一樣 :p

Posted by ystuan at 03:00 PM | Comments (1)

September 06, 2005

七個關於開放原始碼的基本事實

之前在做一份投影片的時候,找到了Seven basic truths about open source這裡有完整版本(PDF,四頁),覺得可以拿來澄清一些外界的誤解。我試著翻譯這七個事實,並且對完整版本的論點做摘要翻譯。

下次妳需要簡潔有力的論點來對抗關於開放原始碼軟體或自由軟體的FUD,可以參考一下。

1. You are not required to share changes and enhancements you make to open source software for internal use (but it's a good idea to do so in many cases).
如果僅供內部使用,妳不需要分享妳對開放原始碼軟體的修改或增補。(但是大多數的情況下,這樣做有益無害)

如果這些增補,和妳的核心競爭力無關,為什麼不提交給開發團隊,由她們來幫妳維護呢?在組織內部自行維護這些增補可能會很耗費資源喔。

2. Software published under the GPL cannot be revoked.
採用GPL授權釋出的軟體不能再撤銷。

3. Applications written to run on top of Linux do not need to be open source.
在Linux作業系統上開發的程式不需要開放原始碼。

4. Applications written using most open source tools, languages, code libraries, or databases are not required to be open source.
在開發妳應用程式的過程,運用到大部分的開放原始碼工具、程式語言、code libraries(語言函式庫?),或資料庫,妳的應用程式不需要開放原始碼。

有些可能會有license(許可證)的限制,在妳用它們來開發妳的私有軟體時,應該加以確認,以確保妳沒有違反(例如)GPL。

5. The most popular open source software is produced by professionals, not hobbyists.
最熱門的開放原始碼軟體往往是專業人士的心血,不是業餘玩家隨便玩玩。

熱門的開放原始碼軟體專案常常是架構完備的,有些甚至有大公司花錢請人專職參與開發。雖然任何人都可以提交程式碼的增補,通常只有夠水準的才會被接受。「任何人都可以瀏覽程式碼」這件事也影響大家,要提交夠水準的程式碼。

6. Open source software can be sold for a profit.
妳可以販賣開放原始碼軟體來牟利。

雖然妳在散佈軟體的時候必須附上程式碼,妳仍然可以收費,市場機制會決定價格。很多商業模式都搭配諮詢服務、維護合約,或者軟體增補。

7. Commercial support is available for open source software.
開放原始碼軟體也找得到付費支援。

對規模小的開放原始碼軟體商來說,常見的模式是讓使用者自由取得軟體,然後提供商業等級的支援服務。一些大公司也對開放原始碼軟體提供支援服務。

Posted by ystuan at 08:55 PM | Comments (0)