Linux Tips

ここでは他のトピックと違って,一つの大きなトピックを設けるほどはないものの,ちょっとしたメモ書きくらいはしておいた方が役に立つようなほんの些細な情報を載せていこうと思います.こういったちょっとしたことが忘れてしまってどうにもできなくなったりしたりすることって結構多いんですよね.小さな事柄だとメモするのすらおっくうになってしまいますし.


exit資料室に戻る

ノートPCの外部機器(プロジェクタ等)への出力

WindowsやMacintoshのノートパソコンだと,プロジェクタなどの外部機器へコネクタを接続した瞬間に画面が表示されたり,そうでなくてもファンクションキーなどを押したりコントロールパネルで設定を変更することによって簡単に出力ができます.ですが,それがlinux搭載のノートPCだとしたらどうでしょう?プレゼンにPowerPointを使っている人ならlinuxは使わないでしょうし,TeXで書いている人でもpdfにしてしまってからWindowsなりMacなりで表示している人が多いでしょう.しかし,たとえばlinux上で開発したプログラムが実際に走っているのを表示したりするには,やはりlinuxが走っているノートPCを直接接続するのがよいでしょう.そこで,ここではlinuxのノートPCのXの画面を外部機器に出力する方法を記します.ここではdebianを前提とした表記をしますので,他のディストリビューションを使っている方は,適宜読み替えてください.

比較的簡単にできますので,linuxだからといって臆することなく試してみてください.ただし,全ての人にうまくいくとは限らないようで,これを試してみてもうまくいかないという人もいるにはいるようです.そのような人はあきらめてみる前に,確実にlinuxの再起動を試してみてください.「なんでXF86Config-4の変更がlinuxそのもののリブートと関係するのだ」と思うかもしれませんが,外部に出力する,しないという判定はどうもlinuxの起動時に決定されているようで,XF86Config-4におまじないを書くのは,Xの画面を出力するためだけのもののようです.ですから,Xだけ表示されるように変更してもlinuxそのものを認識していなければどうしようもないので,再起動が必要となるのでしょう.


トップに戻る

Acrobat Readerのインストール

現在もっとも普及している汎用ドキュメント形式はAdobe社が仕様を策定したPDFファイルでしょう.PDFとはPortable Document Formatの略で,「汎用文書フォーマット」とでも訳すのでしょうか(物理屋さんは確率密度関数(probability density function)のほうに馴染みがあるかもしれません).その名の通り,Windows,MAC,LinuxなどOSを選ばずに文章を“比較的”高い再現性で読み込むことができるので(フォント埋め込みでないファイルは,読み込むプラットフォームのフォントで文章の体裁が変化する),基本的にWindowsでないユーザにはありがたいです.LinuxではxpdfというX上でpdfを読むソフトが存在していますが,Adobe社も一応Linux向けのAcrobat Readerを出しています.しかしこのソフトはノンプロプライエタリではないので,debianの標準セットには入っていません.そのため,別のapt-lineから取得する必要があります.現時点で一番新しいのはバージョン7との噂もあるのですが,ここでは バージョン5のインストールの仕方を記述します.

Tips に書くにしてはなかなか骨の折れる作業でした.これというのも,ひとえに Acrobat5 にゴシック体が含まれていないという意味のわからない Adobe の方針のせいです.Macromedia 買収記念に何とかしてくださいよ,Adobe さん.ちなみに,いろいろな日本語フォントのpdfファイルを読むに当たって,「○○フォントは見あたらない」のような英語のメッセージとともに,開いたファイルの日本語が「・」で置き換わってしまうという場合があります.この場合は,ホーム下の .adobe ディレクトリ(~/.adobe)にあるファイル(AdobeFnt06.lst.HOSTNAME; HOSTNAMEはあなたのマシン名)のなかから,Fontnameに○○フォントが含まれている %BeginFont から %EndFont までを削除してしまってください.すると,次からはちゃんと読めるようになります.

ところで,初期設定だと起動の度に毎回著作権関連のメッセージが表示されることになります.著作権は大切な権利ですが,Adobe のねらい通り pdf が普及するにつれて Acrobat を起動する回数が多くなり,ゆえにその画面を毎回消去するのがおっくうになります.そのため,このメッセージをデフォルトで表示されないように変更した方が,頻繁に Acrobat を使う方には好都合でしょう.

ホーム下にある .acrobat ディレクトリの中にある prefs ファイルをエディタ等で開きます.

$ emacs ~/.acrobat/prefs

そこで検索などをして,"/avpShowUnixEula [/b true]"という行を見つけ,そこの true を false に書き換えます.

/avpShowUnixEula [/b true] → /avpShowUnixEula [/b false]

これでセーブすると,次回起動時から件のメッセージは表示されなくなります.

補足(2006/04/04, 2006/04/24)

Acrobat Readerは現時点では最新バージョンは7.0.5となっており,名前がAdobe Readerに変わっています.バージョン7.0.0はLinuxにとって致命的なセキュリティホールがあるので,最新のものを使った方がよいでしょう.このパッケージに関してはhttp://www.argv.org/~chome/acrobat.htmlにインストールの仕方が書かれています.Adobeからダウンロードしてくるtgzファイルはバージョンごとに名前が違うので,適宜置き換えて適用してください.

