portsの使い方(Web貼り付け)


portsの使い方(ttp://iris.homeunix.net/yayoi/freebsd/basic/ports.asp) Last Update: 2005/01/04 35407 th Visitor Menu

   * Top
   * History
   * Infomation
   * Diary
   * Program
   * Icon
   * FreeBSD
   * FreeTalk
   * Profile
   * BBS
   * PaintBBS
   * Link
   * Property

portsでインストール

FreeBSDではportsという、アプリケーションのソースコードを取得し、FreeBSD用のパッチを当て、コンパイルしてインストールするといった作業を自動的にやってくれる便利なシステムがあります。 前述したpackageはportsから作成されているものなので、packageよりもportsの方が柔軟性があると言えるでしょう。 またportsは全てのアプリケーションをインストールするPorts Collectionとして用意されているので、OSをインストールした時にPorts Collectionをインストールしていれば、portsとして用意されている全てのアプリケーションがインストール可能となっています。

portsの利点は、ports自体はインストールするために必要な情報ファイルで形成されているため、アプリケーションのバージョンが上がってもすぐにFreeBSD用として使用できるようになる事と、コンパイル時に自分でオプションを指定してやるなど柔軟な対応が可能な事、著作権などの関係から packageに入ってないアプリケーションがインストールできること、自分でコンパイルするので自分の環境に最適化されたバイナリにできる、等です。

無論、portsで入れたいソフトを入れた時に必要なライブラリ等(依存関係)があれば、自動的にportsで必要なアプリケーションもインストールしてくれるようになっています。

逆に欠点はソースを取得する時間とコンパイルする時間がかかるので、アプリケーションが使えるようになるまでに時間がかかる事と、たまにエラーを起こすなどしてインストールが出来ない事があると言った所でしょうか。

なお、portsは日夜更新され続けているので、最新のportsと自分のHDDの中に入っているportsを同期して、常に最新に保つ事が簡単な作業で可能です。portsを最新にするにはcvsupを使いますがここでは述べません。 portsを使ってみる

では実際にportsを使ってみましょう。 portsを使うといっても、packageみたいにファイルを取ってきてコマンドを使うのとは違い、portsが置いてあるディレクトリでコマンドを実行するということになります。 portsは/usr/portsの中にカテゴリ別であります。

cd /usr/ports

ls

としてみると、packageと同じようにarchivers、astroのようにカテゴリ別でディレクトリがあり、さらにその中を見ると各アプリケーションのディレクトリがあります。 これがportsです。

例えば、日本語対応のlessはjapaneseの中のlessにあったりと、比較的簡単に探すことができます。 インストールしたいアプリケーションのナメがわかっていて、portsの場所を探したい時にはwhereisコマンドを活用してください。

whereis openssh openssh: /usr/ports/security/openssh

の様に出ます。 これは、opensshというソフトが/usr/ports/security/opensshに見つかったということを示しています。

lsで全部を表示しきれない時は、

ls | less

などとしてやれば良いでしょう。 例えば、/usr/ports/japanese/lessの中を見てやると、Makefileなどのportsの構成ファイルがあるのがわかると思います。 また、filesディレクトリの中にはアプリケーションをFreeBSDでより良く使うためにソースコードにパッチを当てる、パッチファイルが含まれています。

以下で述べるportsの使い方は、全てこのようなMakefileがあるディレクトリで行う事を前提として書いています。

では使い方を説明したいと思います。 portsでアプリケーションをインストールしてみましょう。 今回は例として、ja-less(/usr/ports/less)をインストールしてみることにします。 lessはビューアみたいなものですが日本語が通りません。 ja-lessは日本語が通るlessということで、日本語マニュアルを見る等に幅広く使えます。

まず、ja-lessのあるディレクトリに移動します。

cd /usr/ports/japanese/less

ここでrootになってmake configureとしてください。

su

# make configure

ソースを取得してしばらくするとjlessがコンパイルするための準備が出来た(configureされた)ことになります。 このときlessの実行にはautoconf2、m4が必要なので、先にこれらをインストールしてからconfigureします。その後はmakeと打ってみてください。

# make

すると、しばらくするとコンパイルが開始されます。

コンパイルが終わると、またプロンプトに戻ってきます。 このとき、すぐ上でエラーっぽい文字が発生していなければOKです。

コンパイルが終わったらインストールしてみましょう。

# make install

としてインストールします。

===> Registering installation for ja-less+iso-358.254_1

#

と出ればインストール成功です。 これでインストール自体は完了ですが、インストール中に作った作業ファイルがまだ残っています。 こいつを掃除してやりましょう。

# make clean

これでインストールは終わりです。 ja-lessのコマンドはjlessです。 が、jlessと入力してもjlessが起動しないと思います。 これはインストールした直後なので、まだプログラムが認識されてないためです。 そこで、

# rehash

と打ってやって、認識させましょう。 これで次にjlessと打てばちゃんとjlessが実行され、ファイル名を入れてくださいと言うはずです。 詳しい説明とか楽なやり方とか

portsに関するコマンドはmakeとmake install、make cleanの3つを説明しましたが他にも色々あります。

インストール過程ではmakeのオプションとしてfetch、checksum、depends、extract、patch、configure、build、installの順序で実行されるようになっています。 各オプションは以下のようになっています。

make fetch FTPなどのサイトからソースコードをダウンロードする make checksum ダウンロードしたファイルが正常かどうか確かめる make depands このportsに依存関係(インストールするために必要なports)があるportsをインストールする make extract ソースコードを展開する make patch 展開したソースコードにFreeBSD用のパッチを当てる make configure コンパイルするオプションなどを指定してコンパイルするための準備を整える(configure) make build コンパイルする make install はコンパイルしたバイナリをOSにインストールする make package はコンパイルしたバイナリをpackageにする

また、これらのコマンドを実行するとそれよりも前にやるべきことも自動的に実行されます。 例えば、make checksumを実行すると自動的にその前にやるべきmake fetchの作業は自動的に実行されます。

つまり楽をしたい場合は、いきなりmake installと打ってやれば全部の作業を一度にやってくれるわけです。 ちなみにmakeを打った時には、make buildが終わる所までが実行されるようになっています。

そのほかのオプションとしては、必要なファイルを表示するmake fetch-list、インストール中に作成した作業ファイルを削除するmake clean、そしてダウンロードしたソースコード(/usr/ports/distfileにDLされる)を削除するmake distcleanがあります。

私はどうしているかというと、普段は

# make install clean

と打ってインストールが終わった後にゴミを消す作業を一度に行っていますが、portsに含まれていないパッチを当てたりしたい場合は個別の箇所で止めたりしています。

インストール後のゴミを綺麗サッパリしたい場合は、

# make install clean distclean

としてあげましょう。

また、make cleanを色々な所で忘れてしまって作業ファイルを一度に全部消したいという時には、/usr/portsで、

# make clean

としてやれば、全てのportsの作業ファイルが消えます。 portsからアンインストール

当然インストールできればアンインストールもできます。 portsはpackageと同様にpkg_deleteも扱えますが、専用のコマンドも存在します。

# make deinstall

がアンインストールコマンドです。 これをインストールしたportsのディレクトリで実行してやればそのportsからインストールされたアプリケーションが削除されます。 ただ、バージョンを確認してから消したい時などはpkg_infoで確認してやる必要があると思います。 この辺りの作業は全てpackageと同様です。何故ならpackageはportsから作られているからです。

また、削除したアプリケーションを再インストールしたい時には、

# make reinstall

を実行することで行うことができます。

またOS標準のports関係のコマンドを強化するportupgradeというアプリケーションも存在します。 これを使えばportsのバージョン管理、インストール、アップグレードといった作業を簡潔に行うことが可能です。