たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
あとTortoiseSVN。なぜかというと、普段使いの環境で使ってる自作アドオンはjarで固める前のファイル(=Subversionリポジトリからチェックアウトしたままのファイル)をそのまま読み込ませてるから。
他はまだ全然進んでない。エディタもメーラも。お絵描きソフトなんてまだまだ先……っていうかそもそもVistaだとIllustrator CS2はまともに動かないから、そのうちCS3か4を買わなきゃいけない。
とりあえずこのいまいち使いにくいDellキーボードをとっとと元のPS/2キーボードに変えたい。変換ケーブルは注文済みなのでそれ待ち。
それにしても新マシンは速いなあ。あれだけテキストリンクの処理速度の事で悩んでたのが馬鹿馬鹿しくなる。
救出したデータのうちiTunesのライブラリを新マシンの C:\Users\<username>\Music\iTunes に移動してiTunesを起動したところ、一部の(数としては大量の)曲について、ファイルが見つからないと言われてしまった。
iTunes導入後(=iPod導入後)にCDを買った物とかはiTunesでリッピングしてそのままライブラリ行きだったので、それらについてはちゃんと認識されてるっぽい。駄目だったのは、それ以前にリッピングしてMP3化して別の場所に置いてあった物をインポートしたやつ。旧マシンではこれらはDドライブのフォルダの中に入れてたんだけど、救出した後は C:\Users\Public 以下に置くようにしたため、リンク切れ状態になってしまった。
iTunesのライブラリをエクスプローラで開くとiTunes Music Library.xmlというファイルがあって、これをメモ帳で開くとそれっぽい情報が色々書かれているので、一括置換でlocalhost/D:/となってるところをlocalhost/C:/Users/Public/に置き換えて上書き保存してみた。しかしiTunesを起動して再生を試みてもやはりファイルが見つからないと言われる。iTunes終了後にもう一度iTunes Musc Library.xmlを開いてみたら、さっき置換したはずの所が全部元に戻ってしまっていた。どうも、ほんとの情報はiTunes Library.itlあたりにバイナリとして保存されてて、iTunes Music Library.xmlの方をいくらいじっても無駄みたいだ。
「iTunes 場所 変更 xml」で検索してみたら、63Blog: フォルダ名変更の時のiTunes再構築方法 というエントリが引っかかった。
という風にするといいらしい。実際、試してみたらうまくいった。プレイリストに入ってないけど管理下にはあった曲、というやつもちゃんと認識されたっぽい。iTunes Storeで買った曲が入る「購入したもの」も復元された。
リンク作成シェル拡張で作ったシンボリックリンク(うちの場合はフォルダのリンクなので、正確にはジャンクション?)があると、ファイルのコピーが途中で止まってしまう……
かつてWindows 2000でCドライブとDドライブだった物が、今FドライブとGドライブとして認識されてるんだけど、この状態でフォルダのリンクを含むフォルダ群をVista上で普通にコピーしようとすると、リンク切れ状態のリンクを処理しようとして詰まってそこで後のファイルのコピーも全部キャンセルされてしまう。仕方がないので、先にFとGからリンクの残骸を探して削除して回ってからコピーをやり直してみてるけど、見落とした物があるとまたそこでやり直しなのでうんざりだ。
関係ないけど、Vistaのファイル移動やコピー時の上書き確認関係のダイアログは、なかなかよくできてるっていうか丁寧だなと思う。「どういう操作を選ぶか」じゃなくて「結果的にどうしたいのか」を提示してる、というかなんというか。
これでやっと復旧?にとりかかれる。
買ったのはDellのStudioとかいうモデルで、XPは選択できなかったのでVista Home Premiumになった。メモリ4GB、HDD500GBとかこの辺はプリセットの構成のままで、グラフィックボードをデュアルディスプレイ構成で使えるようにnVIDIA GeForce 9800 GTにして、あとブルーレイコンボドライブも付けた。ディスプレイ無しで11万ちょっと。
最近のマシンはPS/2なんて付いてないんですね……なにげに気に入ってたTK-P09FPBKが使えなくてしょんぼり。でもググってみたらUSB→PS/2というマウスとかによく付いてきてた奴だけじゃなくて、その逆のPS/2→USBというのもあるのか。これ使えばいけるかな?
せっかくブルーレイが付いたんだからって事で、前に買うだけ買って再生環境が無くて死蔵してたマクロスFの1巻を再生してみようとしたんだけど、HDCPがどうとか言われて再生できない……ディスプレイがHDCPという仕様に対応してないとHD画質のコンテンツは見れませんよっていう話らしい。今の構成は、新しく買ったPCにDVI-I端子経由でEizo FlexScan S170とViewSonic ViewPanel VE150を繋いでるんだけど、どっちも古くてそんな仕様には対応してないから、ブルーレイは禁止!ということらしい。なんじゃそらー。ディスプレイ買い換えるつもり無かったのにそんなこと言われても困るよ。
さらにもう少し調べてみたら、HDCPはコピーガード(コピーの時に働く機能)じゃなくてアクセスコントロール(ただ再生するだけの時にも働く機能)だから回避しても法的には問題がないという話もあるようだ。
さらにもうちょっと調べてみたらAnyDVD HDというシェアウェア(21日間の試用期限あり)を使うと、ソフトウェア的にHDCPを回避できるようになるとか。で実際試してみたら、確かに再生できた。ただ、AnyDVD HDの問題なのかPowerDVD 8.1の問題なのか、普通にディスクを入れてすぐに再生が始まるパートは再生できるんだけど、ディスクメニューから映像特典を見ようとすると止まってしまう。結局全然駄目ってことなのか……
遊んでないでシステム復旧に取りかかれって話ですよね。はい。
旧マシンはオンボードのSATAが無かったので手も足も出なかったけど、新マシンはSATA標準搭載(というかそれしか付いてない)なので、ここにRAID1のうち片方のディスクだけ繋いでみた。Windows Vistaの起動前に何かメッセージが出て、CHKDSKによるエラーチェックが始まって……うわあ、何かすごい量のメッセージが出まくってるよ。こりゃもう駄目かもわからんね。
エラーチェックが終わったので、とりあえずディスクの中身を新マシンの方に吸い出しておくことにする。
OSC2009Tokyo/Spring会場からネットワークに繋がらない、ということで小林さんや組長や池添さんに助けてもらった。
古いUbuntuでGUIを使ってネットワークの設定を行っていた場合、今のUbuntu(8.10)では、ネットワーク設定のためのGUIを起動してもまるで設定が行えない状態になるようだ。
僕の場合、会社の無線LANの設定が /etc/network/interfaces に残っていて、これがあるせいで新しいUbuntuのネットワーク自動設定機能が全く働かなくなっていた。今まで外出先でUbuntuで無線LANを使うという事がなかったので、気付いてなかった。
auto lo iface lo inet loopback
この2行だけを残して残りを全部コメントアウトした後、システムを再起動(ログアウトしてもう一度ログイン、では駄目)したら、ネットワークの自動設定機能がちゃんと機能するようになった。
以前Ubuntu 8.10に導入したNautilusSVNなんだけど、一つ困った事がある。それは、コミット時のメッセージを日本語で入力するとコミットできないという点。
普通のオープンソースのプロジェクトだったら英語でやるのが当たり前だろ!!!日本語のメッセージとか死ね!!!と言う人もいるだろうけど、そんなの知るかよと。TortoiseSVNじゃ普通にできてるんだから、できない方がおかしいだろと。とかぼやきつつも仕方ないからNautilusSVNからcommitする時だけは英語でコメント付けるようにしてたけど、英語苦手だからついつい二言三言の適当なメッセージだけでcommitして、後になってログ一覧見た時に何の変更だったのか訳が分からなくなる、ということがあまりに多いのでいいかげん我慢の限界がきた。
そもそもの所で勘違いしてたんだけど、日本語が通らないのはSubversion自体の問題ではなくてNautilusSVNの問題だということについ先日やっと気がついた。ターミナルでsvn commit -m "日本語のメッセージ"てな感じで書いたらちゃんとコミットできたし。あと閉じ括弧を入力するまでは改行とかもメッセージに普通に入れられるということにも気がついた。なのでしばらくの間、コミットだけコマンドライン操作でやるようにしてみたんだけど、やっぱりめんどくさい。
この手の問題はMozillaでもよくあって、Mozillaの場合は文字列のエンコーディングを変えてやるだけで解決する場合が多いので、NautilusSVNでもきっとそうなんじゃないだろうか。と見当を付けて、思い切ってソースコードを覗いてみた。~/.nautilus/python-extensions/NautilusSvn/SvnCommit.py の中のそれらしい箇所に、ぐぐって調べた文字エンコーディング変換のコードを一行加えて、試しにコミットしてみたら無事に日本語が通るようになった。
Index: SvnCommit.py
===================================================================
--- SvnCommit.py (リビジョン 776)
+++ SvnCommit.py (作業コピー)
@@ -102,6 +102,7 @@
ctrl = XRCCTRL( self.frame, "Message" )
self.commitMessage = ctrl.GetValue()
+ self.commitMessage = self.commitMessage.encode("UTF-8")
# If the user doesn't supply a commit message we will just use the string
# "Empty message" since pysvn doesn't accept an empty string see:
# pysvn._pysvn_2_5.ClientError: callback_get_log_message required
変更箇所はほんとにこれだけ。
僕はバージョン管理システムのSubversionのクライアントとして、WindowsではTortoiseSVNを使っている。TortoiseSVNはシェル統合型のクライアントで、エクスプローラのファイルアイコンがファイルの状態(競合とか最新とか変更ありとか)に応じて変化したり、フォルダの右クリックからチェックアウトや更新や差分の表示やログの閲覧ができたりと、独自ファイラを使わない僕にとっては実に使い勝手が良い。
TortoiseSVNはWindows専用なので、UbuntuではRapidSVNを使ってたんだけど、Ubuntu 8.04LTSで使うとどーいうわけかコミットしようとすると必ず落ちる(しかもその時作業対象のフォルダをロックしたままで死にやがる)という問題が起こっていて、チェックアウトしかできなくて困ってた。コマンドラインからsvnコマンドを使えばコミットすることはできるといえばできるんだけど、根っからのGUI人間なので、いつもそうするというのは苦痛で苦痛で……
そんな時に、Nautilus向けのシェル拡張としてNautilusSvnというTortoiseSVNクローンが存在するということを教えてもらったので、是非入れよう! すぐ入れよう! 幸いページの一番下に.debなパッケージもあることだし! と思ってダブルクリックしてみたらパッケージマネージャに蹴られて撃沈して僕涙目。Python関係のパッケージの依存関係が壊れてるだかなんだかでインストールすらできなかった。
それ以来すっかり諦めてたんだけど、先日Ubuntu 8.10にアップグレードしたので今度はうまくいくんじゃないか? と思って再挑戦してみた。.debをダブルクリックしてパッケージマネージャから入れてみると、今度はインストールには成功したんだけど、再起動してもちっともそれっぽい変化が現れない。
Google検索したらUbuntuのフォーラムのトピックでGoogleコード上のプロジェクトページが紹介されていたので、これがダメだったらもう諦めよう、という気持ちでそこのWikiに書いてあったインストール手順に従って操作してみた。そしたらうまくいった。やった!!!
以下、すべてコマンドライン操作。
で、ログアウトしてログインし直した後にNautilusで適当なフォルダを開いて右クリックすると、メニューの中に「SVN Checkout」という項目が増えてた。Subversion管理下のフォルダだとフォルダやファイルのアイコンの上に状態を示す小さなアイコンが表示されるようになってて、管理下のフォルダで右クリックすればログや差分も見られる。
.debでやった時にうまくいかなかった理由については結局分からずじまいなんだけど、最初に入れる必要なパッケージの中の一つがWikiには「python-wxgtk2.6」と書かれていたのに対して、.debではpython-wxgtk2.8が入っていたので、もしかしたらこのバージョンの違いが原因だったんだろうか?
あと、この件について調べてる中でnautilus-script-collection-svnというパッケージがあることも分かった。こちらはSubversion用のシェルスクリプトをNautilusの汎用的なユーザスクリプト呼び出し機能を使って起動して使うというもののようで、パッケージをインストールした後に sudo ln -s /usr/share/nautilus-scripts/Subversion ~/.gnome2/nautilus-scripts/Subversionとしてシンボリックリンクを作成すると、次回起動時以降、Nautilusのフォルダ内での右クリックメニューの「スクリプト」サブメニューからそれぞれのシェルスクリプトを呼び出せるようになる。こちらはコミット前の「やっぱりやめとこう」みたいな取り消しができないっぽかったりSubversion管理下のファイルやフォルダの状態が特に表示されなかったりという問題があるので、NautilusSvnが使える環境だったらNautilusSvnを使った方が良さそうだ。どうしてもNautilusSvnが動かないという時のために一応メモしておく。
余談。NautilusSvnでもTortoiseSVNでも微妙に不便な点として、まあこれは仕様上当たり前なのかもしれんけど、ある場所にチェックアウトしたSubversion管理下のフォルダに対するシンボリックリンク(Windowsだったらジャンクション?)からはコミットできないという問題がある。Windowsの場合はフォルダのショートカットがあるから別にいいんだけど、Linux(GNOME)だとGUIからは簡単には「フォルダのショートカット」を作れない(アプリケーションのランチャを作って、コマンドに「nautilus "パス"」と書けば、擬似的にフォルダのショートカットを作ることはできる)ようなので、そこだけ地味に困ってる。
2009年2月9日追記。日本語のメッセージを付けてコミットできない問題に対処してみた。
Ubuntu 8.04LTSからUbuntu 8.10にアップグレードした。手順はUbuntu Japanese Teamのアップグレード手順解説の通り。
ATOKがちゃんと使えるかが心配だったんだけど、とりあえず以前と同じ状態で使えてるみたい。%gconf.xmlが肥大化して設定が戻ってしまうという問題も含めて。
ubuntu hardy amd64 で ATOK X3 の iiim-properties を動作させる - Assemblr
によると、 ~/.gconf/desktop/input_methods/%gconf.xml だけじゃなく/etc/iiim/client.xml の内容も関係してるようだったので、<entry props="status enabled">True</entry>
を<entry props="status enabled">False</entry>
に、<entry props="trigger keys">Ctrl+space,Henkan_Mode,Alt+Henkan_Mode</entry>
を<entry props="trigger keys">Ctrl+space,Henkan_Mode,Alt+Henkan_Mode,Zenkaku_Hankaku</entry>
に書き換えた。
追記。ATOK X3を買った時にCD-ROMが手元になかったからすっかり忘れてた、広辞苑(第六版を買いそびれてるので第五版)その他のATOK用電子辞書をLinux版でも使えるようにした。CD-ROMから直接入れようとしても肝心の辞書のファイルが見つからなかったりしてうまくいかなかったので、最終的にインストール済みのWindows環境から辞書ファイルだけコピーしてきた。/opt/atokx3/share/systemdic/以下にkoujien.drt等をコピーして、所有者をrootに設定し、再起動(多分ATOKだけの再起動でいいと思うんだけどちょうどUbuntu自体のアップデートで再起動要求が出たのでシステム全体を再起動した)後にATOKの環境設定で電子辞書を有効にすれば、Windows版と同様に使えるようになる。同音異義語の使い分けには充実した電子辞書が欠かせません……
LVMを使って460GBほどの領域を確保して/backupにマウントした所までやったので、その続き。
バックアップ対象は色々あるんだけど、大まかに言って3種類ある。
これらのバックアップ対象を、日付の名前を付けたディレクトリの中に(圧縮して)コピーすると同時に1ヶ月以上前のバックアップは自動で削除する(=30世代のバックアップを取る)、というシェルスクリプトを1日1回自動で走らせる、というのが最終目標です。Googleであちこち検索して回って、コマンドの使用例をコピペしまくった。
作業用ディレクトリとその日のバックアップディレクトリの作成はこんな風に書いた。
#!/bin/sh
destparentdir=/backup
destdir=${destparentdir}/`date +%Y-%m-%d`
mkdir $destdir
ファイル(ディレクトリ)のバックアップはtarコマンドを使う。「j」オプションでbzip2形式を指定して圧縮してみる。
tar cjf $destdir/svn/hooks.tar.bz2 /var/svn/repos/hooks
データベースのダンプは、Subversionならこんな感じになった。
ダンプを吐く端から圧縮するというやり方が分からなかったので、一度作業ファイルを出力してから圧縮してみた。svnadmin dump /var/svn/repos/ > $workdir/dump
tar cfj $destdir/svn/dump.tar.bz2 $workdir/dump
rm $workdir/dump
svnadmin dump /var/svn/repos/ | bzip2 > $destdir/svn/dump.bz2
bzip2をパイプで繋げて、ダンプが吐かれるそばから圧縮。MySQLのデータベースの場合はsvnadminではなくmysqldumpコマンドを使う。
cronの設定の出力は、こう。
crontab -u tdiary -l > $destdir/crontab-tdiary
会社サイトのブログ部分の自動出力はtdiaryという名前のユーザの自動処理になっているので、こうなる。
最後、30日以上前のバックアップを消す処理はこう書いた。
BACKUP_DAYS=30
...(略)...
find ${destparentdir}/ -ctime +$BACKUP_DAYS -type d -maxdepth 1 -print0 | xargs -0 rm -r -f
...(略)...
これで、日付が30日より前のバックアップディレクトリは自動削除されるようだ。(※この処理は新しいバックアップを作る処理よりも前に書くのが望ましい。そうでないと、ディスクがいっぱいになってしまう場合があり得るから。まぁ、それも根本的な対策にはなってないんだけど……)
-maxdepth 1
を付けないと、下層のファイルから削除されるせいで上位ディレクトリの更新日が新しくなってしまい、削除されるべき古いバックアップが消えなくなってしまう。これに気付くのにだいぶかかってしまった。あと、ここでは-print0
でNULL文字区切りで検索結果をパイプに出力して、xargs -0 rm -r -f
で受け取って一度にファイルを削除するようにしてある。
このファイル(今の置き場所は /backup/backup.sh )のシンボリックリンクを/etc/cron.daily/以下に作成(sudo ln -s /backup/backup.sh /etc/cron.daily/baskup)した。これで、root権限でこのスクリプトが1日1回自動的に実行されるはずなんだけど……とりあえず明日どうなってるかまた見てみよう。
追記。どうやらタスク自体は実行されてるようなんだけど、実行されてる時刻が設定と違うような…… /etc/crontab に書かれた /etc/cron.daily/ 以下のタスクの実行時刻は22時なのに実際には翌日7時から動いてるみたい。9時間差ってことはUTCとJSTのずれっぽいんだけど、どこをどうすれば直るのか分からない。まあ今の所特に支障があるわけでもないようだし別にいいか……(←ひどい)
2009年1月5日追記。正月明けて見てみたら古いバックアップが自動削除されてなかった……しょうもないミスでした。/backup/ 以下を検索しないといけないのに、/backup/最新のバックアップディレクトリ/ の中を検索してた。そりゃ古いファイルが見つかるわけがないです……
2009年3月19日追記。スクリプトを/backup以下に置いてcronにはシンボリックリンクを……という風にしてたせいで、スクリプトの編集から30日後のタイミングで古いバックアップと一緒にバックアップ用スクリプト自体まで消えてしまってました(ぉぃ)。アホス。これは置き場所を変更して解決しました。
会社で、Ubuntuで動いてるマシンの中身を自動的にバックアップする仕組みを作るようにと言われて、右も左も分からないままあれこれやってます。
まず、バックアップ先として500GBの外付けHDDを繋いだ。で、それをフォーマットし直す(FAT32→ext3)前に、LVMというのを使うように言われた。LVMとはLogical Volume Managerのことで、物理的なドライブの境目にとらわれずに論理的なパーティションを確保する技術とかなんとか……
GUI人間の僕は以前教わったとおりにssh -Y ユーザ名@IPアドレスでログインしてsudo GPartedでどうにかならないかなと思ってしまったのですが、どうもGParted上からだと言われたとおりの操作ができないようで……諦めて上記リンク先のITmediaの記事を見ながら何とかやってみた。
/dev/mapper/backup-backup /backup ext3 default 0 1という行を追加。
とりあえずまだここまでです……