また,インストールディレクトリが /usr/local/Adobe/Acrobat7/Resource以下に変更されていますので,ダウンロード先は読み替えてください.


トップに戻る

gv(gs)のフォント変更

debianではTeX環境をまとめてインストールするには ptex-bin パッケージを入れれば,一通りのものは揃います.しかしTeXファイルをコンパイルしてできたdviファイルを印刷する際には dvips を用いて ps(ポストスクリプト)ファイルにする必要があります(dvipsで直接プリンタに命令を送る際にも,一旦ポストスクリプトにする点では全く両者に差はありません).そのポストスクリプトファイルのビューワでもっともポピュラーなのは gv です.人によっては gnome-gv を使うかもしれませんが,ここでは同等と見なして説明は割愛します.ここでは gv のインストールと日本語化,そしてフォントの変更の説明を書こうと思います.

一般にはこれでgvのフォントが変更されます.ですが,それはあくまで変更先のフォントが /etc/vfontcap に存在していればの話であり,そうでない場合は一手間二手間必要となります.その手順を以下に記します.


トップに戻る

XIM使用時にemacsのミニバッファに出る文字が邪魔な問題

私はXIM経由でemacsを使用していますが,その際に「あ連R漢」だとか「ATOK」だとかの表示がミニバッファに表示されてうっとうしいと思ったことはありませんか?YaTeXなどを使っていると良くミニバッファ部分の表示を見たり,そこに書き込みをしたりすることが多いのですが,常に先ほど述べた文字列が上面に出てきているためにミニバッファの内容が全く見られず,大変難儀をしていたのです.

この解決方法としてはもちろんXIMを使わずにiiimecfなどを用いるという選択肢もありますが,ここではミニバッファにデフォルトで表示されるXIMのメッセージをオフにすることができるパッチを用いてemacsをコンパイルする方法を紹介します.なお,emacsはソースで18MB程度もあり,コンパイルするにはかなりのマシンパワーが必要となります.私はPentium4 2.53GHzのパソコンですが,コンパイル完了までおよそ6,7分かかりました.


トップに戻る

gripなどのGlibアプリケーション使用時にフォントがUTF-8になってしまう問題

私は音楽CDをエンコーディングするときにgtkベースのgripを使っていますが,日本語のCDからリッピングするときにCDDBから日本語のアルバム情報を手に入ると,エンコーディングの際におかしな挙動を示す上に,出来たファイルが文字化けしているということが起こりました.どうも調べると文字化けの原因は出力コードがUTF-8であることのようです.[設定]→[その他]→[ファイル名に日本語(EUC-JP)を使用する]にチェックを入れているはずなのにおかしいなあ?と首をひねっていると,どうやらGlibを用いたアプリケーション(gripも)はデフォルトで文字コードはUTF-8が選ばれてしまうようなのです.そこで,この出力を現在の言語ロケールに変更する方法を記します.

解決法は簡単で,とある環境変数をセットするだけでよいのです.すなわち,

export G_FILENAME_ENCODING=@locale
もしくは
export G_BROKEN_FILENAMES=1

とすれば良いだけです."@locale"は現在使用している言語のロケールを意味する特別なトークンです.環境変数LANGで指定されたロケールが @locale に代入され,私の場合だと,EUCとなるわけです.あとはこれらを .bashrc などに(Bourne Again Shell を使っている人は)記述しておけば,毎回 export する手間が省けます.

G_FILENAME_ENCODING=@locale と G_BROKEN_FILENAMES=1 は同様の働きをしますが,G_FILENAME_ENCODING の方が優先されるので,G_FILENAME_ENCODING だけで十分でしょう.

ちなみにKDEボタン(って言うんですかね?Windowsでいけばスタートボタン,gnomeの人ならば足形のアイコンのやつです)から grip を起動すると,これらの環境変数は読まれませんので,コンソールなどから grip を起動した方が無難です.


トップに戻る

CtrlとCaps Lockのキーバインドを交換

linuxユーザはWindowsユーザに比べてCtrlキーを使う頻度が圧倒的に高いのですが,世の中に出回る大半のPC用キーボードはCtrlキーが左下の隅の方に押しやられていて,大変に使いにくく思っている方も多いでしょう.その反面,Caps Lockなんていうおおよそ使わなさそうなキーがAの隣という特等席で,かつキーの大きさもCtrlよりも大きい場合なんかあったりして,たいそう腹が立つのです.Happy Hackingのようなlinuxユーザ向けに作られたキーボードならいざ知らず,通常のキーボードを用いている方はどうにかしたいと思っているはず.その解決策は意外に簡単なので,お困りの方は是非試してみた方が良いですよ.

コンソールでのキーバインドを交換する

コンソール上,すなわちXを起動する前の状態でCtrlとCaps Lockを交換する方法です.グラフィカルログイン(gdmだとかkdmだとか)を用いている人は関係ないと思いますので,必要ないと思います.さて,まず emacs などのエディタで /etc/console-tools/remap を開きます.ルート権限が必要です.そのファイルは sed 形式で書かれていますが,通常ですとデフォルトでCtrlとCaps Lockを交換する書式がコメントの形で書かれているので,それをコメントアウトすれば良いだけです.それが無い場合は以下の文をremapの中に書き足してください.

