ラベル FreeBSD の投稿を表示しています。 すべての投稿を表示
ラベル FreeBSD の投稿を表示しています。 すべての投稿を表示

2012年3月9日

automake

FreeBSD を 9.0 に上げてから、私の環境・グラフィックカードでは mplayer や ffplay で動画を再生した時に画面が時々真っ暗になる。設定をいろいろ変えたり、下位ライブラリをリビルドしたりとあれこれ楽しんでいるが1ヶ月ずっと解消できていない。

Perl のモジュールは最近 cpanp から o; i *; (o コマンドで更新のあったモジュールをリストアップして、i *; で直前のリストアップ全てを更新 ) として、p5-* を含めて軒並み bsdpan- にしているのだが、そこに関連して しばらくメールが読めなかった。

mutt-devel に対して aspell に依存するって間違った情報が登録されているのを解消したく、一度削除して再コンパイル・インストールしようとしたのが原因。

===>   mutt-devel-1.5.21_3 depends on shared library: sasl2.2 - found
===>   mutt-devel-1.5.21_3 depends on shared library: idn - found
===>   mutt-devel-1.5.21_3 depends on shared library: iconv.3 - found
===>   mutt-devel-1.5.21_3 depends on shared library: intl - found
===>   mutt-devel-1.5.21_3 depends on shared library: db-4.7.0 - found
===>  Configuring for mutt-devel-1.5.21_3
Can't locate object method "tid" via package "threads" at /usr/local/share/automake-1.11/A
utomake/ChannelDefs.pm line 241.
*** Error code 2
Stop in /usr/ports/mail/mutt-devel. *** Error code 1< br /> Stop in /usr/ports/mail/mutt-devel.

気づいてみれば、なんのことはない。site_perl 以下の threads.pm が Perl 本体の入れた threads.pm を上書き (overload ) していたのが原因。

一瞬で気づかなかった理由は、目の前にエラーメッセージをみながら、automake が Perl に依存しているわけがないと歴史的な前後関係に目を曇らせていたせい。

2011年11月16日

Android ← USB → FreeBSD

Android 携帯 IS03 の SD カードを取り外さずに、ケーブル経由で FreeBSD 8.2-STABLE のマシンからマウントすることができた。

前に kernel をコンパイルし直して、umass が使えるようにはしていた。だがそれだけだと /var/log/messages の表示は以下のようであり、マウントにエラーが出る

