--- [管理番号 31] (最終更新 2003/11/17 02:28:48) Q. Ports というお気楽インストール法があると聞きましたが、どういうもの ですか。 A. インターネット上で配布されている UNIX用 ソフトウェアはバイナリでは なく ソースコードで配布されるのが一般的です。 各 OS 毎にコンパイルして利用しますが 場合によっては各 OS 毎の修正が必 要なときもあります。 Ports とは FreeBSD の上で誰でも簡単にすぐにコンパイルできるように修正 分を集めた物です。ports を手にいれて make コマンドを実行するだけでソー スを入手し FreeBSD に合わせた修正をしコンパイルしてくれます。 詳しい説明は や、FreeBSD handbook の解説 また、ports(7) manpage を御覧下さい。 また、packages としてインストールするだけのコンパイル済みバイナリも配 布されています。これについては [管理番号 32] を御覧下さい。 --- [管理番号 32] (最終更新 2000/06/25 02:29:57) Q. packages ってなに? A. FreeBSD では各種ソフトウェアを簡単にインストールできるように ports という仕組みがあります。packages はそれを元に作成して配布されている make 済みのバイナリキットで、pkg_add コマンドを用いて簡単にインストー ルできます。 詳しくは pkg_add(1)、pkg_delete(1)、pkg_info(1) 等の man を見て下さい。 また、ports については [管理番号: 31] を御覧下さい。 --- [管理番号 37] (最終更新 2001/10/25 21:20:55) Q. packages のように、バイナリ形式で公開されているコマンドを実行しようと したら、 ld.so failed: Can't find shared library "lib*.so.x.y" とか、 /usr/libexec/ld-elf.so.1: Shared object "lib*.so.x" not found と言われて動きません。 A. 違うバージョンの FreeBSD 用に作られた、ダイナミックリンクされたバイナリ を実行しようとした場合に表示されるエラーメッセージです。1番目のエラーは a.out(5) 形式、2番目のエラーは elf(5) 形式のバイナリを実行しようとした 場合です。 対策方法はもちろん FreeBSD のバージョンに合ったものをインストール仕直す のが一番良いのですが、なんらかの事情で OS より古いバイナリを実行したい 場合は、FreeBSD の配布ファイルから compat{1x,20,21,22,3x,4x} など、互換 ライブラリを導入すれば解決できます。どの互換ライブラリをインストールす れば良いか分からなければ、配布メディアが /cdrom/ にあるとして、 # fgrep libc.so.3 /cdrom/compat*/*.mtree とします。ここでは例として libc.so.3 を探すとしますが、このコマンドの 実行結果次のように表示されます。 /cdrom/compat22/compat22.mtree: libc.so.3.1 size=427501 \ /cdrom/compat3x/compat3x.mtree: libc.so.3 size=521297 \ これで、compat3x が必要なことが分かりましたから、次のコマンドでシステム へ追加インストールします。 # cd /cdrom/compat3x # sh install.sh そのほか目安として、新しい shared library の方が大きい数字を用いていま す。また、packages の依存関係を無視して強制的に pkg_add(1) したときにも 同様のことが起り得ます。 一方、OS より新しいバイナリである場合には、そのバイナリを使用しないのが 賢明です。自分が使っている FreeBSD 用のバイナリを入手するか、ports を使 うなどして自分でコンパイルし直しましょう。 「shared library だけ新しい物を持って来る」 「今 持っている shared library を copy して番号だけをごまかす」 など無理なことをするのは、コマンドの誤動作を引き起こし、非常に危険です から絶対にやめましょう。 --- [管理番号 137] (最終更新 2002/02/14 00:39:59) Q. packagesのソフトがちゃんと動かないのですが? A. packagesのソフトの概要はつぎのようにして見ることができます。 # pkg_info pkgname.tgz これは /var/db/pkg/pkgname/+DESC に登録されるものです。portsでは /usr/ports/category/pkgname/pkg-descr が同じものです。内容だけでなく、 インストールについての注意が書いてあるときもあるので確認してみましょう。 --- [管理番号 153] (最終更新 2001/08/12 05:25:06) Q. ports/packages から apache をインストールしましたが、CGIの使いかたが わかりません。 A. こちらを見てみてください。 日本語のページ --- [管理番号 443] (最終更新 2002/01/27 00:09:32) Q. ports をインストールしようとして make を実行すると、 fetch: hogehoge-1.1.tar.gz: ...... >> Couldn't fetch it - please try to retrieve this >> port manually into /usr/ports/distfiles/ and try agein. となり、インストールできません。 A. Makefile の中に書かれているソースファイルを、ネットワークを使ってダウ ンロードしようとしたが失敗した、というエラーメッセージです。この原因は 主に、ファイアウォール等が存在するか、ファイルが指定された URL に無い 事が考えられます。 A1. ファイアウォール あなたのマシンがファイアウォール (firewall) の中にあるために、外部へ のアクセスに特定の制限が設けられている場合があります。その制限はファ イアウォールの構成と設定などにより異なりますが、fetch(1) の設定を変 えることで回避できるかもしれません。注意点として FreeBSD 4.1-RELEASE から、fetch(1) や pkg_add(1) が fetch(3) ベースに書き直されています ので、それまでの ftpio(3) ベースと仕様が異なる点があることです。 1. passive モードで FTP する時 # env FTP_PASSIVE_MODE=ON make 2. HTTP proxy サーバを利用する時 # env HTTP_PROXY="http://hostname[:port]" make (libfetch ベース) # env HTTP_PROXY="hostname[:port]" make (libftpio ベース) FTP_PROXY が未設定で HTTP_PROXY が設定されていると、`ftp://...' と いう URL でも HTTP proxy サーバ経由でダウンロードします。 3. FTP proxy サーバを利用する時 # env FTP_PROXY="ftp://hostname[:port]" make (libfetch ベース) # env FTP_PROXY="hostname[:port]" make (libftpio ベース) hostname[:port] の部分は、例えば proxy.foo.bar.co.jp:8080 などと指定 します。FTP proxy と HTTP proxy を併用する場合は、両方の環境変数を設 定してあげます。もっと凝った設定が必要なら、詳細はそれぞれの man ペー ジを読んでください。 上記のように実行してうまくいったら、~/.cshrc や ~/.profile に環境変 数の設定を行なうか、login.conf(5) に設定してやればシステム全体に効果 があります。 A2. ファイルが指定された URL に無い あなたの使っている ports のバージョンが古いため、既に配布ファイルが 置いてないのかもしれません。例えば、ports は hogehoge-1.1.tar.gz を ダウンロードしようとしたけれど、指定された場所には最新バージョンの hogehoge-1.2.tar.gz しか置いてない、ということが考えられます。 そのときはどこかからファイルを取ってきて、/usr/ports/distfiles/ に 置き、改めて make を行なってください。ファイルを LYCOS FTP Search サイト などで探し、 # cd /usr/ports/distfiles; fetch ftp://foo.bar.com/pub/hogehoge-1.1.tar.gz でダウンロードするのが簡単です。 --- [管理番号 573] (最終更新 2004/04/09 05:05:54) Q. ports や packages はどれを使っても良いのでしょうか? A. ports は、最低限 FreeBSD の -current と -stable で動くように 開発されています。よって、古い RELEASE バージョンなどではうまく make 出来ないことがあるでしょう。 FreeBSD-current、-stable 以外で、より新しいバージョンを使いたいと いった理由で、ports-current を使いたい場合は 「ports-current の使い方」 を参照して下さい。 packages については、それぞれの RELEASE でコンパイルした バージョンを使うのが一番よいでしょう。新しい RELEASE 用の package を古いバージョンの FreeBSD で使用すると思わぬ不具合 が出る場合があります。 --- [管理番号 658] (最終更新 1999/02/17 23:58:45) Q. あるプログラムを実行しようとしたら、 /usr/libexec/ld.so: warning: /usr/lib/libc.so.3.0: minor version 0 older than expected 1, using it anyway のようなエラーになります。どうしたら良いでしょうか? A. 例えば,あなたが利用しているのが FreeBSD 2.2.1-RELEASE なのに、 FreeBSD 2.2.6-RELEASE 用の package をインストールしてしまった、などと いう場合にこのエラーが出ます。 つまり、ある特定バージョンの OS 用にダイナミックリンクするよう作成され たプログラムを、それより古いバージョンの OS で実行しようとした場合に出 るエラーです。そのプログラムを実行しないのが賢明ですが、どうしてもその プログラムを実行(利用)したいのであれば、 1. 自分が使用しているバージョン用のプログラムを入手する。 (FreeBSD 2.2.1-RELEASE を使用しているのなら、 FreeBSD 2.2.1-RELEASE 用のプログラムを入手する) 2. ports を使うなどして自分でコンパイルし直す。 3. 最新の RELEASE に Upgrade する。 という方法をとらなければなりません。 「shared library(上記の例だと libc.so.3.1 です) だけ新しい物を持って来る。」 や、 「今 持っている shared library を copy して、 バージョン番号だけをごまかす。」 などの無理な対処は、プログラムの誤動作を引き起こす可能性があり、非常に 危険ですからやめましょう。 --- [管理番号 689] (最終更新 1999/02/17 23:58:45) Q. FreeBSD の ports と packages はたくさんありますが、ファイル名だけでは どんな機能のプログラムなのかわかりません。 A. ports(packages) になっているソフトの簡単な紹介として と、それを日本語に翻訳した があります。 --- [管理番号 760] (最終更新 1999/02/17 23:58:45) Q. ports/packages が対応しているものより新しいソースがあることに気が付 きました。この ports/packages の MAINTAINER に連絡した方がいいですか? A. バージョンアップにより、幾つかの不具合が直っているかもしれません。 MAINTAINER に教えてあげるとよいでしょう。新しいportsを作ってくれるかも しれません。 もちろん、あなたご自身で ports/packages を作ってしまってもいいのですよ。 ただし、その時にはそのソフトの(そのバージョン)が ports/packages にして よいものなのか、付属ドキュメントを読むなどして確認しなくてはいけません。 場合によっては、作者から了解を得ることが必要になるかもしれません。 --- [管理番号 769] (最終更新 1999/02/17 23:58:45) Q. Windows マシンに packages の入った CD-ROM を入れ、Microsoft Personal Web Server などの FTP Server を起動し、そこから FTP 経由で packages をインストール しようとしましたが、「選択したメディアからパッケージ XXX を読むことができま せん。パッケージは追加されません。」と表示されてインストールできません。 A. packages のファイル名が正しく認識できないのが原因です。Rock Ridge Extension 形式の CD-ROM は Windows 等では 8+3 文字のファイル名でしか読めません。Windows 上で Rock Ridge Extension を取り扱えるような工夫をするか、もしあれば TRANS.TBL ファイル内の情報を参考にし、Long File Name でハードディスク上にコピーしてから、 packages の追加を行なって下さい。 --- [管理番号 823] (最終更新 1999/02/24 04:15:18) Q. rumba というソフトがあると聞いたのですが。 A. Sharity-Light という名前に変わりました。 Sharity-Light については 管理番号 824] を参照。 --- [管理番号 1181] (最終更新 1999/04/07 06:21:38) Q. ports&packages の各種ソフトをインストールしたのですが、そのパッケー ジでインストールしたソフトを実行するためのコマンド名がわかりません。 pkg_info -a | more で、どういうパッケージをインストールしたのかはわかるのですが、実際に入 力するコマンドがわかりません。たとえば、 ImageMagick-4.2.1 をインストー ルしても、コマンドが /usr/local/bin/display、 /usr/local/bin/convert 等 だとはなかなか気付きません。 このパッケージの名前と、実際に入力するファイル名というかコマンドを、対に なった一覧表として表示する方法がないでしょうか? A. 確かに、package名だけではわかりづらいですね。 pkg_info のコマンドオプション -L で、パッケージ名及び関連ファイル一覧が表示 されますので、 pkg_info -a | more あるいは pkg_info -a | grep なんとか として具体的なpackage名をみつけ、 pkg_info -L package名 | more とするとよいでしょう。 現在のところ pkg_info の引数の package名は完全一致しなければなりません。 --- [管理番号 1363] (最終更新 1999/07/24 15:03:28) Q. ports/packages を使ってインストールしようとすると、 install-info: Undefined error: 0 for /usr/local/info/dir pkg_add: command 'install-info /usr/local/info/wget.info /usr/local/info/dir' failed などと、失敗してしまいます。 A. その ports/packages が、install-info で info をインストールして いる場合、先に /usr/share/info/dir をインストールしておく必要が あります。 まず、/stand/sysinstall などで配布物の中から info をインストールし、 その後 /usr/local/info/dir を削除して、再度 目的の ports/packages を インストールして下さい。 --- [管理番号 1554] (最終更新 2004/04/09 05:04:55) Q. Ports の Web ページ ( または )から、 ある Ports スケルトンをダウンロードしてインストールを試みましたが、 ===> Verifying install for nkf in /usr/ports/japanese/nkf >> No directory for nkf. Skipping.. と表示されてしまい続けることができません。再び、上記 Web ページに アクセスし、その ports を入手しようとしましたが、登録されていないよう です。こいう場合、どうすればよいのでしょうか? A. 現在の Ports は相互依存が非常に強く、Web ページ上で「必要なもの」とさ れた Ports だけじゃダメなケースが多々あります。また Web ページの更新は 手作業ですので、Ports ツリーの最新状況を正確には反映していません。一番 確実なのは、Ports ツリー全体を自分のマシン上に持ってくることです。この 中には、Web ページ上に掲載されていない Ports も含まれています。 FTP サーバから ports.tar.gz (約23MB、2004/02/13 現在) を取ってくるか、 CVSup を使って Ports ツリー全体を同期させるようにします。 ports.tar.gz をダウンロードしたら、任意のディレクトリ (例 /usr/ports) 上で展開しましょう。全ての Ports スケルトンがあなたのマ シンの中にインストールされます (スケルトンなので、大した容量は食い ません)。そして、その中の「インストールしたいソフトウェア」のディレ クトリ上で make してみましょう。 ports.tar.gz は各ミラーサーバにもあります。 --- [管理番号 1765] (最終更新 2001/01/08 04:35:57) Q. FreeBSD Ports Collection を使ってアプリケーションをインストールしてい ます。必要な時にアプリケーションのソースを取得してくれるのは良いのです が、ダイアルアップ環境では通信費用がかかります。依存する ports に必要 なソースも含めて一度にまとめて取得する方法は無いでしょうか? A. fetch-recursive と言うターゲットがあります。インストールしたい ports(7) のディレクトリに移動して # make fetch-recursive で依存する ports も含めて必要なソースを全て取得して来ます。 --- [管理番号 1866] (最終更新 2001/04/18 02:12:12) Q. FreeBSD 4.2-RELEASE において、jail 環境上でシェアードメモリを使う ソフトウェアを動かしたいのですが、たとえば PostgreSQL ならば IpcMemoryIdGet: shmget failed (Function not implemented) key=5432010, size=144, permission=0 IpcMemoryAttach: shmat failed (Function not implemented) id=-2 FATAL 1: AttachSLockMemory: could not attach segment とのエラーメッセージが報告されて起動できません。 カーネルは options SYSVSHM をつけて構築してありますし、jail 環境上 で ipcs -M を実行しても有意な数値が出るのに何故でしょうか。 A. 4.2-RELEASE の場合 jail の親環境でシェアードメモリがサポートされて いたとしても、名前空間が jail 環境と親環境、あるいは別の jail 環境 で共用されていることに起因するセキュリティ上の危険性を理由として 標準状態では jail 環境からシェアードメモリへのアクセスはできません。 危険性をふまえた上でこの制限を解除するには、システム変数 jail.sysvipc_allowed を 1 にする必要があります。 コマンドラインから手動でこれをセットする場合には、次のようにします。 # sysctl -w jail.sysvipc_allowed=1 あるいは、/etc/sysctl.conf に jail.sysvipc_allowed=1 という 記述を入れれば、親環境の起動時に自動的に上のコマンドが実行される ようになります。 詳しくは jail(8) の Sysctl MIB Entries の項目を参照してください。 なお、この制限は 4.1.1-RELEASE (正確には 2000/11/01 以前の 4.x-STABLE) 以前のバージョンにはありません。[FreeBSD-users-jp 60031]