s/keycode  58 = Caps_Lock/keycode  58 = Control/;

その場でキーバインドを交換したい方は,Xが起動しているならば終了して,以下のコマンドをルートで実行します.

# /etc/init.d/console-screen.sh

Xでのキーバインドを交換する

先ほどの処置を施しても,Xを起動すればキーバインドは元のままです.そのため,XはXで別の設定をしなければなりません.適当なエディタで /etc/X11/XFF86Config-4 を開き,キーボードの設定欄に以下の文を追加します.

Option		"XkbOptions"	"ctrl:swapcaps"

キーボードの設定は"Input Device"セクションにあります."jp106"や"Keyboard"などで検索するとすぐに分かると思います.あとはXを再起動するか,xrdbを用いるかすれば設定は反映されます.


トップに戻る

EPSファイルの余白の切り取り

TeXを使っている人は日常的にグラフィック形式としてEPS(Encapsulated PostScript)形式を使用していると思います.ソフトによっては,EPSファイルを出力する際にプリント時のページのサイズ(A4など)で出力してしまうために,グラフがページにぴったりでないと上下左右に余白が空いてしまいます.この余白はEPSファイルを読み込めるグラフィックソフトでEPSファイルを読み込んだ後に,Bounding Boxと呼ばれるEPSファイルのグラフ領域の指定を変えて再びセーブすれば余白が縮まったファイルが得られます.ところが,その作業が手動ともなると,同じようなタイプのグラフであっても,ファイルによって余白の空き方がまちまちという,極めて不都合(見苦しい)状態になります.それを解消するためには,エディタでEPSファイルを開き,Bounding Boxの大きさをうまく合うように二次元座標を直接編集すると言う手もあります.しかし,これもいちいち適切な座標を知るためには適切なソフトで読み込んで調べなくてはならないし,第一手間がかかります.そこで,今回はソフト側が自動で余白を切り取ってくれる方法を紹介します.なお,今回はやや"Linux" Tipsという趣旨からは外れますが,ご了承ください.

EPSファイルはおそらくLinux上やMacで作られていると思います.ですが,今回はWindowsを立ち上げて,そこに GSview というソフトをインストールすることから始めます.GSviewのインストールはこちらのページなどを参考にしてください.私は現在バージョン4.4を用いています.

次にGSviewを立ち上げて,余白を切り取りたいEPSファイルを読み込みます.もしここで図が90度回転していたり図全体がうまく表示されなかった場合には,まずメニューの[Options]から[EPS Clip]にチェックを入れます.そして,メニューの[Orientation]から[Portrait]を選択します.すると,おそらく正しく表示されるようになるはずです.あとは,Bounding Boxがどこにあるかを確認するため,メニューの[Options]から[Show Bounding Box]にチェックを入れます.

これでグラフィックは読み込まれました.後は,メニューの[File]から[PS to EPS]を選択します.表示されたBoxの下部の[Automatically calculate Bounding Box]というチェックボックスがチェックされていることを確認してから,[Yes]ボタンを押します.これで,新しく保存されたEPSファイルには余白が省かれています.なお,上書き保存は出来ませんので,適当に名前を変えるか,異なるフォルダに保管してください.

(追記)Linuxにも gsview があるようです.ですが,パッケージは rpm 形式になっていますので,alien などで deb パッケージに変換してからインストールする必要があります.ただし,管理者がメンテナンスをしている deb パッケージと異なり,必ずしもうまく入るかどうかはわかりません.なお,起動後に,読み込む動的ライブラリの名前を変更する必要があります.[Options]→[Advanced Configure]→[Ghostscript Shared Object]を libgs.so から libgs-afpl.so に変更してください.Windows版とは完全に一致していないせいか,私が試してみた感じでは,[PS TO EPS] で変換した後のファイルを読み込む際に,エラーメッセージダイアログが4つほど出ています.しかし,そのどれもがコメント文(%%で始まっている文)に対するエラーのため,実用上は問題ないと思います.また,Bounding Box の自動判定の値がWindows版のGSviewと少し異なっています.ですが,それは1程度のずれなので,これも実用上は問題ないと思います.


トップに戻る

Kaleidagraphで作ったグラフをEPSファイルに保存する

有名なグラフソフトと言えばKaleidagraph(以下,カレイダグラフ)を挙げる人は多いでしょう.私も研究で得られたデータからグラフを作るためによくカレイダグラフを用いています.私は主に文章はTeX(正確にはLaTeX2e)で書いているので,グラフを文章中に貼り込むためにはEPS形式でなければなりません.ところが,カレイダグラフはあろうことかEPSファイル形式での出力をサポートしていないのです!HULINKSはAdobeが嫌いなのでしょうか?それとも使用料を払うのを嫌がったのでしょうか?こうなると,選択肢は二つに一つ.カレイダグラフを使わないか,無理矢理なんとかしてEPS形式で出力するかです.もう他に適切なグラフソフトを知らない(というか今更一から覚えるのは面倒くさい)ので,ここは一つ,なんとかしてカレイダグラフから出力することにします.