Nov 16 13:35:25 bouon-an kernel: ugen7.2: <SHARP Corporation> at usbus7
Nov 16 13:35:25 bouon-an kernel: umass0: <au IS03 SD Storage> on usbus7
Nov 16 13:35:25 bouon-an kernel: (probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0 
Nov 16 13:35:25 bouon-an kernel: (probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
Nov 16 13:35:25 bouon-an kernel: (probe0:umass-sim0:0:0:0): SCSI status: Check Condition
Nov 16 13:35:25 bouon-an kernel: (probe0:umass-sim0:0:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present)
Nov 16 13:35:25 bouon-an kernel: da0 at umass-sim0 bus 0 scbus2 target 0 lun 0
Nov 16 13:35:25 bouon-an kernel: da0: <SHARP au IS03 microSD 2.31> Removable Direct Access SCSI-0 device 
Nov 16 13:35:25 bouon-an kernel: da0: 40.000MB/s transfers
Nov 16 13:35:25 bouon-an kernel: da0: Attempt to query device size failed: NOT READY, Medium not present
-------------------------
Nov 16 13:36:53 bouon-an sudo:   yaemon : TTY=pts/2 ; PWD=/home/yaemon/music/chanson ; USER=root ; COMMAND=/sbin/mount /dev/da0 /mnt/note/
Nov 16 13:36:53 bouon-an kernel: GEOM: da0: partition 1 does not start on a track boundary.
Nov 16 13:36:53 bouon-an kernel: GEOM: da0: partition 1 does not end on a track boundary.

au IS03 てトライした初期のころに FreeBSD のカーネル・ソースいじって書き足したような…… 記憶はあるのだが。どこに足したのだったか。最新ソースに同期してパッチは充てていないから、いまは本家でも入れているのかもしれない。

私のデスクトップの名前は、bouon-an.nakagawa.local


man umass をみて、次のようにして成功した。

Nov 16 13:38:39 bouon-an sudo:   yaemon : TTY=pts/3 ; PWD=/home/yaemon ; USER=root ; COMMAND=/sbin/camcontrol rescan 0:0:0
Nov 16 13:39:44 bouon-an sudo:   yaemon : TTY=pts/3 ; PWD=/home/yaemon ; USER=root ; COMMAND=/sbin/mount -t msdosfs /dev/da0s1 /mnt/note

日本語ファイル名

バックアップをとろうとすると、ls でも cp でも、そのほか何をやってもコマンドが受け付けないファイルが存在する。

まずは $> sudo kldload msdosfs_iconv あかん。

2枚ある SD カードの、使っていないほうを ufs , ext2 , ext3 でそれぞれフォーマットしてみたが電話機から mount できない。

MSDOS FS ならばということで、この検索結果 から 昔のメールアーカイヴ を発見して、/etc/fstab に以下の行を追加して妥協。

/dev/da0s1  /mnt/phone msdosfs rw,noauto,-u=yaemon,-g=wheel,-L=ja_JP.eucJP,-D=CP932 0 0

ls | nkf -w とか面倒くさいし、PC から日本語ファイル名のまま cp できないのも鬱陶しいが。それ以上の手間をかけるのも不合理というものだ。

2011年9月9日

本日づけの vim でコンパイルエラー

kikansah.jp を再開できそうなめどが立って、古いサーバの手入れで昨日に vim の最新版 (表示は 7.3.107 )を hg で取ってきてコンパイルした。ふつうに入った。

昨日はそのとき、自宅 PC の ruby も更新した。それゆえ、ruby と perl , python が vim のスクリプトから使えるほうの拡張版が動かなくなった。gvim に使っていて、ないと困るので今日再コンパイル。

再コンパイル時にまた最新ソース (これも表示は 7.3.107 )に更新したら、コンパイルエラー。Undefined routine ExtUtils::ParseXS::error だったかな。

perl の version は 5.14.1。cpanp コマンドを起動して ExtUtils::ParseXS モジュールを入れて、コンパイルは通った。

警告がいくつか流れていたし、perl が動くかテストするためだけの vim script が手許にないので、コンパイルできたってところまでしか確認していないが。とりあえず。

2011年3月7日

近頃の FreeBSD box ( 8-stable )

1月24日、デフォルトの perl が ver. up

$ ls /var/db/pkg | grep bsdpan- | sed -e 's/bsdpan-//;s,-[0-9.]*$,,;s/-/::/g;' | uniq > /tmp/now.list
$ sudo pkg_deinstall -f bsdpan-\*
( perl の本体と、数少ない p5-* を update してから )
$ sudo cpanp -i `cat /tmp/now.list`

基本、cpan 系コマンドでたいがいのモジュールを置き換えているから、こんな具合になる。

2月18日に csup したら

/usr/ports/UPDATING をみたら、21日づけで 8.2-RELEASEタグをつけたよとフライング気味に書いてあった。

2月25日夜に ports を csup したら

数が多いので、処理が面倒になって portupgrade -a をかけたら、あちこちに不具合がでて参った。

portupgrade コマンド群のなかに含まれる portversion コマンドは /usr/ports/INDEX-versionNo を参照する。このファイルは、ワンセットな更新が終わってから最後にひとまとめに更新がかかる。こっちを更新の基準情報にしないといけないわけだ。

portupgrade -aでは、それぞれの ports ディレクトリの Makefile を参照してシステムにインストールされたものと比較するらしい。よって、更新がアトミック (= ワンセットな更新をワンセット ) に扱えない。て、ことのようだ。

以降、気をつける。

3月12日。デフォルトの Python が ver.up

$ sudo portupgrade -o lang/python27 lang/python26
$ sudo portupgrade -Of py26-\*

で殆どが済む はずだった

python27 を make するときの dialog で、GNU pthread を使用 を選んだら、ハマる、ハマる。

FreeBSD の精妙に構成された Makefile 群の、評価順序を調べるのがおもしろいとしばらく GNU pthread を使ったまま py26-* を更新できるかチャレンジした。

一応の結論としては、ports の make のときだけ有功になるように、たとえば /usr/local/etc/pkgtools.conf に以下の設定を追加

MAKE_ARGS = { '*/py-*' => [ 'WITH_PTH=true' ] }

/etc/make.conf の中にも 条件分岐が使えて

.if defined(WITH_PTH)
LIB_DEPENDS+=  pth:${PORTSDIR}/devel/pth
_PTH_CPPFLAGS=  "-I${LOCALBASE}/include/pth"
_PTH_LDFLAGS=  "-L${LOCALBASE}/lib/pth"
CONFIGURE_ENV+=  CPPFLAGS="${_PTH_CPPFLAGS} ${CPPFLAGS}"
CONFIGURE_ENV+=  LDFLAGS="${_PTH_LDFLAGS} ${LDFLAGS}"
CFLAGS+= "${_PTH_CPPFLAGS} ${_PTH_LDFLAGS}"
.endif

と追加、とすれば。これが最後に読み込まれて、他のオプションも活かしたうえで有功になるというのが結論。

しかしながら。私の場合だと devel/py-sip なんて、けっこう基本のライブラリで、configure に与えるオプションを決め打ちした行儀の悪い Makefile なのに気づいて断念。

Python はよく知らないが、このファイルは直せるよ。今回だけなら。パッチも出せるよ。

でも、このあと継続して GNU pthread が使えるように py-* をメンテナンスするほどには、python のことをよく知らないもの。

一晩かけて Makefile のお勉強はしたけれど、もしも報告 (send-pr ) するならば lang/python における WITH_PTH は旧い (obsolute) といった内容にするべきかな、と。

……おっと、Mercurial は、hg コマンドの shell bang 行に python26 と書いてあったので 27 に書き換えた。

追記 : 上記の記事を書いた3時間後、こんな処理で洗い出して対処 (portupgrade -fO ) してみた。

$ grep -l python2\.6/site-packages /var/db/pkg/*/+CONTE*

2010年5月28日

pidgin を 2.7.0 ( Yahoo Japan 対応 ) に

やっと pidgin を Yahoo! Japan 対応の 2.7.0 に上げられた。

ports から入れるときに、Gstreamer を使わない設定にすると、header missing でコンパイルが通らなかったのが今までの敗因だ。

 In file included from media/backend-fs2.c:29:
 media/backend-fs2.h:62:21: error: gst/gst.h: No such file or directory
 In file included from media/backend-fs2.c:29:
 media/backend-fs2.h:63: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
 media/backend-fs2.h:66: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
 gmake[4]: *** [backend-fs2.lo] Error 1
 gmake[4]: Leaving directory `/usr/ports/net-im/libpurple/work/pidgin-2.7.0/libpurple'

これは ports の問題ではなく、pidgin の問題だよね。報告はするが、パッチを考えたりせずそっとしておこう

追記

報告したら即座に返事がきた。その問題は対処をすでに提出してある と。

データベースを検索してから報告を提出したはずだがおかしいなぁ…… あ、pidgn (ユーザインタフェイス) のほうで検索したしか。libpurple (プログラム本体) で検索するのを忘れていた。マヌケだ。

2010年5月2日

PC 環境復旧

恵んでもらったマシンがメインだが、復旧 したのは環境であって、PC ではないということで。

4月30に追加の買い物をして、作業開始。各種アプリの更新作業まで含めて、終了したのは今朝未明4時。

技術寄りの、FreeBSD に特化した話を軽く書く。

/usr/local , /usr/src , /usr/compat は前からのディスク (320GBytes , ATA 接続 ) へのシンボリックリンク。/usr/home , /var , /tmp は前からのディスクの該当パーティションへマウント。動作確認で FreeBSD-8.0 RELSEASE をインストールした新しいディスク ( 80Gbytes , SATA 接続 ) から起動して、/etc はまるっぽ mv して /etc/fstab のみを編集した。

8.0-RELEASE と、マシン故障前時点の 8.0-STABLE で ライブラリに変化があり、ports でなく自分で作っている vim だけが動かなかった。どうせ更新は趣味で行うので、vim を作り戻しはせず csup , makeworld 。そのほかは素直に動いた。Pentium4 1.6GHz から Celeron 1.8GHz 、どちらも i686 と表示される移行なので、CPU に合わせて最適化した /usr/local のバイナリも最適なまま動いているのだろう。

変えた設定は、失効した kikansha.jp のドメインから **.local への名前変更のみ。

ハードの変更に伴う変更は二点。ネットワークカード ( カーネルで bfe → em ) と、グラフィックボード ( Radeon RV200 QW [Radeon 7500]Volari Z9s で、ports から入れている X のドライバと xorg.conf を radeon から sis に ) 。

ドライバを変更しなくとも、前の設定ファイルそのままでとりあえず X が VGA (基本) ドライバで動いてくれたのはありがたかった。メールチェックくらいはできるということだ。(そこまで18日もの長きに渡って、携帯から生活していたから今更ともいうが)。vim が使えるまで、積極的に日本語を入力する気にならなかったけれどね。

X が VGA で動いていたとき、まだ /boot/loader.conf を動かしていなくて sem.so をロードしていなかったが firefox3 は素直に動いていた。なぜだろうね。とくに追求する気はない。

おっと、一時間後に追記。サーバ用の機材 で、音声出力端子がマザーにないので USB のスピーカを購入していた。ヨドバシカメラで一番廉かった品物、 1,980円。

Windows 用の CD がついたソフトウェア制御の品物で、音量調整はコマンドラインから mixer と叩かないといけないが、/boot/loader.conf に snd_uaaudio_load="YES" と追記したほかにとくに設定はない。(追記終わり)

ひさびさに、睡眠障害寸前まで作業した。どうなることかと思ったが、徹夜→13時から2時間の仮眠→風呂などの日常もこなして24時に就寝→6時半に自然に目が覚めた、ので私も復旧できたのだろう。

ゴールデン・ウィークのあいだは復職活動をしても無駄なので、あと五日間でちと作品を作ろうと、今朝思いついた。前に河野さんとお話して、こんな仕様でこんな実装なら良いよねと意気投合した CMS の、ブログ部分だけ軽く。五日でできる範囲だけに限定して。

五日あれば、構想は固まっているわっさ用の人工無脳も一個半作れるんだけれどさ。環境構築も実験も済んでいるし。わっさそのものにアクセスするのを控えているので、人間の環境が今は向かないのだ。

2009年11月10日

portupgrade ( pkgtools ) -20091029 でエラー

ports の更新をした。ports-mgmt/portupgrade-devel が更新された。

この -20091029 だが、私の環境では以下のようなエラーが出る。

$ sudo portinstall -v lang/tcl86-thread -l ~/log/20091110.03.tcl86-to-sqlite3.list
--->  Session started at: Tue, 10 Nov 2009 17:51:43 +0900
[Gathering depends for lang/tcl86-thread ..--->  Session ended at: Tue, 10 Nov 2009 17:51:47 +0900 (consumed 00:00:04)
/usr/local/sbin/portinstall:878:in `get_all_depends': private method `scan' called for #<Set: {}> (NoMethodError)
 from /usr/local/sbin/portinstall:871:in `get_all_depends'
 from /usr/local/lib/ruby/1.8/set.rb:195:in `each'
 from /usr/local/lib/ruby/1.8/set.rb:195:in `each_key'
 from /usr/local/lib/ruby/1.8/set.rb:195:in `each'
 from /usr/local/sbin/portinstall:870:in `get_all_depends'
 from /usr/local/sbin/portinstall:887:in `get_notinstalled_depends'
 from /usr/local/sbin/portinstall:773:in `main'
 from /usr/local/sbin/portinstall:751:in `each'
 from /usr/local/sbin/portinstall:751:in `main'
 from /usr/local/lib/ruby/1.8/optparse.rb:1310:in `call'
 from /usr/local/lib/ruby/1.8/optparse.rb:1310:in `parse_in_order'
 from /usr/local/lib/ruby/1.8/optparse.rb:1306:in `catch'
 from /usr/local/lib/ruby/1.8/optparse.rb:1306:in `parse_in_order'
 from /usr/local/lib/ruby/1.8/optparse.rb:1254:in `catch'
 from /usr/local/lib/ruby/1.8/optparse.rb:1254:in `parse_in_order'
 from /usr/local/lib/ruby/1.8/optparse.rb:1248:in `order!'
 from /usr/local/lib/ruby/1.8/optparse.rb:1241:in `order'
 from /usr/local/sbin/portinstall:559:in `main'
 from /usr/local/lib/ruby/1.8/optparse.rb:791:in `initialize'
 from /usr/local/sbin/portinstall:231:in `new'
 from /usr/local/sbin/portinstall:231:in `main'
 from /usr/local/sbin/portinstall:2213

2回ほど、portupgrade-devel を pkg-delete して make clean install から入れ直してみたが症状は変わらない。

ざっくり検索しても、似た症状が見当たらない。一番近いのが Ruby gem から datamapper を使ったときの[DataMapper] private method `scan' error という 昨年9月の記事。リンクを辿ると、DataObjects を新しくしたら?とだけ書いてあって、あとのフォローがない。

しばし考えたが、 ports-mgmt/portupgrade (-devel のついていない、安定版) にしてしまった。

コンパイルの最中に、再現性のない Segmentation fault を起こすような今のマシン環境では最新版のテストをして報告をできる状態でもないだろう、ということだ。

ハードが不安定なのだ、と睨んでいるので、あまり手を入れる気がない。

まじめにやるなら、databases/datamapper とその依存モジュールを下から順番に入れてみるという手もある。しかし scan なんてありふれた名前の関数が同じものだという保証はないわけで…

恥ずかしながら (FreeBSD)

昨日、ほとんどの google Alert を google reader 経由で読むように設定を変更した。メール経由でもけっきょくブラウザからアクセスすることになるので意味がないや、と。

じっさい、積ん読が溜まっていた。

主に技術の情報や動向なので、仕事に復帰するための準備の一環 …のつもり。

24時間を経て見たら、もう30件くらい溜まっている。

で、本題。FreeBSD の ports の update という記事を読むと、port tree を csup して、portversion -vL= コマンドを使おう という一文があった。

本文からみると、portupgrade コマンドとともに入るコマンドの一つだ。…あるよ。

実は知らなかった。何年も portupgrade を使っているが、portupgrade -na コマンドの出力を変形して使っていた。

同様に、実は半年ほど前まで shutdown -p で電源が落とせるのを知らずに、shutdown -h をしたあとで電源ボタンを押していた。

-h で電源が落ちなくなったな、まぁハード周りを真面目にメンテナンスするつもりもなくふらふらと使っているからいいや とのんきに考えて調べていなかった、という。

去年暮れまで、何年も電源を入れっぱなしで、落とす習慣がなかったから調べる必要がなかったのではあるが。

port の update に関しては CPAN と二重管理になっているという積極的な理由、下の層から上の層に向けて更新しないと気持ちが悪いという気分の理由で、メンテナンス用に特別にスクリプトを組んでいたりしますけれどね。