Monthly Archives: 7月 2009

portsを探すのがだるい件について。

Pocket

結論から言うとports-mgmt/psearchがおすすめ。

あのソフトがportsにないかなーというとき、セオリーで言えば/usr/portsディレクトリでmake search key=”キーワード”とするわけだが、いちいちここまでコマンドを打つのが面倒だし、そもそも書式をすぐに忘れる。(後者は俺だけかもしれないが)

次に考えるのがlocateやfindだが。findは長々とコマンドを打たないといけないので嫌。検索遅いし。

locateは強力だが、ヒットしすぎて困り果てるし、システムインストール直後だとデータベースが出来ていなくて使えない。

そこでしばらくwhereisコマンドを使っていた。

こんな感じ。

$ whereis audacious
audacious: /usr/ports/multimedia/audacious

ただ、whereisなんで、検索対象のファイル名をきっちり分かってないと使えない。(たぶん)

また、注意すべきは-aオプションを与えないと最初のマッチしか返さないこと。以下の例のように、初めてxlockmoreを検索したときは、なんで日本語版しかないんだ?と悩んだ。

$ whereis xlockmore
xlockmore: /usr/ports/japanese/xlockmore
$ whereis -a xlockmore
xlockmore: /usr/ports/japanese/xlockmore /usr/ports/x11/xlockmore

そういった遍歴の結果、ports-mgmt/psearchに辿り着いて今のことろ満足している。

書式は以下の通り。

psearch [options] PATTERN

PATTERNには正規表現が使える。

$ psearch audaci*
audio/audacious-crossfade A Crossfading/Gapless Plugin
audio/audacious-dumb      Audacious plugin that support the IT, XM, S3M or MOD formats
audio/audacious-mac       Audacious plugin that support the Monkey's Audio lossless formats
audio/audacity            Audacity is a GUI editor for digital audio waveforms
audio/audacity-devel      Audacity is a GUI editor for digital audio waveforms
audio/wmauda              A port of wmxmms to GTK 2.x and Audacious
multimedia/audacious      A media player based on BMP and XMMS
multimedia/audacious-plugins Plugins needed for audacious
x11-themes/audacious-skins A collection of audacious skins

俺はいつもaudaciousを入れるつもりでaudacityをインストールしてしまってガッカリするんだがこれで安心。

その他には、単語を複数渡し、スペースで区切ればand検索。-oオプションを与えればOR検索。-nならバージョン名を教えてくれる。-cでカテゴリーを指定すればそこだけを探してくれる。

$ psearch thunar plugin
archivers/thunar-archive-plugin Archive plugin for the Thunar File Manager
audio/thunar-media-tags-plugin A Media Tags Plugin
devel/thunar-svn-plugin   Subversion plugin for Thunar
sysutils/thunar-volman-plugin A Device manager plugin.
$ psearch -o thunar plugin|less
archivers/thunar-archive-plugin Archive plugin for the Thunar File Manager
astro/gkrellmoon          A moon clock plugin for Gkrellm
(略)
$ psearch -n thunar plugin
thunar-archive-plugin-0.2.4_2 Archive plugin for the Thunar File Manager
thunar-media-tags-plugin-0.1.2_8 A Media Tags Plugin
thunar-svn-plugin-0.0.3_1 Subversion plugin for Thunar
thunar-volman-0.2.0_4     A Device manager plugin.
$ psearch -c archivers thunar plugin
archivers/thunar-archive-plugin Archive plugin for the Thunar File Manager
$

すげー便利。

ただ/usr/ports/INDEX-?(?にはOSのメジャーバージョンが入る)が無いとダメ。普段は気にすることないがメジャーバージョンの変わり目では気をつけること。

No tags for this post.

portsインストール後の注意書きを後で読むには

Pocket

ports/packagesをインストールするといくつかのports/packagesで注意書き(Install Notice)が表示される。

たまーにクリティカルな注意の場合があるんだが、大量のports(packages)をインストールしているときなど、注意書きもターミナルの表示限界を超えて吹っ飛んでいく。

portmasterなどでインストールしていれば、こういった注意書きを後でまとめて表示してくれるが、後で気がついたところで時すでに遅し。

そこで考えた。

pkg_info -D <ports名>とするとインストール後のメッセージを表示してくれる。こいつにインストールしたports名のリストを与えてやればいいわけだ。