実はHULINKSのウェブページには,EPSファイルの書き出しについてという項目があります.そこではOSXユーザ向けに,PDF形式で保存した後にAdobe社のIllustratorで読み込んで保存しろ,と書いてあります.しかし,あの馬鹿高いIllustratorは誰もが持っているソフトではないでしょう.公式ページでAdobe製品を使った方法を説明するくらいなら,EPSへ出力するドライバくらい組み込んでください.さらに,実は全てのPDFファイルをIllustratorが正しく解釈するとは限らないのです.その場合,お手上げになってしまします.そこで,私がお薦めしたいのは,Acrobat 6.0 Standardを用いた方法です.

まず,[プリント]からPDF形式で保存するを選択し,PDF形式で保存します.それからAcrobatを起動し,そのファイルを読み込みます.Acrobatは無料で配布されているAcrobat Readerと異なり,有料のソフトです.通常Distillerと一緒のパッケージになっているものです.Acrobat Readerで出来ればそれに越したことはないのですが,このソフトでは“保存”は開いたpdfの複製しかできないので事実上意味のないコマンドとなっているのです.さて,Acrobatで[別名で保存]を選択し,開いた画面の下部にある[フォーマット]からEPSを選びます(PDFの次です).細かい設定は[設定]ボタンで出来ます.そして後は保存すればいっちょ上がりです.

「グラフィックソフトをかまさないから,余白のコントロールが出来ない」,と言う方は,本ページにあるEPSファイルの余白の切り取りを参考にしてください.保存するEPSファイルは内部を変更できない形式となります.そのため,カレイダグラフ上でグラフを完成形にしておいてください.

なお,Acrobat 7.0 Professionalを用いている方は,さらに簡単に余白の切り取りができます.メニューの[文章]→[ページのトリミング]を選択します.すると別ウィンドウが立ち上がりますので,そこにある[余白の制御]枠中の[余白の削除]にチェックを入れます.すると右側に見えるプレビュー上で余白を切り取ったBounding Boxが表示されますので,OKを押せばそれが適用されます.その画像をそのまま[別名で保存]からEPS形式で保存すれば完成です.gsviewを使わなくていい分だけ楽ちんですね.

Windowsのカレイダグラフを用いている方は,Adobe社のホームページからPSドライバプリンタのドライバをダウンロードしてインストールすれば,印刷画面で出力先にEPSを選ぶことが出来ます.


トップに戻る

プラグラム中のルーチンによって消費された時間を計算する

FORTRANやCでプログラミングをしていると,作っているプログラムのどのルーチンで多くの時間を消費しているのかが気になってきます.というのも,それが分かれば,最も負荷の高い部分をmpiなどで並列処理をしたり,また異なるアルゴリズムを使用して高速化するなどの対処法を採ることが出来るからです.今回の話はtipsというよりは,どちらかといえばメモ書きに近いものなので,方法を知っている人は読まなくても良い項です.

以下の方法は gcc, g77, pgf77, pgf90, pgf95 で使用可能であることを確認しています.

-pgオプションは基本的に,オブジェクトファイルを構築する際とリンクする際の両方において用いられなければなりません.しかし,もしオブジェクトファイルのコンパイルオプションに-pgオプションが含まれていなかった場合(リンカにだけ用いた場合),以下のようなエラーメッセージが出ます.

gprof: gmon.out file is missing call-graph data

この場合,もちろんオブジェクトファイルにもオプションをつけて再コンパイルするのも手ですが,"-Q"オプションをつけてgprofを実行すると,このエラーは発生しなくなります.


トップに戻る

塗りつぶし等高線データなどデータ量が膨大な画像の加工処理

私はFORTRANプログラムから出力されたグラフは所属している研究室で開発されたGSAFやGSGLで表示させていますが,プレゼン用の資料を作るためにはそれらのファイルを適当に加工したり汎用形式で保存したりする必要があります.私の場合でしたらLaTeXでプレゼン資料や学会でのポスターを制作していますので,EPS形式で保存する必要があります.通常でしたらGSAFやGSGLのツールでEPS形式で保存し,そのファイルをMAC OSXに移してフリーハンド(旧マクロメディア社製のソフト)で加工し,EPS形式で再び保存しています.ところが,等高線の塗りつぶしデータなどはデータ量が膨大になるため(10MBなど平然と超える),フリーハンドだと「メモリが不足して読めません」とのエラーが出て読み込みが出来ません.また,イラストレータ(Adobe社製のソフト)で出力されたEPSファイルを読むと,塗りつぶし部分のスプラインを円(ベジエ曲線?)だと解釈するらしく,所々白い隙間が出来る上に生成ファイルのデータ量も10MBクラスと,TeXにインクルードした際にコンパイルや描画などに大変な時間がかかり処理が重くなります.そこで,一旦データをビットマップ形式に落とすことでPSデータを削減し,単なるべた塗りの絵として処理してファイルサイズを削減しようというのが今回の目的となります.

