分享到plurk 分享到twitter 分享到facebook

版本 b4b50d88d06cc2dbfbd3143a8b8cd65fe0989d6b

FreeBSD

Changes from b4b50d88d06cc2dbfbd3143a8b8cd65fe0989d6b to current

FreeBSD 為一個 [Unix-Like ]() 作業系統,由 [BSD ]() 衍生出來的一個版本,受到不少人喜愛。後來由 FreeBSD 延伸出其他發行版,如 [PC-BSD ](http://www.pcbsd.org/)、Desktop-BSD、[FreeNAS ](http://www.freenas.org/) 等。


安裝
====
舊版的 FreeBSD 對電腦硬體支援較少,但現在常見的硬體驅動都已支援,也可以在虛擬機器上安裝。

以下安裝步驟以 FreeBSD 9.0 為主:

 1. 由光碟開機,出現開機選單時選擇第一個選項「1. Boot [Enter]」。
 1. 歡迎畫面可以選擇要安裝、使用 Shell 或是使用 LiveCD 方式操作。安裝作業系統選擇「Install」即可。
 1. 選擇鍵盤對應,一般情況不需要更改。    
    之後的安裝介面均使用鍵盤操作,Tab 切換按鈕選擇、空白鍵核取選項、Enter 表示按下按鈕或下一個步驟。
 1. 設定網域名稱,沒有則留空。
 1. Distribution Select 選單中,可選擇欲安裝的項目:
    - doc: 手冊、說明文件
    - games: 遊戲,通常 server 不需要安裝。
    - lib32: 給 32bit 所使用的 binary。
    - ports: Ports collection 為 FreeBSD 的套件庫,之後搜尋、安裝套件較簡單方便。Ports colection 會使用相當大的硬碟空間,可視情況安裝,或是之後需要再由 syssintall 安裝。
    - src: FreeBSD kernel srouce code,若有需要自行編譯核心可安裝。
      * 若沒有安裝 src 且使用 sysinstall 也無法安裝可以參考 http://forums.freebsd.org/showthread.php?t=29172 使用 svn checkout

 1. Partition 選單:做磁碟分割定掛載分割區。
 1. 安裝系統至硬碟上。
 1. 設定 root 密碼。
 1. 網路設定。
 1. 設定系統時間。
 1. 啟動系統服務。
 1. 選擇是否需要使用匯出系統錯誤資訊。
 1. 建立新使用者,在此可以新增一個非 root 帳號。注意:在 FreeBSD 系統中,使用者必須在 wheel 群組當中,才能夠使用 su 切換身份至 root,管理員帳號應該在「Invite into another group」中輸入「wheel」。
 1. Final configuration 選單中,可讓使用者在重新開機之前做最後的調整。
 1. 移除光碟片,重新開機。



套件管理
========
FreeBSD 上的套件可以透過 packages 以及 ports 安裝。packages 可以輕鬆的從網路下載套件執行檔、設定、文件,ports 則是下載 source code 依照需求編譯,需要客製化軟體以及安裝較新的版本軟體可透過 ports 安裝。


使用 packages 安裝套件
----------------------
packages 提供 pkg_add、pkg_delete、pkg_info 等指令讓使用者可以管理系統上的套件庫。

FreeBSD 官方網站以及其他使用者提供不少可直接安裝的套件,下載後可以直接用 pkg_add 安裝:

.. code-block:: pretty-print

    $ fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/games/sl-3.03.tbz
    sl-3.03.tbz                                   100% of 7670  B   19 kBps
    $ pkg_add sl-3.03.tbz
    $ rehash  # sh 重新搜尋可執行指令
    $ sl
-----------------------------


pkg_add 提供 ``-r`` 參數,讓 pkg_add 自動從網路套件列表搜尋符合的套件下載安裝,並自動解決相依性問題:

.. code-block:: pretty-print

    $ pkg_add -r bash
    Fetching bash.tbz... Done.   
    Fetching libiconv-1.13.1_1.tbz... Done.  # 因相依性而自動下載、安裝的套件
    Fetching gettext-0.18.1.1.tbz... Done.
    $ rehash
    $ bash 
-----------------------------


使用 ports 安裝套件
-------------------
FreeBSD 的 ports 系統整理了成千上萬的套件,可以輕鬆的透過搜尋找到需要的套件,並客製化套件設定與安裝。


搜尋
~~~~

先切換至 /usr/ports 目錄下,接著使用 make search 搜尋欲安裝之套件:

.. code-block:: pretty-print

    $ cd /usr/ports
    $ make search name=git
----------------------------

若 ports 中有符合的項目,則會列出以下資訊:

- Port:套件名稱
- Path:套件所在路徑
- Info:套件簡述
- Maint:套件維護人員
- B-deps、R-deps:相依性
- WWW:套件網站


設定與安裝
~~~~~~~~~~

安裝套件,只需要切換到套件所在路徑,設定 (config)、編譯 (make)、安裝 (install) 並清除 (clean) 暫存檔。

.. code-block:: pretty-print

    $ cd /usr/ports/devel/git   # 切換至 git 所在目錄
    $ make config               # 套件設定
----------------------------

make config 可看到許多能客製化的項目,使用 tab、空白鍵來移動選取項目,設定完畢後,系統會自動編譯所需要的套件來滿足相依性。

接下來就可以輸入 make 進行編譯,系統會自動從網路下載所需的原始碼編譯。編譯完成後,輸入 make install 安裝,最後再 make clean 清除不再使用的檔案。

懶人筆記:若只要預設值,輸入「make install clean」即可。



套件管理
~~~~~~~~
FreeBSD 套件管理指令均以「pkg_」開頭,如:pkg_info、pkg_delete、pkg_create 等。


pkg_info
^^^^^^^^

pkg_info 用於檢視套件資訊:

.. code-block:: pretty-print

    $ pkg_info
    johnroyer@bsd:~$ pkg_info
    ImageMagick-nox11-6.7.9.4 Image processing tools
    apache22-2.2.23_2   Version 2.2.x of Apache web server with prefork MPM.
    autoconf-2.69       Automatically configure source code on many Un*x platforms
    automake-1.12.4     GNU Standards-compliant Makefile generator
    bash-4.2.37         The GNU Project's Bourne Again SHell
    ....
----------------------------

若在後方加上套件名稱,則會顯示該套件的詳細資訊:

.. code-block:: pretty-print

    $  pkg_info bash-4.2.37
    Information for bash-4.2.37:
    
    Comment:
    The GNU Project's Bourne Again SHell
    
    Required by:
    bash-completion-2.0,1
---------------------------------

注意:套件名稱必須是完整的名稱,「bash-4.2.37」而不是「bash」。

使用 ``-L`` 可以顯示該套件安裝了哪些檔案:

.. code-block:: pretty-print

    $  pkg_info -L bash-4.2.37
    Information for bash-4.2.37:
    
    Files:
    /usr/local/man/man1/bash.1.gz
    /usr/local/man/man1/bashbug.1.gz
    /usr/local/bin/bash
    /usr/local/bin/rbash
    /usr/local/bin/bashbug
    .......
---------------------------------

使用 ``-W`` 可以查詢該檔案被是屬於哪一個套件的:

.. code-block:: pretty-print

    $ pkg_info -W /usr/local/bin/bash
    /usr/local/bin/bash was installed by package bash-4.2.37
---------------------------------




Reference
=========
- [FreeBSD.org ](http://www.freebsd.org/)
- [FreeBSD 使用手冊 ](http://www.freebsd.org/doc/zh_TW/books/handbook/index.html)