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

2021年7月31日土曜日

Mozc on FreeBSD

家のマシンの日本語入力をAnthyからMozcに変更した。
(2022年1月9日追記:pkg upgradeで壊れたので復旧した。)

0. 前提

  • うちのマシン:FreeBSD 13.0-STABLE #3 amd64
  • うちのキーボード:HHK。半角全角キーはない
  • うちのデスクトップ環境:Mate 1.24.1
  • Emacsのもともの日本語入力:Anthy
  • Emacs以外(例えばFirefoxとかSofficeとかXfigとか)のもともとの日本語入力:
    uimとanthyの組合せ(iBusには移行していない。uimが動いているから) (参照:quantum の記録: [FreeBSD] uim-anthyは動きます(FreeBSD 11.1、2018年2月)

1. やったこと

1.1 Portsからのインストール

Portsから次のものをインストールする。
/usr/ports/japanese/mozc-server
/usr/ports/japanese/mozc-tool
/usr/ports/japanese/uim-mozc
/usr/ports/japanese/mozc-el
つまり
ls -d /usr/ports/*/*mozc*
で見つかるもののうち、それっぽいものをインストールしたわけだ。

1.2 ~/.emacs.elを一行変更する

 (when (featurep 'mule)
    (set-terminal-coding-system 'iso-2022-jp)
-(set-language-info "Japanese" 'input-method "japanese-anthy")
+(set-language-info "Japanese" 'input-method "japanese-mozc")
 (set-language-environment "Japanese")
(本当はanthyの行もコメントアウトして残してあるけれど、ここではこの示し方で良いでしょう。手で書いたんだし)

1.3 ~/.uimを変更する。

-(define default-im-name 'anthy)
+(define default-im-name 'mozc)
(1行しかないファイルである)

1.4 Mateの設定

MateのSystem->Preference->Personal->Input Methodで設定画面(uim-pref-gtk)を開く。
「手書きの~/.uimがあるよ、上書きしちゃうよ」とポップアップが出るのでOKする。
Global SettingsのInput method swithingの
Enable IM sitching by hotkey
のチェックボックスを外す。(これについては後述)

これで動いた。

2. Enable IM switching by hotkeyについて

これは、今までのAnthy時代は、ONになっていたが、今回外した。
EmacsではCtrl+\で入力切替し、それ以外ではShift+Spaceで入力切替するというのを変えたくなかったためだ。しくみはさっぱりわからない。
(チェックをONにすると、EmacsではShift+Spaceでも入力が切り替わり、かつ左下の入力メソッド表示に表示されない状態になる。Firefox他では、Shift+Spaceで切り替えられれなくなる。)

3. その他設定したこと・調べたこと

3.1 予測変換Off

$ mozc_tool --mode=config_dialog
で設定画面を開けるので、ここで予測変換をOffにした。
(私は、思考が乱される気がして、予測変換は好きではないのだ)
Portsとは違って、mozcとtoolの間はハイフンではなく、アンダースコアであることに注意。
modeは、
$ mozc_tool --help
を自分で見るよろし。

3.2 辞書登録

$ mozc_tool --mode=dictionary_tool
でインタラクティブにできる。Categoryは右クリックで変えられる。
辞書はファイルからも取り込める。
よみ 漢字 品詞 備考
を1つ以上のスペースで区切られたファイルを、読み込ませればよい。

4. pkg upgradeをして動かなくなったらこれをする(2022年1月9日追記)

状況確認と対応の記録は、別記事として記載したので、そちらを参照のこと。

4.1 uim-module-manager --register mozc

# uim-module-manager --register mozc
する。

4.2 uim-pref-gtk

Global settingsのInput method deploymentのEnabled input methodsのEditでMozcをEnableにしてやってCloseする。uim-pref-gtkでApplyしてOKで閉じる。
以上

参考

2017年5月27日土曜日

[FreeBSD] firefox 53.0.3とuimとgtk3

0. 要旨

2017年5月、Freebsd環境で、firefoxを53.0.3にportupgradeしたら、日本語が入力ができなくなった。
pkgsrcめも - isihara@るるる.おーぐのぺーじ
「uimにgtk3オプションを入れてmakeし直すと、入力できる。(デフォルトでは入っていない。)」
の記述をヒントに、
portupgrade -N textproc/uim-gtk3
したら日本語入力できるようになった。

1. 環境

OS:FreeBSD 11.1-PRERELEASE #2
Firefox: 53.0.3にversion upした。(穴はさっさと塞ぐべし。)
input method: uim※

※uimは昔から使っている。
~/.xsessionに以下を書いている。
export GTK_IM_MODULE=uim
export XMODIFIERS=@im=uim
uim-xim &

2. 状況と検索と試行錯誤

Firefoxのバージョンを上げたら、日本語が入力できなくなった。
atril(mateのpdf/ps viewer、gnomeのevinceにあたる)の検索窓には日本語を入力できる。
ということは、input method側の話ではないのかもしれない。

検索ワードを変えて、色々googleで検索する。
"firefox 53 日本語";それらしいものはみつからない。
"firefox nihongo";日本語が入らない人のために、"nihongo"が入るようにしているページを期待したが、とくにない。
"firefox input method":add-onの話ではないのだよ。
"firefox uim": FreeBSD + uim-anthy + Firefox | どうでもいいブログ - TeaCup
その情報、重要で記録に残していただいてありがたいのだけれど、その部分はすでに正しくなっている。

"firefox gtk_im_module":似た状況の人はいないようだ。それにしても、最近はuimはトレンディでないのかしら。

"firefox uim",1か月以内: pkgsrcめも - isihara@るるる.おーぐのぺーじ
 www/firefoxでuimで日本語入力できない [2017/5/6]
uimにgtk3オプションを入れてmakeし直すと、入力できる。(デフォルトでは入っていない。)
という記述がある。

BSDの話だし、時期も近いし、やってみようと思ってportsを見ると
textproc/uim-gtk
textproc/uim-gtk3
と2つある。何だこれは!uim-gtkしか入っていないぞ!と textproc/uim-gtk3もportsからインストールする。

rebootしたらfirefoxで日本語入力できるようになった。
めでたしめでたし。

先達のたった2行で解決できたことに感謝し、私も記録を残すこととする。

3. 推測

firefoxはしばらく前から、gtk2とgtk3の両方に依存しているようだが、
Input Methodまわりがgtk2からgtk3に変わったのかな。
(/usr/ports/graphics/atril/Makefileを見ると、atrilはgtk2に依存しているようだ。)

2013年7月14日日曜日

LibreOfficeでの文字化け(character encodingの指定法)

背景

Microsoft Office からexportした、テキストファイルがある。
(FreeBSD 9.1上の)emacsで書き進めようと思って、テキストファイルにexportしたのだけれど、やっぱりLibreOfficeで作業をしようと、気が変わった。

起きた問題

$ libreoffice hoge.txt
で開いたら、文字化けしている。
character encodingの問題だと思うのだけど、設定するところが見当たらない。
$ emacs hoge.txt
は問題なく、「適当に」encodeを解釈して、きちんと日本語で表示されるのに。
お、左下を見るとS(DOS)と表示されている。
encodingがShift-JIS (S)で、改行コードがCR+LF(DOS)なのね。
Sの代わりにU(UTF-8)、E(EUC)はよく見かける。
(DOS)の代わりに:だと、改行コードはLF。

解決法

$ LANG=ja_JP.SJIS libreoffice hoge.txt
でLibreOfficeを起動する。ふだんは、LANG=Cで暮らしているのでそのままでは開けなかったらしい。
LANGとして選べるものは、FreeBSDでは、/usr/share/nls/の下にあるディレクトリの名前になっているもの。
日本語だと、ja_JP.SJIS ja_JP.UTF-8 ja_JP.eucがあった。
これで、LibreOfficeで文字化けせずに開ける。

改行コード

で、LibreOfficeで編集して、テキスト形式で保存したのだけど、追記した部分の改行コードがLFになっていた。もとからある部分はCR+LFのまま。
部分ごとに改行コードが違うのはよろしくないので、sedで直す。
$ gsed s/'\r'//g hoge.txt >tmp
$ gsed 's/$/\r/' tmp > hoge_new.txt
BSD sedではうまくいかなかったのでgsedを使う。Linuxユーザはもちろん普通のsedでOK。
この形式ならMicrosoft Officeでも問題なく開けるはず。

以上

2012年12月24日月曜日

portsにあるものを一般ユーザとしてインストールする方法(FreeBSD)

(2014年3月 加筆修正)(2016年7月 加筆修正)

自分がroot権限を持っていないFreeBSDマシンに新しいソフトウェアをインストールするにはどうしたらよいか。 あるいは、自分の管理下のマシンでも、一般ユーザとしてソフトウェアをインストールしたいことがある(例えば、portsシステムで不要なconflictを起こしたくないときなど)。

もちろん、大抵のものはソースコードが公開されていて、自分でコンパイルすればよいのだけれど、FreeBSDにインストールするには、大抵はMakefileの編集が必要で、結構大変。 せっかくportsとして先人が数多のソフトウェアをFreeBSDで使えるように整えてくれたのだから、一般ユーザもportsシステム使えたらいいのにと思う。

このような背景のもと、 最近、games/nethack34をユーザ権限で、homeの下にinstallしてみたので、記録し公開する。 (ユーザ権限でインストールした、真の理由は察してください。)

1. インストール場所の用意、portsの知恵を借りる。

mkdir ~/nethack/
mkdir ~/nethack/ports/
mkdir ~/nethack/ports/distfiles/
cp -r /usr/ports/games/nethack34/* ~/nethack/ports/

2. Makefile を編集する。

portsのdirectoryで普通にmakeしようとすると、rootにしか書き込み権限のないところに作業ディレクトリを作ろうとしたり、logを残そうとしたりしてmakeに失敗する。 だから、さっきコピーしたMakefileを編集する。

~/nethack/ports/Makefileの一番上に、以下を追加する。
DISTDIR= ${HOME}/nethack/ports/distfiles/
PREFIX= ${HOME}/nethack/
WRKDIR= /tmp/work/
TARGETDIR= ${HOME}/nethack/
PORT_DBDIR=/tmp/var/db/ports
INSTALL_AS_USER= yes

3. makeして、配置する。

(この部分を2016年7月に更新しました(次の節の第2段落も削除)。更新前の記述は、取り消し線つきで灰色にした部分。昔は手作業でやっていた。)
cd ~/nethack/ports/
make
で、/tmp/wrok/stage/${HOME}/nethack/の下に一通りのものができる。 これをhomeの下にコピーする。
cp -r /tmp/wrok/stage/${HOME}/nethack/* ${HOME}/nethack/
これでできあがり。必要ならばPathを通しておこう。
cd ~/nethack/ports/
make
make install
でもinstallは途中でsuをしようとして失敗するので、手で配置する。
mkdir ~/nethack/lib/nethack/
mkdir ~/nethack/bin/
cp -r /tmp/work/nethack-3.4.3/dat/* ~/nethack/lib/nethack/
cp /tmp/work/nethack-3.4.3/src/nethack ~/nethack/bin/nethack
この~/nethack/bin/nethackが実行ファイル。
実行したら、permがないとか、saveする場所がないとか怒られたので、以下も実行した。
mkdir nethack/lib/nethack/save/
touch ~/nethack/lib/nethack/perm

4. 補足

上のMakefileの編集内容は、nethackでなくてもどのportsでも同じはず。
nethackの場合は、実行ファイルに$PREFIXがあらわに書き込まれる。て、${PREFIX}/lib/nethack/の下のファイルを見に行くので、安易に/tmpとかしないように注意(もしかして$PREFIXでなくて$TARGETDIRかも)。
環境変数は、/usr/ports/Mk/bsd.*.mkあたり(とくにbsd.port.mk)を参考にすればよろしい。

install中にあらわれるsuの対処法は不明。unpackしたsourceのMakefile(ここでは/tmp/work/nethack-3.4.3/Makefile)を参考にすればよい。

それから、MASTERDIRが存在するportsのときは、MakefileのMASTERDIR変数も処置しておくことが必要なので忘れないように(例えば、nethack34-nox11のMASTERDIRはnethack-34)。場合によってはMASTERDIRもhomeの下にコピーしてしまってもいいかもしれない。

2014年3月追記
久しぶりに同じことをやろうとしたら、
Switching to root credentials to create /var/db/ports/games_nethack34
su: Sorry
と出て、うまく動かなかった。 バージョン管理システムが CVS から Subversion に変更になったことと関係があるのかな。 (参考:FreeBSDハンドブック 5.6. Ports Collection の利用
フォーラムでの議論を参考に、Makefileに
PORT_DBDIR=/tmp/var/db/ports
INSTALL_AS_USER= yes
と追加する必要があった。
なお、現在の環境は、9.2-STABLE #5 r260877Mである。

2016年7月追記
久しぶりに同じことをやってmakeまでしたら、 installすべきもの一式が、
/tmp/wrok/stage/home/_account_name_/nethack/
の下にbin、lib、shareのディレクトリなどに整理されてできあがっていることに気がついた。
(上記のパスは、Makefileで設定しているところの
${WRKDIR}/stage/${TARGET_DIR}である。)
したがって、「配置する」のが単純に
cp -r /tmp/wrok/stage/${HOME}/nethack/* ${HOME}/nethack/
とすれば良くなった。 (参考:FreeBSD portsのStageDir - msllの日記にportsであらわれるstageについて書いてあります。)
ちなみに
make install
とすると、packageを登録しようとして、権限が足りなくて何も起こらない。
なお、現在の環境は、10.3-STABLE #22 r300148である。

2011年12月27日火曜日

FreeBSDからCanon BJ S500で印刷できた

1. 前書き

諸事情により(インクジェットプリンタよりもマザーボードの方が寿命が短いらしい)、家マシンのプリンタ再設定をおこなった。ここに記録として残しておく。

注) マザーボード:AMD Duron 900MHzの載ったK7S5A(サムライの誘惑、2001年発売)で、2007年に全ての電解コンデンサを換装済み。それなのに、煙を出して死んでしまった。

2. 環境

マシン:FreeBSD 8.2-stable(amd64), portupgrade -N emulators/linux_base-f10/ 済み。
プリンタ:Canon BJ S500 バブルジェットプリンタ。2001年発売。2008年頃ヘッドを交換した。

3. マシンの設定

3.1 プリンタフィルタの配置、リンカの設定

http://cweb.canon.jp/drv-upd/ij-sfp/bjlinux201-s500.html から、bjfilterbjs500-2.0-1.i386.rpmをダウンロードする。rpmファイルの配布場所は変わるかもしれないが、canonのtopページから、ダウンロード→インクジェットプリンター→バブルジェットプリンター→BJ S500→Linuxでたどれたことも記しておく。うっかりソースファイルをダウンロードしてしまわないように注意。

手元の資料(参考文献)には、bjfilter-common-2.50-2.i386.rpmが必要との情報があるが、なくてもlprは問題なく動くので、見つからなくても大丈夫。

ダウンロードした、rpmを適当なところにおいて、sudo -sして
# tar xvf bjfilterbfs500-2.0-1.i386.rpm -C /compat/linux
# /compat/linux/sbin/ldconfig -r /compat/linux
する(tar でも.rpmを展開できるようになったみたい。便利!)。ldconfig をすることで、/compat/linux/bin/bjfilterが、*.soを見つけられるようにしてやる。
rpm(1)コマンドを使えば、ldconfig を手動でしなくても済むのだけれど、オプションが複雑なので、今回はこちらの方法で。

このままでは、/compat/linux/bin/bjfilterが、ライブラリが足りないよ、というので
# portupgrade -N graphics/linux-f10-png10
する。linux-base-fc4の人は、linux-png10だけれど、現在の標準のlinux emulatorはlinux-base-f10になっている。

これで、/compat/linux/bin/bjfilterが実行可能になった。

3.2 /etc/printcapの編集

以下を/etc/printcapに追記する。
lp|Canon BJ S500:\
:sh:\
:lp=/dev/ulpt0:\
:sd=/var/spool/output/lpd/:\
:if=/usr/local/libexec/canon:\
:lf=/var/log/lpd-errs:\
:mx#0:\
:sh:

3.3 /usr/local/libexec/canonの編集

以下の内容の/usr/local/libexec/canonを用意する。
#!/bin/sh
/usr/local/bin/gs \
-q -r600 -dNOPROMPT -dSAFER -sPAPERSIZE=a4 -sDEVICE=ppmraw \
-sOutputFile=- - quit.ps | \
/compat/linux/usr/local/bin/bjfilterbjs500 --full --imageres 600 --lgmon
exit 0

4. 印刷

あとは普通にlprで印刷すればできる。
linux-emulatorはまだ32bitなので、こういうときは便利だ。

参考文献

後藤大地著、FreeBSDビギナーズバイブル、ISBN978-4839918941、http://www.amazon.co.jp/FreeBSDビギナーズバイブル-MYCOM-UNIX-Books-後藤/dp/4839918945

2011年12月21日水曜日

ターミナルでwordファイルを読みたい

1. 前置き
FreeBSDで暮らしているところに、WordやExcelの事務書類がメールの添付ファイルで届くことがよくある。
しかし、OpenOfficeを立ち上げるのも面倒で、lessと同じくらいの気楽さで読めればいいと思っていた。

数ヶ月前に、lessdocというshellscript を書いて(私の過去の記事「wordファイル(.docファイル)をtxtに変換する方法 -> wvWare」http://quantum-public-diary.blogspot.com/2011/08/worddoctxt-wvware.html)、Wordファイルはターミナルで内容確認できるようにした。
それを拡張して、Excelファイルにも対応したので、ここに報告する。

2. install しておくべきもの
(1) textproc/wv
word形式のファイルをhtml形式やpdf形式などに変換するライブラリ。本家はこちらhttp://wvware.sourceforge.net/。portsから入れればよい。
(2) textproc/xlhtml
excel形式のファイルをhtml形式に変換するプログラム。本家はこちらhttp://chicago.sourceforge.net/xlhtml/。portsから入れればよい。
(3) japanese/w3m-img
コンソール(ターミナル)用のWeb browser。ここではhtml->txt変換に使う。軽いので普段もssh越しにブラウザを使いたいときなどに利用している。それから、うっかりXorgを壊してしまったときに、kon(japanese/kon2-16bit)と組み合わせて、最後のとりでとして検索するのに使う。
www/w3m-imgを入れてしまうと、文字エンコーディングなどのオプションが少なくて、日本語を使うときに困ると思う。
(4) 日本語を表示できるターミナル
私は gnome-terminal派だが、ktermでももちろんよい。lvの-Oオプションと、ターミナルの入力エンコーディングを合わせないと文字化けする。

3.原理
やることは、wvWareでhoge.docをhoge.htmlに変換し、w3mのdump機能を利用してtxtにし、lvでターミナルに表示する。

script はこれだ!!!

#!/bin/sh
# lessoffice.sh
export LV=-Ojis; 
for i; do
    TMPDIR=`mktemp -d /tmp/tmp_lessdocXXXX` || exit 1 
# for Word 
#    if file $i |grep Word; then
    if [ ${i##*.} = doc ]; then
        if ! wvHtml $i $TMPDIR/tmp.html; then
            echo "You need to install textproc/wv !!!"
        else
            w3m -dump $TMPDIR/tmp.html |lv 
        fi
# for Excel
#    elif file $i |grep Excel; then
    elif [ ${i##*.} = xls ]; then
        if ! xlhtml $i > $TMPDIR/tmp.html; then
            echo "You need to install textproc/xlhtml !!!"
        else
            w3m -dump $TMPDIR/tmp.html |lv 
        fi
# for other format
    else
        lv $i;
    fi
#  else
    rm -r $TMPDIR;
done
4.いいところ
(1) lvのincremental searchを使ったり、grep に流し込んだりできる。
(2) Xがいらない。ssh先で実行するときに、とくに快適。

5.追記
ファイルの種類の識別をファイル名に頼っているのは格好悪いのだけれど、file(1) を使うと、word(excel)のバージョンによっては、識別に失敗するので、この方法にしている。

2011年11月16日水曜日

gnomeのpop-upを使ってみよう->ネット中毒防止 pop-up

1.
家で余暇の時間を過ごしていると、うっかりネットサーフィンを続けてしまうことがある。前述(過去の記事「"Startup Applications" で立ち上げた xclock を "Always on Top" かつ "Always on Visible Workspace" にしたい。 -> devilspie を導入した」http://quantum-public-diary.blogspot.com/2011/07/startup-applications-xclock-always-on.html)のようにあなろぐ時計を見やすい位置に表示しているにもかかわらずだ。そこで、gnomeが立って2時間経過したら、「もうネットの時間はおしまいよ」とpop-upで教えてくれるスクリプトを書いた(普段、家のPCの電源を入れっぱなしにすることはないのだ。で、電源を入れたら自動login して、gnomeを立てて待っていてくれるシステムになっている)。

2.
zenity (http://live.gnome.org/Zenity)はコマンドラインやシェルスクリプトからGTKのダイアログボックスを開くことを可能にするツールである。使い方は「試験運用中なLinux備忘録(http://d.hatena.ne.jp/kakurasan/20070716/p1)」に詳しい。

が、私には細かいことは必要ないので、一番基本的な使い方をしている。

$ zenity --info --text "It's time to leave PC"

としてみればpop-upが出せる。

3.
pop-upの出し方がわかればあとはスクリプトを書くだけだ。
以下のスクリプトを書いて保存しchmod +xして、gnomeのstartup applicationsに登録する。

#!/usr/local/bin/bash
d=`date +%w`
if [ $d -eq 0 -o $d -eq 6 ]; then
    exit 0;
fi
sleep 7200;
zenity --info --text "It's time to leave `hostname -s`"

土曜と日曜は2時間以上ネットしてもいいとのポリシーを採用した。
2時間で pkill gnome-sessionとかshutdownしようかとも思ったけど、過激過ぎるのでとりあえずは警告のみで運用する。

2011年10月25日火曜日

freebsdでflashを見るのは簡単になった

セキュリティ上の安全性のために、firefoxのversionを上げたのだが、
(firefox 3.6 -> firefox 7.0.1、portupgradeを使用。
portupgrade firefox の前に portupgrade nsprが必要だった。)
linux-flashplugin(linux-f10-flashplugin-10.2r159.1)、
nspluginwrapper(nspluginwrapper-1.2.2_8)は
そのままで、youtubeが見られた。

昔はgnashをいれてみたり、youtubeは見られなかったり、
大変な苦労をしていたが、今は楽になったなあ。

これは、portdowngradeする羽目になったときのためのversionのメモ。

2011年9月4日日曜日

電源ボタンを入れて待ってたら、gnomeが立ったらうれしい(boot時にautologinする方法)

1.背景
家のマシンに限った話をすると、
  • 使い終わったら電源を落とす。
  • 私しかユーザーはいないし、sshされない。
  • 使うときは、電源を入れるとlogin画面で止まっていて、loginしてstartxとtypeし、gnome環境で生活する。
という日々を送っていた。

しかし、
電源ボタンを入れて待っていたら、gnome が立って欲しい!
ので設定した。

2.概要
/etc/gettytabと/etc/ttysを編集し、ttyv4に自動ログイン(autologin)し、~/.bash_profileでttyv4にloginしたときはlogin直後にstartxするように設定する。

3. 自動ログイン
/etc/gettytabと/etc/ttysを以下のように修正する。

--- /etc/gettytab.orig    2011-09-03 20:59:47.000000000 +0900
+++ /etc/gettytab    2011-09-03 21:08:25.000000000 +0900
@@ -164,6 +164,10 @@
 P|Pc|Pc console:\
     :ht:np:sp#115200:

+P1|Pc1|Pc1 console:\
+    :al=username:ht:np:sp#115200:
+
+
 #
 # Wierdo special case for fast crt's with hardcopy devices
 #

--- /etc/ttys.orig   2007-01-12 16:42:20.000000000 +0900
+++ /etc/ttys    2011-09-03 21:08:55.000000000 +0900
@@ -37,7 +37,7 @@
 ttyv1    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv2    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv3    "/usr/libexec/getty Pc"        cons25    on  secure
-ttyv4    "/usr/libexec/getty Pc"        cons25    on  secure
+ttyv4    "/usr/libexec/getty Pc1"        cons25    on  secure
 ttyv5    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv6    "/usr/libexec/getty Pc"        cons25    on  secure
 ttyv7    "/usr/libexec/getty Pc"        cons25    on  secure
patch形式になれていない人へ
diff の読み方は、/etc/ttysの例でいくと、
@@ -37,7 +37,7 @@ は「/etc/ttys.origの37行目から7行分と/etc/ttysの37行目から7行分を表示しています」という意味だ。
そのあとは、「-で始まる行は、ttys.origにあってttysにない行、+で始まる行はtty.origにはなくてttysにはある行です。他の行は両方のファイルにありますが、どの行かわかりやすい用に表示しています」という意味だ。
つまり、40行目のPcをPc1にするように、エディタで編集しろと言うことだ。

上は
$ diff -u /etc/ttys.orig /etc/ttys
の出力をコピペしたもので、unified context という形式で、patchを当てるときに
使う形式でもある。diffとpatchのマニュアルに目をとおしておくこと。

これでboot直後に、ttyv4に自動ログインするようになった。
参考 昔々のhandbook http://docs.freebsd.org/doc/3.0-RELEASE/usr/share/doc/ja/handbook/handbook172.html

4.gnomeをたてる
私は、default shell としてbashを使っているので、loginしたときに~/.bash_profile が実行される。なので、~/.bash_profileに以下のように追記する。

if [ `tty` = "/dev/ttyv4" ]; then
        startx
fi
これで ttyv4 でログインした時に限り、ログイン直後に startx が実行されるようになる。

csh、tcshの人へ
.login に正しい書式で、同様に書けばよろしい。if文の書式は自分で調べてること。

以上、/etc/ttys、/etc/gettytab、~/.bash_profileの3ファイルを書き直せば、
電源を入れると、gnomeがあなたを待っている。さあrebootしよう。

5.注意
UNIXマシンに詳しくない同居人がいる人は、あなたのプライバシーが暴かれる可能性が増大します。電源を入れて黒い画面で login: と表示されたら手も足もでない人は多いですが、gnomeが立っていたらファイルを見ることは簡単です。
しかし、パートナーがUNIXに詳しい場合はLiveCDで起動して、HDDをmountしてすべて見ることができるので、あまり危険度は変わりません。気にしないでよいでしょう。

Xserver をlocalhostのclient以外が使う場合は注意が必要です。上のように、rootでautologinして、、、と思うかもしれませんが、うまくやらないと、正当なユーザ以外でもXserverを使えるようになったり、他のユーザのウインドウをとったりすることができてしまうようになります(例えば xinit 以外で Xserver を立てた場合など)。
上記のように、個人ユーザで startxする分には大丈夫ですが、気をつけてください。


2011年8月31日水曜日

FreeBSDにlinux由来のソフトウェアを入れようとすると、perlのpathのせいでしくじる

 1.FreeBSDにlinux由来のソフトウェアを入れようとすると、perlのpathのせいでしくじる

今日は、ffmpeg を install しようとして、失敗した。
(portupgrade は楽だが、成功率は100パーセントではない)

multimedia/ffmpeg の場合は、texi2pod.pl の一行目に
#!  /usr/bin/perl -w
とあるのだが、FreeBSD での perl 本体の場所は、/usr/local/bin/perl である。
($ type perl
としてみるがよい。昔は/usr/bin/perl だったらしいが、少なくとも8.2では/usr/local/bin/にある。)

perl script の path が正しくなくてmakeが通らないことは、ports systemを使わないでlinux用のソフトウェアを source codeからcompile、installをしようとするときにも、しばしばある。

2.対策
(1)
source codeがあるならば、*.pl という名のファイル内の "/usr/bin/perl" を "/usr/local/bin/perl" に置換してしまえばよいのだが、毎回やるのは面倒くさい(一行ですむけど)。よってこの方法は不採用。

(2)
# ln -s /usr/local/bin/perl5.14.1 /usr/bin/perl
# ln -s /usr/local/bin/perl5.14.1  /usr/bin/perl5
一見やる気ないが、これで万事OK。

(3)
(2)でいいのだが、perlをportupgradeするたびに(2)をするのは面倒くさい。なので /usr/local/etc/pkgtools.confの AFTERINSTALL のところに
        'lang/perl5*' =>
          'ln -s /usr/local/bin/perl5* /usr/bin/perl',
と書いておけば、perlのversionが6に上がるまでは安泰だ。

3.参考文献
ports の不具合の報告 http://www.freebsd.org/cgi/query-pr.cgi?pr=131331

4.追記
ふつうは、perlのmake optionで
USE_PERL on
になっているので、上記対策は必要ないらしい(/usr/ports/lang/perl5.14.1/Makefile を参照)。けれど、なぜか/usr/bin/perl がなかった時のために記事は残しておく。pkgtools.confは編集しないで様子見がよろし。

2011年8月20日土曜日

コンソール画面で日本語で生活するための小道具

私の自宅マシン(FreeBSD 8.2、amd64)は、年に3回くらいgnomeなどのportupgradeをしくじって黒い画面で暮らすことになる。しかし、gnomeが壊れていても、日本語のメールの読み書きとgnomeを復旧するためのネット情報の閲覧くらいはしたい。
そんな願いを叶えてくれるのが、konとemacsとwanderlustとw3mだ。

1.kon (japanese/kon2-16dot)
konは漢字(日本語の文字)をコンソールの上に表示するためのプログラムだ。
(KON2 is a program for displaying Kanji (japanese characters) on the
console of Linux/FreeBSD. pkg_descrより)
現在 FreeBSD ports では32bit にしかインストールできなくなっているが、Makefile の
ONLY_FOR_ARCH=i386
の行をコメントアウトすれば、エラーも出ずにインストールできた(うちの子は64bitなのだ)。

kon は入力の文字コードはEUCを受け取るので、実行するプログラムのオプションが必要となる。たとえば黒い画面で
$ kon
$ lv -Oeuc japanese.txt
とすると、ファイルの中身が確認できる
$ emacs japanese.txt
は適当に出力を調整してくれるようで、出力オプションなしで大丈夫。wlもあくまでもemacs の内側で走るので、いつもどおりに使える。入力切替はいつもどおり ctrl+バックスラッシュ。

2.w3m (japanese/w3m-img)
まず、w3mは www/w3m-img ではなく japanese/w3m-img がインストールされているかを確認すること。www/w3m-imgは指定できるオプションが少なく、出力をEUCにすることができない(大変なだけだとは思う)。
$ kon
$ w3m -Oe google.co.jp
で検索する。tabキーでリンクやテキストボックスを移動できるので、テキストボックスを選択してReturnキーを押すと、窓下部に TEXT: と入力受付するのでテキストを打ち込もう。
日本語入力の方法は知らない。webメールを使っていたりして、日本語を書きたい人、ごめんなさい。

(うわさでは、uim-fepをなんとかすればいいらしい)
(失敗の記録だが、www/emacs-w3mをでemacsの入力を使おうと思ったが、w3m-m17nとja-w3m-imgが conflictして、これもうまくいかない。)
 
Xは壊れやすいし、もしもの時のためにインストールしておくと安心できる。

参考
kon 本家サイトが見つからない。
w3mの多言語拡張している人のページ。ありがとうございます。 http://www2u.biglobe.ne.jp/~hsaka/w3m/patch/README.m17n-ja
コンソールが好きそうな人たち。友達になりたい。
ある nakagami の日記 http://nakagami.blog.so-net.ne.jp/2006-08-08
oogatta の勉強日記 http://d.hatena.ne.jp/oogatta/20100520/1274311272

(2011-10-31追記)
32bitのシステム(kernel+userland)を64bitマシンにつないでも基本的には動くのだが、konは立たなかった。

より詳細に書くと、今のマシンのHDD不具合で、昔32bitマシンで使ってい(てsmart的にまずそうになったから、換装して0で埋めて捨てようと思ったまま放置してい)たHDDを差してみたら、konは灰色モザイク画面になってしまう。kernelもgnomeも完全に動くのになあ。ちなみにportupgradeしてもダメだった。うーん残念。

2011年8月12日金曜日

FreeBSD に手動で font を install する方法

1.IPA font
私は、FreeBSDをメインマシンのOSとして利用していて、かなり快適に暮らしている。(マウスを使うのが苦手なのと、セキュリティー面で安心感で、WindowsよりFreeBSDが好きだ。)

そんな日常生活を送るのに不可欠なものが、"フリーな"日本語フォントである。幸いなことに独立行政法人 情報処理推進機構(IPA) http://www.ipa.go.jp/ が無償でIPAフォントを配布しており、FreeBSD では ports からinstall することができる。(明朝、ゴシック)と(固定幅、変動幅)の直積、計4種類がある。

しかし、2チャンネルの芸術作品AAは、MS Pゴシックで表示されることを前提としており、IPAPGothic では表示が崩れてしまう(どちらもPropotional font ではあるが、変動幅の設定が異なるため)。

MS Pゴシックと同じ変動幅を持つフリーなフォントは古くはモナーフォントがあるが、現在は開発が停止しているらしいので、今回は IPAモナーフォントを install した。

2.install の方法
(1) download
IPAモナーフォントの本家サイトhttp://www.geocities.jp/ipa_mona/から、opfc-ModuleHP-1.1.1_withIPAMonaFonts-1.0.8.tar.gzをダウンロードする。

(2) install
$ tar xzvf opfc-ModuleHP-1.1.1_withIPAMonaFonts-1.0.8.tar.gz
$ sudo -s
# mkdir /usr/local/share/font-ipamona/
# mv opfc-ModuleHP-1.1.1_withIPAMonaFonts-1.0.8/fonts/*.ttf /usr/local/share/font-ipamona/
# ln -s /usr/local/share/font-ipamona/* /usr/local/lib/X11/fonts/OTF/
 (OTF はOpen Type Font の略なのでOTFの下にした。どこでもいい。)
(3) ためしてみよう
firefox でアスキーアートのあるページ (例:あなろぐま http://l19.chip.jp/chidejika/)を表示して
Edit -> Preference -> Content -> Fonts & Colors で IPAMonaPGothic を選んでみよう。

(4) トラブルシューティング
/etc/X11/xorg.conf のSection "Files" に FontPath "/usr/local/lib/X11/fonts/OTF/" がなければ追記すべし。

3. おまけ
フリーの日本語フォントみたいな、作るのにお金はかかる(手作業だから、お金を払って外注する)けど、あればみんなが役に立つことは、税金でやるべきことであると思う。

4. 参考文献
IPAフォントのページ http://ossipedia.ipa.go.jp/ipafont/index.html
IPAフォントと異字体 http://ossipedia.ipa.go.jp/ipamjfont/
IPAモナーフォントの本家 http://www.geocities.jp/ipa_mona/
アスキーアートの例(あなろぐま) http://l19.chip.jp/chidejika/

2011年8月7日日曜日

wordファイル(.docファイル)をtxtに変換する方法 -> wvWare

非windows ユーザーにとって、よくあるイラっとする瞬間の一つは電子メールでwordファイルが送られてきたときである(同じくらいよくあるのイラっとする瞬間は、flash が固まって、$ pkill npviewer するときである)。

そんな時は
1.windows マシンを立ち上げて、word を立ち上げて読む
編集する必要がある時は、この方法に限るのだが、非力なノートPCが立ち上がるまで待つの苦痛である。
あと、ウイルス対策はしてあるとはいえ、ちょっと怖い。

2.OpenOffice で見る
レイアウトは崩れるとはいえ、内容を確認する程度はできる。しかし、出張先などで、手元のマシンが非力なノートPCだったりすると、立ち上がるまで待つのが苦痛である。
ウイルス感染の確率はかなり下がるのは安心。

そして最近第3の方法としてwvWare の存在を知った

3.wvWare
wvWare とは「word document を変換するための library 」であり、AbiWord(GNOME Office に含まれるフリーでオープンソースなワードプロセッサ)の一部である。
http://wvware.sourceforge.net/
wvWare 一群の application を使うことで、word やpdf などの保存形式のファイルを、html や latex source など、unix freindly な txt 形式に近いものに変換することができる。
windows 用の同様の機能を持つものに xdoc2txt がある。

(1). install の仕方
# portupgrade -N textproc/wv
ちなみにwv2はライブラリのみインストールで、executableはできないので注意。

(2). 使い方
$ wvHtml input.doc output.html
で変換できる。ブラウザで見ると段組みや太字なども保たれている。
$ wvText input.doc output.txt
は手軽に lv で見るのにおすすめ。詳しくは
$ man wvWare
するよろし。

(3). 応用
手元にあるマシンが、Xが死んでいる、あるいはXやopenofficeが載らないくらい非力なとき
kon(日本語をconsole で表示するプログラム、japanese/kon2-16dots、32bit machineのみ)+emacs(editors/emacs)+wanderlust(emacs 用のmailer、imapにも対応、mail/wanderlust)+wvHtml+w3m(pager/text-based WWW browser、www/w3m)で
黒い画面で日本語の手紙を読めて、wordの添付ファイルも読める。

Xは載るけれど、OpenOfficeを使うには非力な時、あるいは待てないとき
wvHtml+web browser(firefoxやepiphanyなど)で word ファイルが読める。

メールサーバにlogin できるシステムで、wvWareとw3mを入れてもらえた場合
ssh することで、添付ファイルを手元にダウンロードしないで内容を確認できる。

参考
FreeBSD ports最新ニュース textproc/wv http://blog.livedoor.jp/freshports/archives/1897769.html
wvWare の公式サイト  http://wvware.sourceforge.net/
2php : wvWare(wvHtmlなど) のインストールの仕方・使い方 http://2php.jp/install/wvware.html
Abiword の公式サイト http://www.abisource.com/ 
xdoc2txt の公式サイト http://www31.ocn.ne.jp/~h_ishida/xdoc2txt.html

追記(20110927)
wvTxetは内容に日本語が含まれるとしくじることがあるので、txtファイルを作るにはw3m(もちろん日本語対応の japanese/w3m-img/)を使った方が便利そうだ。そして、ユーザーインターフェースとしてはlessが一番便利そうだ。以上をふまえて、lessdocという自作wrapperで、わたしは暮らしている。

#!/bin/sh
# lessdoc.sh
for i; do
    TMPDIR=`mktemp -d /tmp/tmp_lessdocXXXX` || exit 1 
    if ! wvHtml $i $TMPDIR/tmp.html; then
    echo "You need to install wvWare !!!"
    else
    w3m -dump $TMPDIR/tmp.html |lv -Outf
    fi
    rm -r $TMPDIR;
done

2011年6月24日金曜日

uim* を v.1.7 にあげたら日本語が入力できなくなった -> portdowngrade した

ひさしぶりに ports を上げてみた。 2011年6月3日にチェックアウトして。
そうしたら、日本語入力ができなくなったのだ。

今回上げたもののうち怪しいのは以下の uim 関係の4つ
ja-uim-anthy-1.5.6_3                <   needs updating (port has 1.7.0)
uim-1.5.6_3                         <   needs updating (port has 1.7.0)
uim-gnome-1.5.6_4                   <   needs updating (port has 1.7.0)
uim-gtk-1.5.6_3                     <   needs updating (port has 1.7.0_1)

オプションを変更したりしたけれど、どうにもこうにも直らない。
(あとで分かるのだけれど、uimの --without-anthy は関係ないようだ)
しょうがないので portdowngrade で元に戻して一件落着。
(もとはv.1.5だったけど、v.1.6で大丈夫だったので、今はv.1.6が入っている)
anoncvs.jp.FreeBSD.org はcvsに失敗するから、ほかのサーバーを試してみよう。

# export CVSROOT=:pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs/
# cvs login (パスワードはanoncvs)
# portdowngrade japanese/uim-anthy (v.1.6.0を選んだ他も同じ)
# portdowngrade textproc/uim
# portdowngrade textporc/uim-gtk
# portdowngrade textproc/uim-gnome
# pkgdb -uU
# portupgrade -f uim*

これでまた日本語が入力できるようになった。めでたしめでたし。

参考ページ
portsのダウングレード(FreeBSD覚書)
 http://ml37.exblog.jp/3447065/
portdowngradeをためす(tota diary)
 http://rtfm.jp/~tota/diary/20031204.html#p05
Anonymous CVS(FreeBSD handbook)
 http://www.freebsd.org/doc/ja/books/handbook/anoncvs.html