まず,目的とするEPSファイルをgimpで読み込みます.その際に色々聞いてきますが,その中で重要なのは解像度だけです.標準では100dpiになっていると思いますが,600dpi程度は必要だと思います.すると比較的素早く(他のソフトだとかなりの時間がかかります)ファイルを読み込むことに成功します.そこで,ツールバーからトリミングツールを選択します.トリミングツールは囲った部分を切り取って別のウィンドウに表示してくれるツールです.このツールで必要な部分を切り出し,「別名で保存」からファイル名を指定し,EPS形式で保存します.「保存」を押してしますと元のファイルにその切り出したファイルを上書きしてしまうので要注意です.

次にそのEPSファイルをイラストレータで開きます.ちなみにgimpで出力されたこのEPSファイルはフリーハンドでは読み込めない形式となっていますので,ここではEPSファイルの生みの親であるAdobe社製のソフトであるイラストレータを使うことにしました.そこで適当な加工を施します.例えばグラフの軸のラベルを付けたりなどなど.これらの処理はgimpでも出来ると思いますので,ここは省略しても良いかとは思います.そしてこのファイルをEPS形式で保存すれば完成です.

私のケースですと,直接PS形式のまま加工した場合に比べ,14倍ファイルサイズが減少しました(11MB→800K).いくらpdf形式は画像を圧縮しているとはいえ,11MBもある画像ファイルをいくらもインクルードしているとやってられませんよね.これでようやくましなサイズでましなレベルの画像が得られるようになりました.


トップに戻る

Tgifで出力したEPSファイル中のLaTeX形式の文章

私は文章を基本的にLaTeXを用いて書いています.LaTeXでは絵を挿入する際,基本的にEPS形式のファイルにしなければなりません.EPSで出力できるグラフィックソフトは多数ありますが,お仕事上図の内部に数式が入る場合が多く,その数式をLaTeX形式で出力したいと考えたときに,それに対応しているものはそれほど多くないのです.gnuplotはLaTeXの形式を理解してくれますが,これはお絵かきソフトではなくグラフソフトですよね.WinTpicも対応していますが,悲しいかなWindowsのソフトです(ちなみにwineを使えばそれほどの労力無くLinux上でも使用することができます).Linux上で絵を描く定番ソフトと言えばTgifでしょうが,これもまたLaTeXのコマンドは理解してくれません.しかしtgif2texというソフトを使えば,Tgif上でLaTeX形式で文を書いた絵を後に変換することで簡単に数式入りの絵を使うことができるのです.それを今回ご紹介します.

何はともあれ,tgif2texをインストールすることから始めます.tgif2texはLinux標準のパッケージではないので,個別にインターネットから入手してくる必要があります.以下にアドレスを書いておきますので,そこからダウンロードしてください.

http://www.cs.hiroshima-u.ac.jp/~nakano/index-j.shtml

解凍すると実行ファイルと説明書,サンプルなどが展開されます.実行ファイルはPerl形式なので,エディタでtgif2texを開いて,各自のプラットフォームにあうようにplatex, dvips, tgifの3つのバイナリのパスを設定してください.そしてtgif2texをパスの通る場所において,設定完了です.

graph

まず,絵は普通にTgifで描きます.その中に入れる数式は,全く通常のLaTeX同様,例えば$x_0$などと書いてください.ここで重要なのが,変換したいグラフ領域全体を四角のボックスで囲って,その外側に出力したいファイル名を「file=hoge」という形で記述しなければならない,ということです.四角のボックスは単に四角ツールを選択して囲えば良いだけの話です.特殊なツールは必要ありません.ここでは保存したいファイル名を"graph"としましょう.すると,graph.objが保存されます.具体的にどのようなスタイルで保存すればよいのか,例を下に示します.

これをtgif2texに食わせればいいのです.

$ tgif2tex graph.obj

すると,graph.tpsとgraph.dps,graph.psを作ってくれるはずです.ここで必要なのは前者二つであり,psファイルは必要ありません.graph.dpsがgraph.objからLaTeXコマンドを抜き取った画像部分のeps形式のデータであり,graph.tpsがLaTeXコマンド部分を抜き取ったLaTeXファイルです.テキスト中にこの画像を取り込むのは至って簡単で,取り込みたい部分にTeXファイルをインクルードすればいいのです.

\input{graph.tps}

このようにLaTeX文章中に直接書くファイルは.tpsファイルのみですが,結局そのファイルの中で.dpsファイルを読んでいるので,.dpsファイルも.tpsと同じディレクトリに保管しておく必要があります.

ちなみに文字の上付き下付き,ギリシャ文字などはTgif単体の機能としても実現可能です.無論,LaTeXのような綺麗な形式にはなりませんが.


トップに戻る

ATOKでの確定前の文字列のフォント変更

私は日本語入力メソッドにATOK for Linuxを使っています.やはり日本語入力と言えばATOK,入力のしやすさは他の仮名漢字変換ソフトに比べて抜群でしょう.日本語を入力するシーンは主に3つで,一つはコンソールで日本語のファイルを入力する時(極力日本語のファイルは作らないのですが,リッピングで出来たり他の人から来たファイルが日本語だったりetc),一つはブラウザで検索などをするとき,一つはemacsなどのエディタで日本語を入力するときです.業務上,最も頻繁に行っている作業はどうしてもエディタでの日本語入力になるわけで,それはX上のemacsで行っています.emacs上でXIMを使ったり,表示させる日本語フォントを変更したり,などは .Xresources で設定します.それは良いんですが,それだけだと,確定前の文字列のフォント(エンターキーを押す前の状態で,文字列の下に下線があります)が変更されないのです.それについて変更する方法を色々ウェブ上で調べたのですが,どうしても見つけられませんでした.そこで調べるのはあきらめて色々考えた結果,ついに解決方法が分かりました.

