4.2. 使用 Ports Collection

下面的章節提供了一些基本的指引,指導使用 ports collection 來從系統安裝或移除程式。

4.2.1. 安裝 Ports

當提到 Ports collection 第一個要說明的就是何謂 ``skeleton''。 簡而言之,一個 port skeleton 是讓一個程式在 FreeBSD 上簡潔地編譯並安裝所需的檔案的最小組合,每個 port skeleton 包含:

現在已經有足夠的背景資訊來了解 ports collection 用來做什麼, 準備好要安裝第一個 port 了。有兩個辦法可以完成這件事, 每一個都會在後面解釋。

然而在我們進入前,必須選擇一個 port 來安裝。 有一些辦法可以達成這件事,最簡單的是 FreeBSD 網站上的 ports 名單。可以把列在那裡的 ports 瀏覽一下或用站上的搜尋功能。 每個 port 也包括一份描述以便在決定安裝前可以稍微看看。

另一個方法是用 whereis 這個命令。 要用 whereis 只要在提式符號後打 ``whereis <要安裝的程式>'', 如果系統裡有找到它,便會告訴你它在哪裡,就像:

    # whereis xchat
    xchat: /usr/ports/irc/xchat
    #

這告訴我們 xchat (一個 irc client) 可以在目錄 /usr/ports/irc/xchat 找到。

尚有另一個方法找尋特定的 port 就是用 ports collection 內建的搜尋機制。要用這個搜尋的特色必須在目錄 /usr/ports 下。一旦在這個目錄,執行 make search key=program-name, ``program-name'' 是要找的程式的名稱。例如, 如果要找 xchat:

    # cd /usr/ports
    # make search key=xchat
    Port:   xchat-1.3.8
    Path:   /usr/ports/irc/xchat
    Info:   An X11 IRC client using the GTK+ toolkit, and optionally, GNOME
    Maint:  jim@FreeBSD.org
    Index:  irc
    B-deps: XFree86-3.3.5 bzip2-0.9.5d gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gmake-3.77 gtk-1.2.6
    		imlib-1.9.8 jpeg-6b png-1.0.3 tiff-3.5.1
    R-deps: XFree86-3.3.5 gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gtk-1.2.6 imlib-1.9.8 jpeg-6b
    		png-1.0.3 tiff-3.5.1

這部份輸出要特別注意的是 ``Path:'' 那行, 因為那告訴你去哪找。其它提供的資訊對於安裝 port 並沒有直接地需要, 所以這裡不會含蓋那部份。

Note: 必須是 root 才能安裝 port。

現在你已經找到想要安裝的 port,準備好真正的安裝了。

4.2.1.1. 從光碟安裝 port

如同你從標題的猜測,這個章節所敘述的所有事物都假設已經有一套 FreeBSD 光碟。如果沒有可以從 FreeBSD Mall 訂購。

假設 FreeBSD 光碟已經放入光碟機且掛在 /cdrom 上(掛上點必須/cdrom), 那就準備好要安裝 port 了。開始前先把目錄換到要安裝的 port 所在的目錄:

    # cd /usr/ports/irc/xchat

一但進入了 xchat 的目錄,將會看到 port skeleton。 下一個步驟就是編譯(也叫做建立)該 port。只要在提式符號下鍵入 make 就完成了。一旦做完這些應該就可看到如下畫面:

    # make
    >> xchat-1.3.8.tar.bz2 doesn't seem to exist on this system.
    >> Attempting to fetch from file:/cdrom/ports/distfiles/.
    ===>  Extracting for xchat-1.3.8
    >> Checksum OK for xchat-1.3.8.tar.bz2.
    ===>   xchat-1.3.8 depends on executable: bzip2 - found
    ===>   xchat-1.3.8 depends on executable: gmake - found
    ===>   xchat-1.3.8 depends on shared library: gtk12.2 - found
    ===>   xchat-1.3.8 depends on shared library: Imlib.5 - found
    ===>   xchat-1.3.8 depends on shared library: X11.6 - found
    ===>  Patching for xchat-1.3.8
    ===>  Applying FreeBSD patches for xchat-1.3.8
    ===>  Configuring for xchat-1.3.8
    ...
    [剪去了 configure 的輸出]
    ...
    ===>  Building for xchat-1.3.8
    ...
    [剪去了編譯過程]
    ...
    #