問題は依存も含めてどうやって一覧を作るかだが、pkg_info -r <ports名>でそのportsが依存するportsをリストしてくれる。

xorgを与えてあげると、以下のようになる。

$ pkg_info -r xorg-7.4_2
Information for xorg-7.4_2:
Depends on:
Dependency: xorg-docs-1.4,1
Dependency: xineramaproto-1.1.2
Dependency: xf86vidmodeproto-2.2.2
Dependency: xf86miscproto-0.9.2
Dependency: xf86dgaproto-2.0.3
Dependency: xextproto-7.0.5
Dependency: xbitmaps-1.0.1

あとはこれを整形してpkg_info -Dに渡せばよい。

もちろん、このリストがそのときにインストールされたportsのリストと一致するとは、必ずしも言えないんだが、そこはそれ。

$ pkg_info -r xorg-7.4_2|cut -f2 -d":"|xargs -n1 pkg_info -D|less
Information for xorg-docs-1.4,1:
Information for xineramaproto-1.1.2:
(中略)
Information for glib-2.20.4:
Information for gamin-0.1.10_3:
Install notice:
===============================================================================
Gamin will only provide realtime notification of changes for at most n
files,
where n is the minimum value between (kern.maxfiles * 0.7) and
(kern.maxfilesperproc - 200). Beyond that limit, files will be polled.
If you often open several large folders with Nautilus, you might want to
increase the kern.maxfiles tunable (you do not need to set
kern.maxfilesperproc, since it is computed at boot time from
kern.maxfiles).
For a typical desktop, add the following line to /boot/loader.conf, then
reboot the system:
kern.maxfiles="25000"
(略)

ほとんどのportsには注意書きがないので、スペースバーを連打することになるが、まあ何度もあることじゃなし。

そのほか、/var/db/pkg配下ファイルの更新日時を使う手も考えたが、findコマンドを使うのが面倒なので止めた。

No tags for this post.

/usr/ports/INDEX-8が(まだ)なくて8.0-BETAでportsの検索が出来ない件

Pocket

portsを検索しようと思ったら、/usr/ports/INDEX-8がなくて失敗した。

本家MLとか本家Forumでも話題になっていて、とりあえず解決策としては/usr/portsでmake fetchindexとやればいいみたい。

# make fetchindex
Password:
/usr/ports/INDEX-8.bz2                        100% of 1267 kB  159 kBps

portsnapでportsを更新している人は/etc/portsnap.confに以下の一文を追加

INDEX INDEX-8 DESCRIBE.8
No tags for this post.

USBキーボードからアンダースコア(_)が入力できない件

Pocket

8.0-BETA2、xorg-server1.6.1、(xkeyboad-config-1.6_1)でUSBキーボード(日本語配列)からアンダースコア(_)が入力できない。

ひょんな事から会社のPCにFreeBSDをインストールする羽目になったのだが、そこで遭遇。

調べてみたら昔からある事象のようだが、自宅のFreeBSDを入れているPCは、すべてUS配列のキーボードだったので気がつかなかった。

通常のコンソールなら大丈夫。

キーボード関係ということで、HALのfdiで解決できないかググってみたけど解決せず…。

結局、X起動時にxmodmapで設定することにした。

startxでX起動してるので、.xinitrcに細工。

問題は解消されたけど、キーボードの設定がxmodmapとfdiの二つに分散してるのが、どうも納得いかない。

$ cat ~/.xinitrc
xmodmap $HOME/.xmodmap
(後略)
$ cat ./.xmodmap
keycode 151 = underscore
No tags for this post.

FreeBSDにさっくりXとXFCE4をインストールする。

Pocket

XFCE4をインストールした。

ついでなのでこの記事のアップデートを兼ねつつXを入れるところからメモ。

条件は以下の通り。

  • GDM、XDM等のログインマネージャは入れません。
  • portsではなくpackagesで入れるので、STABLE、CURRENTだとpackagesがなくてダメかもしれません。
  • RELEASEなら大丈夫のはず。
  • コマンド実行例では、#、または$がコマンド入力行。#の場合はroot権限を示します。

ではスタート。

◎Xのインストール

portsでインストールすると時間がかかるのでpackagesにする。それでもデフォルトだと米国あたりのサーバにftpしてしまうので、設定を変更する。ちなみにftp2.jp.freebsd.orgはftp.iij.ad.jpのことである。