解決方法は簡単,/etc/X11/xorg.conf(昔はXF86Config-4でした)の Section "Files" において,FontPath の順番を,確定前の文字列のフォントに設定したいフォントが一番先頭に来るように並び替えれば良いのです.通常ですと確定前のフォントと確定後のフォントを一致させたいでしょうから,.Xresources で設定しているemacsのフォントを,xorg.conf で先頭に置けばよいのです.これで解決しました.


トップに戻る

ATOKの辞書の移行

新しいマシンに移行した場合,$HOME以下にATOKの辞書があれば$HOME以下を丸まま新しいマシンにコピーすればそれで辞書のコピーも完了なのですが,ATOK for Linuxの場合そうはなっていません.そこで,ユーザ辞書を移す方法について記述します.私の場合は,ATOK for Linuxの辞書をATOK for Linuxに移しました.

移行作業は簡単で,旧マシンの /var/opt/atokx2/users/ユーザ名/ 以下にある atok17u1.dic と atok17u3.dic を(他にもあれば,他のユーザ辞書も)新しいマシンの同じディレクトリにコピーしてしまえば終了です.あら,簡単.


トップに戻る

Mozilla系列ブラウザへのフラッシュプラグインインストール

最近メインブラウザはmozillaからmozilla-firefoxに移行しているのですが,それはさておいてsarge安定版からetchテスティングに環境を移したときになぜかフラッシュのプラグインが入らなかったので,Macromediaのフラッシュプラグインをインストールしました.インストールにはdebianパッケージを用いることが出来ます.

# apt-get install flashplugin-nonfree

インストールが始まると設定画面に移ります.このパッケージはフラッシュプラグインの本体は含んでいないので,プラグインは別途ダウンロードしてくる必要があります.まずプラグイン本体のファイル名は install_flash_player_7_linux.tar.gz ですが,このファイルが事前にダウンロードしてあればそのディレクトリを指定しろ,という画面になります.通常はそんな準備が良くないので,恐らく「いいえ」でしょう.すると,Macromediaに接続してそのファイルをダウンロードしてくるかどうかを効いてきます.そこで「了解」を選ぶと通常ならばダウンロードが開始します.そしてダウンロード完了と共に設定終了…となるのですが,なぜかダウンロードに失敗するのです.そして,直接ダウンロードしてください,というメッセージと共に終了します.これはネットワークが不調なせいではなく,Macromedia側に問題があるようです(2006年4月11日現在).

この解決法はブラウザで直接Macromediaのサイトに行って,該当ファイルをダウンロードしてくることです.ところが,「今すぐダウンロード」を押すと,「fpdownload.macromedia.comが見つかりません.ドメイン名を再確認してください」というようなメッセージが出て,ダウンロードに失敗します.これが,debianパッケージでも失敗している理由でしょう.ダウンロードするためには,タブブラウザなら,「今すぐダウンロード」の上で右クリックし,「リンクを新しいタブで開く」を選択します.そうでないなら,リンク先のアドレスを保存して,アドレスバーに打ち込んでください.そして,そのアドレスの"fpdownload"の部分から"fp"を削って,リターンしてください.すると,ダウンロードが開始されます.どうやらドメイン名を変えたのにリンクをそのままにしていることが問題になっているようです.

これで install_flash_player_7_linux.tar.gz がダウンロードされるので,

# dpkg-reconfigure flashplugin-nonfree

を実行し,このファイルを保存しているディレクトリを指定すれば,一瞬でインストール完了です.その瞬間から,firefoxなどではプラグインを認識しています.アドレスバーに"about:plugins"と打ち込めば,インストールされているプラグインが確認できます.


トップに戻る

バイナリの使用するメモリ量を調べる

FORTRANなどでプログラムを書いていると,ついうっかり配列の大きさを大きく取りすぎて,バイナリの使用するメモリが物理メモリを越えてプログラムがロードできないということが起こります.今ではFORTRAN95を用いているのでそのようなことは起こりにくくなりましたが,当然起きなくなったわけではありません.そのため,特に大きな配列を確保したと自覚があるときは,生成されたバイナリがどれほどのメモリを使用するかを調べることは重要です.

以下のコマンドで調べることが出来ます.バイナリを a.out だとすると,

$ size a.out
   text    data     bss     dec     hex filename
2354278   56188 4031388 6441854  624b7e a.out

の様に表示されます.プログラムが実際に使用するメモリ領域はdec(10進)またはhex(16進)で表示されています.text, data, bssはその内訳となります.この場合,プログラム a.out は6441854バイト,つまり約6.15MBの領域を使用するであろうということが分かります.

では,その内訳は何かということになりますが,textは「プログラムのテキスト領域」,dataは「初期化データ領域」,bssは「非初期化データ領域」となります.わかりにくいですが(私もあまり分かっていませんが),dataはプロセス生成時にメモリを割り付ける領域を指しますが,bssは同じく生成時にゼロ初期化したメモリを割り付ける領域である,というような差があります.