注意一旦編譯完成就會回到提示符號。下一步就是安裝 port。 要安裝它只需在命令 make 後加上 install

    # make install
    ===>  Installing for xchat-1.3.8
    ===>   xchat-1.3.8 depends on shared library: gtk12.2 - found
    ===>   xchat-1.3.8 depends on shared library: Imlib.5 - found
    ===>   xchat-1.3.8 depends on shared library: X11.6 - found
    ...
    [剪以了去安裝的例行步驟]
    ...
    ===>   Generating temporary packing list
    ===>   Installing xchat docs in /usr/X11R6/share/doc/xchat
    ===>   Registering installation for xchat-1.3.8
    #

一旦回到提示符號下應該就可以執行剛安裝完的應用程式。

Note: 只要執行 make install 代替 makemake install 這兩個分開的步驟就可以省下額外的步驟。

Note: 請注意有些 port 的授權並不允許 port 被包含在光碟裡。 這有許多種原因,包括下載前需要填註冊表格的,假如不允許再散佈的等等。 如果希望安裝光碟裡沒有的 port,必須在線上才能做到(看下一章)。

4.2.1.2. 從網路安裝 port

如同上一節,這一節假設已經有個能用的網路連線。 如果沒有就必須做光碟安裝

從網路安裝 port 的做法跟從光碟安裝沒有兩樣。 兩者間唯一不同的就是程式的程式碼是從網路下載而非從光碟取得。

有關的步驟是相同的:

    # make install
    >> xchat-1.3.8.tar.bz2 doesn't seem to exist on this system.
    >> Attempting to fetch from http://xchat.org/files/v1.3/.
    Receiving xchat-1.3.8.tar.bz2 (305543 bytes): 100%
    305543 bytes transferred in 2.9 seconds  (102.81 Kbytes/s)
    ===>  Extracting for xchat-1.3.8
    >> Checksum OK for xchat-1.3.8.tar.bz2.
    ===>   xchat-1.3.8 depends on executable: bzip2 - found
    ===>   xchat-1.3.8 depends on executable: gmake - found
    ===>   xchat-1.3.8 depends on shared library: gtk12.2 - found
    ===>   xchat-1.3.8 depends on shared library: Imlib.5 - found
    ===>   xchat-1.3.8 depends on shared library: X11.6 - found
    ===>  Patching for xchat-1.3.8
    ===>  Applying FreeBSD patches for xchat-1.3.8
    ===>  Configuring for xchat-1.3.8
    ...
    [剪去了 configure 的輸出]
    ...
    ===>  Building for xchat-1.3.8
    ...
    [剪去了編譯過程]
    ...
    ===>  Installing for xchat-1.3.8
    ===>   xchat-1.3.8 depends on shared library: gtk12.2 - found
    ===>   xchat-1.3.8 depends on shared library: Imlib.5 - found
    ===>   xchat-1.3.8 depends on shared library: X11.6 - found
    ...
    [剪去了去安裝的例行步驟]
    ...
    ===>   Generating temporary packing list
    ===>   Installing xchat docs in /usr/X11R6/share/doc/xchat
    ===>   Registering installation for xchat-1.3.8
    #

如你所見,唯一的不同是告訴你去哪裡取得 port 那行。

前面做的是有關安裝 port 到系統上。 在這節將會學到如何從系統上移除一個 port。

4.2.2. 移除已安裝的 Port

現在你已經知道如何安裝 port,那很可能會很好奇要如何移除它們, 只為了預防安裝了一個 port 過沒多久才決定說裝錯了。 下面幾段將確實地含蓋這些。

現在我們將移除先前的例子(對那些沒在注意的人來多就是 xchat 啦)。 如同安裝 port,第一件要做的就是切換到 port 的目錄,如果有記得就是 /usr/ports/irc/xchat。 切換完目錄後就準備好可以反安裝 xchat 了。用命令 make deinstall 可以完成(有道裡吧?):

    # cd /usr/ports/irc/xchat
    # make deinstall
    ===>  Deinstalling for xchat-1.3.8
    #

這樣就夠容易了。現在你已經可以應付從系統裡移除 xchat 了。 如果想要再安裝它,可以在目錄 /usr/ports/irc/xchat 下執行 make reinstall 來完成。