で、かなり放置していたので、いろいろと整備した。
以下、メモ:
ports
packageはコンパイル済だが、ports は未コンパイル。その分、強力。ports の実体はスケルトン。↓こんな感じ。
$ tree /usr/ports/graphics/ImageMagick/ /usr/ports/graphics/ImageMagick/ |-- Makefile |-- distinfo |-- files | |-- patch-Makefile.in | |-- patch-coders::jp2.c | `-- patch-configure |-- pkg-descr `-- pkg-plist 1 directory, 7 files
で、portupgrade っていう管理ユーティリティがあって便利。 linux の apt-get に相当する。
$ # ports を最新にする。 $ cvsup -g /usr/local/etc/ports-supfile; $ # ports のデータベースを更新する。 $ portsdb --update --fetchindex; # index は配布されているものを使う。 $ # または、 $ portsdb --update --updateindex; # index も構築する。 $ # または、 $ cd /usr/ports/; make index; # より確実らしい。 $ # ports の内容を表示する。 $ portversion --verbose; $ # ports からインストールする。 (= cd /usr/ports/foo/bar; make install clean; ) $ portinstall --verbose foo/bar; $ # ports からアップグレードする。 $ portupgrade --interactive foo/bar; $ # ports の作業ファイルを削除する。distclean は 2 回指定する。 $ portsclean --workclean --distclean --distclean;
portinstall / portupgrade の再に現れる CUI で、大抵の config オプションを設定できる。
( ports で管理できる config オプションを 'knob' と呼ぶらしい。)
設定を変えて再インストールしたい場合とかは、
$ まず消す。 $ cd /usr/ports/foo/bar; $ make deinstall; $ # config の CUI を使えるかもしれない。 $ make config; # # CUI 使えたら、 $ make reinstall; # # CUI 使えなかったら、 $ # /usr/local/etc/pkgtools.conf の MAKE_ARGS にオプションを指定して、 $ portinstall --verbose foo/bar ;
今回は、先ず、いろいろアップグレードした。
$ portupgrade --interactive --all; $ portsclean --workclean --distclean --distclean;
それから、無くて困っていた screen をインストールした。
FreeBSD Portsで cvs から 'screen' を検索して、それが /usr/ports の下にあることを確認して、
$ portinstall --verbose sysutils/screen; $ portsclean --workclean --distclean --distclean;簡単。
参考:
src からインストール
APP(ApachePostgresqlPhp) は、 src で管理している。これも、ついでにアップグレード。
(apache-1.3.34 も出ているが、これは Apache-SSL が出るまで待つことにした。)
- postgresql-8.1.1
- php-4.4.1
- ZendOptimizer-2.6.0
- php-json-ext-1.1.0
[backup]
pg_dumpall -g > /home/postgres/backup/all.dmp; pg_dump -b -F c foo > /home/postgres/backup/foo.dmp;[restore]
psql -f all.dmp template1 pg_restore -d foo foo.dmpで、無事完了。
参考:
ハマりどころ
最近 PHP のリリースが安定していないので、必要以上にビビっていたせいもあり、実は結構ハマった。
-
- $ pkgdb -F;
- このサーバの構築に際して、上記 APP などを src で管理するために、
VPS7 の標準構成から package/ports 版をアンインストールして頂いた。
その際、PHP の拡張(php4-xxx) の package/ports が取り残されていたらしく、
存在しない apache との依存関係を引きずっているようだった。
とりあえず、$ pkgdb -F;
したら問題無さそう。
-
- autoconf,automake,libtool の重複
- ひとしきり portupgrade/portsclean して、
$ portversion --verbose;
してみたら、autoconf,automake,libtool がバージョン違いで複数ある。
不安に思いつつ、PHP を src からインストールする作業に取り掛かると、
configure で warning が出て、make も失敗。*** Warning: inter-library dependencies are not known to be supported. *** All declared inter-library dependencies are being dropped. *** Warning: libtool could not satisfy all declared inter-library *** dependencies of module libphp4. Therefore, libtool will create *** a static module, that should work as long as the dlopening *** application is linked with the -dlopen flag.
package/ports のツリーがイカレたか?
と思ったが、重複自体は問題ないらしい。
package/ports 間の依存関係の連鎖を最小限にするために、
被依存バージョンを残しつつ、別のバージョンもインストールする方針らしい。
とりあえず、libtool とかが見つからないのはマズい気がしてタマらなかったので、
$ ln -s /usr/local/bin/libtool15 /usr/local/bin/libtool
とか、しばらくゴニョゴニョやってたら、なんかコンパイルできた。
途中、不安が不安を呼んで、
config.log の fail とか warn とかの多さにくじけそうになったが、
もともと config.log は、そういうものらしいし、とりあえず動いてるのでヨシ。
本題の chasen, mecab を、src, ports のどっちで管理するかも要検討。