トップに戻る

ルート宛メール送付先の再設定

どのメーラを用いるかでもちろん違いますが,debianでの標準的なMTAはexim4となっています.exim4の設定は実はexim4が行っているのではなく,exim4-configというパッケージが管理しています.設定ファイルは /etc/exim4/update-exim4.conf.conf にありますが(update-exim4.confというプログラムのconfigファイルなので,.confが連続しているのです),これを直接エディットするのは適当ではなく,

# dpkg-reconfigure exim4-config

を実行します.


トップに戻る

上書き失敗時の処理

おそらくはパッケージに含まれているバグなのでしょうが,testingではいろいろなトラブルが発生します.その中でも,二つのパッケージが同一のディレクトリを提供するというバグがあります.x11-commonをインストールしようとして失敗した以下のメッセージを見てください.

x11-common 6.9.0.dfsg.1-4 を (.../x11-common_6.9.0.dfsg.1-6_all.deb で) 置換するための準備をしています ...
x11-common を展開し、置換しています...
dpkg: /var/cache/apt/archives/x11-common_6.9.0.dfsg.1-6_all.deb の処理中にエラーが発生しました (--unpack):
 `/usr/include/X11' を上書きしようとしています。これはパッケージ libxft-dev にも含まれています
 System startup links for /etc/init.d/x11-common already exist.
Setting up X server socket directory /tmp/.X11-unix...done.
Setting up ICE socket directory /tmp/.ICE-unix...done.
以下のパッケージの処理中にエラーが発生しました:
 /var/cache/apt/archives/x11-common_6.9.0.dfsg.1-6_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

debianのパッケージ管理の概念からいくと,既に存在しているディレクトリに,そのディレクトリを提供したパッケージ以外のパッケージが上書きをしようとすることは原則として禁止されています.この場合,/usr/include/X11 は libxft-dev が提供しているのですが,x11-common もこのディレクトリを提供しようとしているので,禁則処理によりインストールが停止されます.

盲目的に適用するのはおすすめできませんが,この場合は上書き処理をしてしまう,という手段で解決したいと思います.メッセージを見るとパッケージそのものは /var/cache/apt/archives/x11-common_6.9.0.dfsg.1-6_all.deb にダウンロードされています.そこで,こいつを dpkg によって無理矢理インストールしてやれば良いのです.

# dpkg -i --force-overwrite /var/cache/apt/archives/x11-common_6.9.0.dfsg.1-6_all.deb

すると,インストールが完了します.ところで,apt-get upgrade などでインストールを行っている際,途中でエラーを起こすパッケージがあると,他のパッケージのインストール後の設定がなされないまま作業が中断されてしまいます.その場合は

# apt-get -f install

を実行することで,エラーを起こしたパッケージ以外のパッケージの設定を行ってくれます.


トップに戻る

mozillaで日本語フォントが文字化けして選択できない

mozillaではフォントの設定を行う際,メニューバーの「編集→設定→表示→フォント」と進み,そこでProportional以下5つのフォントを選択します.ところが,往々にして日本語フォントは文字化けを起こしているのです.もうしっちゃかめっちゃかになっていて,どれがどのフォントなのか判別不能です.英語フォントやシングルバイト文字は当然文字化けなどせず,なんのトラブルもなく選択できますし,日本語フォントでもフォント名が日本語でなければ(例えばMS UI Gothicなど)それを選択すればちゃんとフォントの変更は反映され,表示されます.しかし,文字化けをしている日本語名フォントを無理矢理選択してやっても,結局そのフォントへの変更は為されず,日本語表示に関しては標準的な東風フォントが表示されるのみです.

それを解決するには,無理矢理設定ファイルにフォント情報を書いてしまえば良いのです.mozillaのアドレスバーに「about:config」と打ち込んでやります.すると,設定メニューに移動します.そこで,上のフィルタに「font.name」と打ち込んでやると,その文字列から始まる設定情報のみが表示されます.ここで変更すべきなのは,

font.name.cursive.ja
font.name.fantasy.ja
font.name.monospace.ja
font.name.sans-serif.ja
font.name.serif.ja

の五つです.これらは先ほどの設定メニューから選択できる5種類のフォント設定欄と対応しています.Proportionalに関しては,serifとsans-serifを選択するだけなので,日本語表示とは関係ありません.これら5つの部分をダブルクリックし,その欄に自分の設定したい日本語フォント名を書き込んでやれば変更されます.これでもうすぐに変更は反映されているので,ブラウザでどこかのページを見に行けば確認できます.ちなみに,この変更を経ても,設定メニューから行うフォント欄にはその変更情報は反映されていませんので気をつけてください.そこは放っておいて結構です.また,ホームの.mozilla以下にあるprefs.jsというファイルをエディタで直接変更することによってもフォント変更は可能ですが,about:configを使った方が無難でしょう.

なお,「日本語のフォント名が分からないから,欄に書き込むべきフォントが分からない」という人がいるかも知れません.その場合は,fc-listコマンドを実行してください.すると,利用できるフォント名の一覧と,そのフォント名と同一である名前が表示されます.例えば

東風ゴシック,Kochi Gothic:style=標準,Regular

と表示されている場合,「東風ゴシック」と書いても「Kochi Gothic」と書いても同等である,と言うことを意味しています.

fc-listはコンソールで実行しますが,標準出力がShift-JISなのが難点です.通常Linuxを使っている人は標準の日本語コーディングをEUC-JPにしているはずです.ですから,コンソールでfc-listをそのまま実行すると,日本語フォント名が文字化けを起こして意味不明です.その場合は

$ fc-list | nkf -e

としてやることで,EUCでの出力となり,正しく日本語が表示されるようになります.


トップに戻る

ATOKで環境設定などの画面が開かない問題

私は今debian/testing(etch)を使っていて,メインの日本語変換ソフトにATOKX2を用いています.最近のパッケージのアップグレードで,何度やっても iiimf-htt-server のインストールに失敗するのです.どうやら起動に失敗しているようで,どうにもこうにも設定が終了しないのです.そこで,思い切ってパッケージを消してしまい,まっさらな状態からインストールしようと試みました.

# apt-get remove --purge iiimf-htt-server

このコマンドが恐ろしい結果を引き起こすことも知らずに,サクッとエンターキーを押してしまったのです.…そう,なんと iiimf-htt-server は道連れに atokx2 も削除していたのです!しかもご丁寧なことに purge までつけていたものだから,今まで私がせっせと貯めてきた賢い辞書も全てまっさら,白痴化してしまいました.ああ,なんてこった.バックアップはホームしか取ってなかったよ….辞書ファイルは /var/opt/atokx2/users/(ユーザ名)/ に格納されているので(拡張子は.dic),バックアップ対象ファイルに含めておきましょう.めげていてもしょうがないので,atokx2 を再インストールすることにしました.

# apt-get install atokx2

ちなみにこのパッケージはあくまでインストール支援パッケージで,ATOKX2の中身はジャストシステムから買ってこなくてはいけません.このコマンドを実行することで,iiimf-htt-server もインストールされ(道連れに削除するんですから,道連れにインストールもしますよね,そりゃ),設定もなんということもなく終了しています.

ところで,パレットから「メニュー」→「環境設定」と選択すると,本来ならば環境設定メニューが別ウィンドウで開くのですが,通常のインストールを行うだけだと開きません.パレット上で右クリックをして「ヘルプ」→「バージョン情報」と進み,バージョンを確認します.インストール直後は「バージョン:17.0.2.0」となっており,これは問題を引き起こすバージョンです.そのためにはパッチをインストールしなくてはなりません.ジャストシステムのサイト http://www3.justsystem.co.jp/download/atok/up/lin/050615.html からパッチをダウンロードしてください.ただ,サイズ的にはパッチと言うよりは本体置き換えじゃないのかと思ってしまいますが.ところで,ジャストシステムが配布しているこのパッチはあくまでrpm使い向けであり,debianユーザ向けではありません.そこで,いくらか修正をする必要があります.まず,atokforlinux_update_17_0_2_1.tar.gz を /tmp に展開します.

$ tar xvfz atokforlinux_update_17_0_2_1.tar.gz -C /tmp/
$ cd /tmp

次に,/tmp/atokforlinux_update_17_0_2_1/bin にある setup_atokupdate を適当なエディタで開き,以下の修正を行います.

1つめ:
#list=`rpm -q atokx-17.0`
#if [ $? -ne 0 ] ; then
#	echo '"ATOK for Linux" is not installed.'
#	exit 1
#fi
2つめ:
#update_iiimf

「1つめ:」と「2つめ:」は私が参考のために書き加えたものです.二カ所,バラバラにあるので,それらをコメントしてください.そして,後は setup_atokupdate 実行するだけ.ジャストシステムのページにもありますが,シングルユーザモードでログインして,ルートで実行した方がいいのでしょうね.この作業によって,バージョンが17.0.2.1へと上がり,環境設定も開くようになります.でも私の賢かった辞書はもう戻ってこないのです….ああ,一から調教し直しか.


トップに戻る

etchでglxgearsやglxinfoが存在しなくなった問題

OpenGL等を使用して3D画像をぐりぐりと動かす際には,通常Direct Renderingという機能を用いています.Direct Renderingは簡単に言ってしまえば,直接グラフィックカードに描画命令を送ることで回りくどいを作業をかっ飛ばして高速に書かせてしまえ,ということなのです.この機能によって高速に画像を描画することができます.Direct Renderingがオンになっているかオフになっているかは,/var/log/Xorg.0.logなどを見ることもできますが,通常はglxinfoというコマンドを用いていました.

$ glxinfo | grep "direct rendering "
direct rendering: Yes

ここでYesと表示されていればDirect Renderingが有効になっています.これまでdebianではglxinfoとその兄弟分のglxgearsはxbase-clientsに入っていました.ところが,最近のアップデートでそのパッケージからそれらのコマンドが無くなってしまったのです.四苦八苦して探しましたが,結局mesa-utilsに入っていました.一体どういう仕組みでこういう変化が起きたのかわかりませんが,移動先の告知くらいして欲しいものです.


トップに戻る
資料室に戻る
©2006 HONDA Mitsuru