# sh
# PACKAGEROOT="ftp://ftp2.jp.freebsd.org";export PACKAGEROOT
# pkg_add -r xorg
Fetching ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.2-release/Latest/xorg.tbz... Done.
Fetching ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.2-release/All/xorg-docs-1.4,1.tbz... Done.
(略)

これでXのインストールは完了。

◎Xの設定(前段)

続いて設定。今のXは(そのままだと)HALに依存しているのでhaldを起動する。なおこのとき、mouseデーモンが動いていると問題になるのでmousedは止める。

/etc/rc.confに以下の行を追加。dbusとhaldの順番は必ずこの通りにすること。haldの起動に先だってdbusが動いていないとダメだから。各rcスクリプトには依存があるので注意。

moused_enable="NO"
moused_nondefault_enable="NO"
dbus_enable="YES"
hald_enable="YES"

HALのためのキーボード設定を行ったら、HALをスタート。

念のためmousedを止める。(下の例ではmousedは動いていないけど)

# /etc/rc.d/moused onestop
moused not running? (check /var/run/moused.pid).
# /usr/local/etc/rc.d/dbus start
Starting dbus.
# /usr/local/etc/rc.d/hald start
Starting hald.

◎Xの設定

rootでいきなりstartxとやって素っ気ないtwmが表示されればOK。

画面が真っ暗なままになったら、慌てず騒がずAlt+1とかCtrl+Alt+Backspaceとかする。

そのうえでググる。

昔ならXorg -configureでxorg.confを作るところだが、これが今では曲者で、ろくな設定ファイルを作ってくれない。特にVGAがIntelだったりすると最悪だ

なので、うまく行かない場合にはXorg -configureのxorg.confをベースに、ググった結果を追記したほうがいいと思う。

◎サウンドカードの設定

ここを参照。

◎Xfceのインストール

xfce4のインストール。ついでにVLゴシックフォントも入れる。FEP(て言うのか?)も入れる。今ならuim-gtkとja-uim-anthyでOK。

# pkg_add -r xfce4 ja-vlgothic uim-gtk ja-uim-anthy
Fetching ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.2-release/Latest/xfce4.tbz... Done.
Fetching ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.2-release/All/icons-tango-0.8.1_1.tbz... Done.
(略)

◎Xfceの設定

普段使うユーザでホームディレクトリの.xinitrcに以下の行を追加。

LANG="ja_JP.UTF-8";     export LANG
export GTK_IM_MODULE=uim-anthy
export XMODIFIERS='@im=uim-anthy'
exec uim-xim &
exec xfce4-session

なお、自ホストのIPアドレスを引けないとXfceの起動時に怒られる。固定IPアドレスならともかくDHCPで自動取得してる場合には127.0.0.1あたりに書いておけばOK。

/etc/hosts(青字が追記部分)

127.0.0.1               localhost localhost.my.domain <span style="color:#0000CC;">harukiya.local</span>

以上。

あとはstartxで起動して、好きなアプリケーションを入れる。

日本語入力に関しては、Xfce4の設定マネージャ>入力メソッドから、全体設定>入力方式の利用準備>標準の入力方式を指定>標準の入力方式でanthyを選ぶ。

No tags for this post.

FreeBSDでbroadcomのGbEカードが動かない件

Pocket

あるマシンにFreeBSDをインストールしたのだが、BroadcomのGbEカードで通信ができない。

DHCPに設定してもIPアドレスを取得できないし、固定で設定しても通信できない。7.2-STABLEと8.0-BETA2で確認した。

ググって以下のように/boot/loader.confに設定して何とか解決したのでメモ。問題はBroadcomのカードではなく、むしろNVIDIAチップセットにある模様。

◎/boot/loader.conf

hw.bce.msi_enable=0
hw.pci.enable_msi=0

具体的なカードは以下の通り。

