• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    freebsd開發環境解決方案

    發布: 2007-7-13 21:17 | 作者: 佚名    | 來源: 轉載     | 查看: 17次 | 進入軟件測試論壇討論

    領測軟件測試網

    以前曾經看過很多開發人員提到FreeBSD用于開發是非常優秀的系統,
    但是之前提到的主要都是freebsd在單機的開發環境下所具有的優勢,但是
    最近我發現其實FreeBSD在開發方面所具備的優勢并不僅只于此。在一個
    開發團隊中使用FreeBSD是可以形成一個完整的解決方案的。在單機方面
    的開發環境上,我不想多說了,Linux其實也具備很多好的特點的,我想
    說得更多是linux所不具備的特點。當然這個方案使用linux來完成并不
    是不可能的,但是使用linux來完成其中的很多部分是有一些困難的,
    從便利性上來講不如FreeBSD,從我這個懶人的角度來講,如果有兩個
    方法來解決問題,一個既簡單又快速(還很清晰),另一個相對比較復
    雜,耗時長。那我沒有理由非要選用后一種  。說這話的原因
    是,我不想跟我們國家普遍存在的某些偏執的人引起任何的爭論。只是想
    說這里其實有一種簡單易行的方法。更主要的原因是,這種方法在我已
    知的情況下還沒有人在開發環境的建立中使用。

    其實這個方法所使用的技術都是已經被廣泛采用的,甚至可以說有些
    古老的東西。只是通過FreeBSD這個系統能夠把它們都串連在一起?梢孕
    成一套完整的開發環境,還包括辦公環境。我這個想法的核心是由一臺
    FreeBSD中心服務器來完成的。這個中心服務器上安裝CVS server,
    Samba server和NFS server就可以了,其中Samber server可以提供方便的
    空間共享,之所以除了NFS還要再單裝Samba,是因為Samba在非*nix的環境
    上也可以使用。同時還可以安裝CUPS來驅動一臺打印機,通過Samba共享,
    讓整個工作環境都可以共享打印服務。用FreeBSD做中央文件服務器和CVS
    服務器的好處是不會受到廣大的Windows病毒的影響,F在還有一點缺憾的
    是在FreeBSD上還沒有好的殺毒軟件可用,雖然有個老美的殺毒軟件,但是
    因為是付費的,付給老美一方面有點貴貴,另一方面也比較麻煩,希望我們
    國家的殺毒軟件廠商也能考慮做一個能在FreeBSD上運行的版本,就算收點
    錢也可以。這樣的好處就在于可以在crontab里運行殺毒軟件定期的掃描文
    件服務目錄中的文件是不是感染了病毒。其實這對于FreeBSD沒什么意義,
    因為FreeBSD也不會受病毒的影響,但是使用這個文件服務的windows的機器
    就危險了,這也算是我的一個期望吧,也許不太現實。在FreeBSD上安裝
    CVS,Samba我都不太想多說了,文章很多了,我和老黃都曾經寫過如何在
    FreeBSD上安裝CVS server的文章。Samba很簡單了用ports裝就完了。以后
    有時間了我會把每個服務的安裝文檔整合進來形成一個完整的東西的,F
    在我們重點講一下在FreeBSD上使用NFS的情況。其實這個是我最想說地,
    因為通過NFS和FreeBSD本身的軟件系統相結合能夠產生一個很意想不到
    地效果。

    在FreeBSD上如何使用NFS server
    其實在FreeBSD上使用NFS server非常簡單。打開NFS server的服務是個很簡單
    的事情,只需要運行/stand/sysinstall,選擇Configure,在這個菜單中選擇
    Networking,里面有一個NFS Server的選項,把它勾上以后會進入編輯器編輯
    一個文件/etc/exports你直接寫你要export出去的目錄就可以了。需要注意的
    一點是FreeBSD的NFS有個可能算是不太好的特點,export出去的目錄必須是
    mountpoint,也就是分區的掛點。例如你運行mount的時候你能看到你現在都
    mount了那些分區,mount到的那個目錄就是相應的掛點。這點上Solaris就可
    以指定目錄,所以我覺得FreeBSD這么弄有點不太爽,也許這樣設計比較簡單吧。
    在我所要描述的方法中我們需要的是將/usr這個掛點export出去。這里不得不
    提到一個問題,很多從linux轉過來的兄弟都有個我們不太推薦的習慣,就是把
    整塊硬盤就分成一個"/",在linux下其實也不推薦這么用的,如果在FreeBSD
    上這樣分的話,問題就更多了,比如用NFS的話,你就得把"/"都export出來,
    還不郁悶死了。下面我舉個例子在/etc/exports里面應該怎么寫:
    代碼:

    /usr    -alldirs -maproot=root  192.168.0.10
     

    按照上面一行寫的意思就是將整個/usr這個分區都export出來供192.168.0.10
    這個地址所使用,如果不寫ip地址就是export給所有人用的,這么干比較危險,
    如果不是在一個100%可靠的網絡里面最好別這么干。-alldirs的意思就是
    /usr中的每個目錄都可以作為NFS的掛點掛到遠程,這點比較重要,我后面
    會提到的,-maproot=root的意思就是給予對方root權限來操作目錄。這里
    說句題外話,Solaris在這點有個不如FreeBSD的地方,Solaris里面export
    給的目標是不能夠寫ip地址的,必須寫對方機器的機器名,而且這個機器
    名必須是DNS服務器或者/etc/hosts里面存在的機器,否則不能共享,用起
    來有點繁瑣,不過可能是出于安全方面的考慮,呵呵。如果修改完了這個文件
    退出即可,如果是ee的話按ESC退出,如果是vi的話:wq退出。如果對其進行
    修改之后需要重啟NFS server可以使用下列命令來完成
    代碼:

    kill -s HUP `cat /var/run/mountd.pid`
     

    我之前說了這么一大堆東西到底做什么用呢?下面我來解釋一下這臺中央服
    務器裝NFS有什么用。在整個開發小組都是用FreeBSD的情況下,這樣做
    非常具有意義,主要是在裝機上,大家都知道無論是windows還是FreeBSD
    還是linux,重新裝一臺機器都是一件極度痛苦的事情。因為要首先要對系
    統進行升級,之后還有很多常用軟件需要安裝。雖然FreeBSD上面有ports
    系統,但是恐怕大家都有感覺,我們常規裝一臺FreeBSD的機器,需要在
    裝好了之后升級源代碼,然后重新編譯內核,編譯系統,慢點的機器
    make world一次等到花兒都謝了。還有一個問題就是,很多人其實不太喜
    歡在工作的機器上裝ports和src的,因為這些東西很占地方,一套src差不
    多200多MB,一套ports也要300多MB。如果編譯完了不make clean的話src會
    增加到350M左右,ports就更多了。但是如果make clean的話,再升級系統
    或者應用軟件的時候你又郁悶了,因為make這個工具有個特點,如果代碼
    部分發生改變的時候,它只會編譯發生改變的代碼,而沒發生改變的代碼
    就不會編譯,所以你要是上次編譯完了make clean了,再編譯就會從頭開
    始,如果不做make clean,再編譯一次的速度就很快了。有些人會問為什
    么不用FreeBSD提供的binary級的升級以及使用ports的package?原因是
    這樣的,對于系統的binary升級補丁,一方面提供的頻率比較低,而且我
    還不知道怎么下載安裝。而且有的時候更新少的時候我不是太想升級。對
    于ports呢,我本人其實不太愿意用package,因為官方生成的package更新
    的速度很慢,這點很郁悶。自己生成package呢,總有各種各樣的問題,
    雖然現在ports可以make package-recusive 但是,我弄了幾次都沒弄出
    一套完成的package出來。還是直接用ports來make install最方便,但是
    如果這些都在每臺機器上重新編譯的話,無疑是很痛苦的,如果是一臺快
    機器的話,還可以,可能一天就能完了,如果是一臺慢的機器弄不好3、4
    天…………實在是太煩人了。這個問題怎么解決才好呢?我們怎么才能在
    1個小時之內裝出一個我們能夠方便使用的,帶有我們所需的應用軟件的
    全新的機器呢?windows、linux恐怕都不太可能,我分析一下為什么這么
    說。從windows來講,我想各位裝的時候首先也都會升級系統,windows
    雖然有service pack可用,還有從windows update上下載單獨的binary
    補丁,其實也是比較慢的。裝一次windows 2000的sp4也很慢,再去
    windows update升級零散的補丁少說也得快1個小時。再加上裝亂七八糟
    的軟件,恐怕也得裝個N小時。而linux呢,升級只升級內核,速度很快,
    裝軟件有弄好的rpm,也很快但是還是有幾個問題,通常的linux本身裝起
    來很慢,這個大家不能否認。裝一下Red hat現在是個非常慢的事,沒個
    幾個小時裝不完,而我裝一套FreeBSD的基本系統不超過15分鐘,這一點
    就沒法比了。而且linux升級只升級內核的話,只能修正內核的問題,如
    果是附帶的應用有問題,例如BIND,ftp,apache之類的東西,還需要單
    獨找補丁包升級,也要累死。而且如果需要定制應用的話,rpm也得重新
    編譯才行,用binary就要放棄定制的靈活性。所以要是裝一套合用的linux
    也是要很長時間的。我所說的這些大家恐怕都有體會。但是FreeBSD上是
    可以解決這個問題的,這個恐怕是源于FreeBSD非常合理的系統設計,
    ports和src的系統都是非常靈活而且方便的系統,這給我們快速安裝創造
    了條件,只要結合了NFS就可以實現。

    我現在從安裝一臺全新的FreeBSD來講解一下怎么來實現快速安裝。
    我們之前的那臺服務器現在就派上用場了。那臺中央服務器上可以安裝
    src和ports,我們用NFS server把它的/usr export出來,而在新裝的這臺
    機器上選擇不安裝src和ports,在系統安裝完畢之后,需要在/usr中建立
    src和ports的目錄,然后我們通過下列命令來把中央服務器上的src和ports
    掛到我們的機器上,我們假設中央服務器ip地址為192.168.0.1,而新裝
    的機器的ip地址為192.168.0.10,我們已經在中央服務器上向這個地址
    export了它的/usr(方法參考前面提到的)
    代碼:

    mount_nfs 192.168.0.1:/usr/src /usr/src
    mount_nfs 192.168.0.1:/usr/ports /usr/ports
     

    這樣一來,我們新裝的機器上就有了src和ports了。中央服務器在安裝
    的時候也會make kernel和make world的,如果客戶機的硬件和希望的配
    置跟中央服務器不太一樣,只要在上面再寫個新的內核配置文件,再用
    這個配置文件編譯一個適合客戶機的內核就可以了,而make world對于那
    臺機器都是一樣的,所以我們在客戶機上直接make installworld就完了。
    把漫長的make world過程都給省了。裝應用軟件也是一樣,只要有一臺
    機器曾經用這套ports make install裝過這個軟件,并且沒有make clean
    的話,其他的機器就可以跑到這個目錄里面make reinstall一下就行了。
    我解釋一下為什么要make reinstall,而不是make install,這是因為
    ports有個特點,它會在這個應用裝過以后保留下一個install_done的標
    記,你在每個裝完的應用目錄里面的work目錄中能看到這個名為
    .install_done.xxxxxx的文件,后面的xxxxxx是這個應用的名字。如果
    你換了臺機器使用這個ports的話,直接make install的時候會發現并沒
    有執行任何的安裝就結束了,就是因為make檢測到了這個文件,就不會
    再執行一次安裝了。沒關系,ports還為我們準備了解決的辦法,這就是
    make reinstall,簡單吧。這里還有個問題,我覺得ports解決的很好,
    因為通常很多軟件涉及到很多依賴軟件,如果這臺客戶機已經安裝了一些
    依賴軟件,我在安裝一個依賴這些軟件的新軟件的時候,這些已經安裝的
    依賴軟件是不是也會重新來一遍呢?這不會很慢么?其實不會的,這涉及
    到多個系統共享一個ports時候多個系統安裝差異的問題,不過這個考慮
    其實是多余的了,因為FreeBSD在安裝上一個應用軟件之后會在/var/db/pkg
    中保留一個這個軟件的安裝記錄,所以你在安裝一個依賴了很多軟件的新
    軟件的時候,它會檢測你裝了什么,沒裝什么,已經裝過了的就不會再
    安裝一次了。通過這樣的方法,我們重新安裝一個新的開發環境就變得
    異常的快速,而且可以靈活的定制。為什么會說靈活定制呢?你這裝得
    不也是binary么?是這樣的,以gnome2為例子,gnome2實際上是由一系
    列的小軟件組成的,這個大家應該都清楚,如果我想定制其中一個小軟
    件只要修改那個軟件的編譯參數重新編譯一遍就可以了,其他的部分依
    然不會受到影響。編譯單個的小軟件無論對于什么機器來講都是很快的
    所以對于安裝速度的影響,就很小了。這種方法無論對于批量裝機,還
    是單獨定制都是個很爽的辦法。但是這個方法我為什么要放在這樣一個
    標題下講,是因為這個方法需要一臺單獨的機器來做中央服務器,這對
    于大多數的個人用戶是不現實,也沒有意義的。但是卻對于有多個人的
    開發團隊來講,一臺機器是個小問題,能夠快速的安裝出來一臺開發環
    境能夠大幅度的提高效率,具有的意義就非同一般了。而且這個方法也
    只需要這臺中央服務器定期更新它的src和ports,定期編譯,客戶機就
    可以跟著一起升級了,省得大家重復勞動了。提出這個方案是源于我們
    這個團隊的開發環境都是使用的FreeBSD,因為我們是進行J2EE項目開發
    的,在FreeBSD上開發的時候我們需要編譯jdk、Xfree、gnome2、
    eclipse等等軟件,這都是裝起來很慢的軟件,每臺機器都單獨安裝的
    話,大家都得累死。使用這個方法的話,實在是爽的不得了。差不多
    一個小時左右,一臺合用的機器就完成了。補充一個需要注意就是大家
    如果在共享一個ports的時候使用portupgrade時候需要小心,一定要
    加上-wW參數,否則把共享的ports內容給清光了,會有人很郁悶的……

    最后我需要感謝黃冬教給我這個方法。其實這個方法是他們以前經常
    使用的方法,只不過不是用在開發環境的建立上,是他在門戶網站的時
    候他們用來批量安裝web服務器的方法,所以對于所有門戶網站的管理員
    來講這也是一個非常有用的辦法。因為據我所知,國內幾個用FreeBSD
    的門戶網站,都是有大批量的FreeBSD服務器集群來進行服務的,裝機
    就成為一個工作量很大的工作,如果采用這種方法,大家裝機的時候也
    能夠輕松不少了。而我個人的感覺其實在團隊開發環境的建立上,使用
    這個方法其實比服務器的批量裝機還更有意義,因為服務器通常裝的
    那些軟件還都比較小,而裝一臺開發用的機器要裝得大軟件就多的很
    了,所以我個人認為這對于開發環境來講具有的意義更大。我把這個
    方法貢獻出來,已經很熟悉這個方法的朋友不要罵我,我只是覺得雖
    然這個方法用的已經很普遍而且其實非常的簡單,但是以前并沒有人
    把它寫出來給大家共享一下,另外因為其在使用上有一些小小的技巧
    需要注意,所以小弟我給大家獻丑了。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>