◎dmesgの出力
bge0: <Broadcom NetXtreme Gigabit Ethernet Controller, ASIC rev. 0xb002>
mem 0xfddf0000-0xfddfffff irq 16 at device 0.0 on pci2
miibus0: <MII bus> on bge0
◎pciconf -lvの出力
$ pciconf -lv|less
none0@pci0:0:0:0:       class=0x050000 card=0x02f010de chip=0x02f010de rev=0xa2 hdr=0x00
vendor     = 'Nvidia Corp'
device     = 'C51 Host Bridge'
class      = memory
subclass   = RAM
(中略)
bge0@pci0:2:0:0:        class=0x020000 card=0x01ec1028 chip=0x167a14e4 rev=0x02 hdr=0x00
vendor     = 'Broadcom Corporation'
device     = 'Broadcom NetXtreme Gigabit Ethernet Controller (BCM5754)'
class      = network
subclass   = ethernet

NICが使えないとなると、OSを変えるかIntelあたりのNICを追加するかしないといけなかったので、直ってよかった…。

No tags for this post.

MCA master

Pocket

MCA databaseとMCA applicationを取った。

体系的な知識がなかったのでdatabaseの勉強には手こずって、こればかりは会社から借りてきた赤本をたびたび参照した。

一方でapplicationは、オブジェクト指向とかコンポーネントとか、やや開発よりのエリアが範囲。そっち方面もあまり明るくないのだが、浅く広い知識を問うような問題が多く、なんだかもうやる気がまったく起きなくて黒本を1回眺めたくらい、しかも巻末の仕上げ問題すらやらず試験を迎えてしまった。やる気に比例して点数は低かったものの受かってしまえば関係ないのでよし。

これでMCAマスターになった。次は何を受けるべか。

Turbo-CE LinuxとMCAの計5つの試験で1週間~2週間おきに会場に通ったので事務員に顔を覚えられた。

No tags for this post.

8.0-BETA1に上げたらhaldがCPU時間食い過ぎの件

Pocket

件名の通り。

まだ8.0にはデバッグ用の設定が残っていて、そのせいで遅いのかと思ったら、haldがCPU時間を食いまくってたでござる。

haldを作り直したら直った。やっぱり横着せずportsは作り直した方がいいんだな。大変だけど・・・。

システム起動直後はこんな感じ。

$ top|head
last pid:  1407;  load averages:  1.14,  0.55,  0.22  up 0+00:02:36    00:11:30
52 processes:  4 running, 48 sleeping
Mem: 32M Active, 13M Inact, 26M Wired, 52K Cache, 14M Buf, 909M Free
Swap: 512M Total, 512M Free
PID USERNAME      THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
1162 haldaemon       1 116    0  6928K  4376K RUN      1:27 86.18% hald
1174 root            1  49    0  5716K  2544K select   0:00  0.00% hald-addon-

haldをkillした後。load avarageが1未満に減っている。

$ top|head
last pid:  1693;  load averages:  0.71,  0.78,  0.39  up 0+00:05:36    00:14:30
45 processes:  1 running, 44 sleeping
Mem: 26M Active, 12M Inact, 26M Wired, 52K Cache, 14M Buf, 915M Free
Swap: 512M Total, 512M Free
PID USERNAME      THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
1379 root            1  44    0  4524K  2644K wait     0:00  0.10% bash
1007 root            1  44    0  3296K  1380K select   0:00  0.00% powerd

あと、8.0に上げたらUSBマウスが動かなくなった。マウスパッドは効くのに。

さんざんググっても分からず頭を抱えたが、次の日くらいの8.0にアップグレードしたら完治。

なんだかんだ言ってもまだCURRENTなんだなと思った。

No tags for this post.

FreeBSDを毎日ビルドしてISOイメージを作ってくれるallbsd.org

Pocket

http://pub.allbsd.org/FreeBSD-snapshots/

ここで(ソースがアップデートされたら)毎日ビルドしてISOイメージまで作ってくれる!

すごい!

FreeBSDは日々刻々とアップデートされていて、そのつど新機能やバグフィックスが追加されていく。となると、すぐにでも自分のマシンに適用したくなるんだが、それをするにはコンパイルが必要で、オンボロマシンを使っていると非常にきつい。

FreeBSDの公式サイトでは、ひと月に一度currentやstableのソースをビルドして配布しているので、いままではそれを使ってた。しかし月刊ベースじゃ満たされないうえに、リリース直前などはスキップされ(実際にはその時期にリリースのBETA版、RC版などが配布されているのだが)ていたので話にならなかった。

8.0-RELEASEも近いことだし、無駄に毎日ダウンロードしてみる予定。

No tags for this post.