http://rubikitch.com/に移転しました このページをアンテナに追加 RSSフィード

2014-07-24

[]Debian testing/sidを使う上での大切なマインド4選

音鳴らん!

僕はDebian GNU/Linuxのtestingを使っているので、ちょくちょく「sudo apt-get dist-upgrade」を実行しています。

ずっとstableを使っていたのですが、パッケージがあまりにも古いのでメイン機には使えないから乗り換えました。

sidテストされているものがtestingに降りてくるので、sidほどではないもののパッケージは準最新のものが使えます。

さて、いつもdist-upgradeしていると(準)最新のパッケージになるので嬉しいのですが、たまに困ったことが起きます。

それは、いつも動いているものが更新によって動かなくなることです。

しかも再起動するまで気付かなかったケースとかも…


今回困ったのは、再起動したらUSBオーディオから音がでなくなったことです。

Debian GNU/Linux再起動要求されることはめったにないのですが、「気分的に」再起動をしてみたら音がでなくなりました。

まずはUSBオーディオを一旦USB端子から外し、ふたたびつなげました。

USBオーディオトラブルはたいていの場合、再接続したら直るからです。

それでも直らなかったので、ふたたび再起動しました。

Windowsでは問題が起きたら再起動というのが常套手段だと思いますが、Debian GNU/Linuxでも同じです。

それでも治りませんでした。

ログ読むか

んーなんでだろう…再起動前までは音なってたのに………

考えること5分、原因はきっとdist-upgradeのせいだなと…



ログを読もう。なにが起きたのかが書いてあるはず。ということで /var/log/apt/history.log を読む。

Start-Date: 2014-07-23  13:38:37
Commandline: apt-get dist-upgrade
Install: (ry
Upgrade: (ry, alsa-utils:amd64 (1.0.27.2-1, 1.0.28-1), alsa-base:amd64 (1.0.25+3, 1.0.27+1), (ry
Remove: (ry
(ry

alsa関係が更新されていた、そこが臭う。

alsa-baseを読もう

/usr/share/doc/alsa-base/changelog.gz をみてみると、

  * Remove all package contents, and tweak package descriptions to note
    this is an empty, dummy package.

と書いてあり、じゃあ、なにが削除されていたのかなと古いバージョン alsa-base_1.0.25+3~deb7u1_all.deb の中身を見る。

ちなみにdebarアーカイブで、Emacsならばそのまま開ける。

その中にdata.tar.gzがあるので、それがパッケージの中身。

Emacsならそのまま開ける。

なるほど、これがalsa-baseの内容か。

 -rw-r--r--    root/root       1186 ./etc/modprobe.d/alsa-base.conf
 -rw-r--r--    root/root        229 ./etc/modprobe.d/alsa-base-blacklist.conf
 -rw-r--r--    root/root        637 ./etc/default/alsa-base

同じように最新版alsa-baseの内容を見てみたが、上のファイルがない。

というわけで /etc/modprobe.d を開く。

見てみると、構成がかわっていた。

alsa-base.conf.dpkg-bakとsound.confというファイルができていた。

解決!

なるほど、元々あったalsa-base.confが無効になってたのね。

sound.confが新しい設定…

options snd_usb_audio index=0

とだけ書かれていたので、それが音がなってない原因…


というわけで、alsa-base.conf.dpkg-bakの内容をsound.confにコピペして、元のsound.confの内容をコメントアウトした。

そしたら無事に音鳴った!!!!

教訓

そこで得た教訓がいくつかあります。

まず、dist-upgradeするのは時間に余裕があるときにやること。アップグレード問題が発生することがあるので、それを解決するだけの時間を確保することです。とはいえ、常時接続マシンでdist-upgradeが遅いとセキュリティ問題になるから、放置もいけないです。まあバランスで。

次の教訓は、たまにでも再起動することです。再起動した後に問題が発覚することがあるからです。

もうひとつ、困ったらログと/usr/share/doc/XXXX/changelog.gzを見ること。パッケージの変更が原因っぽかったらchangelogを見るのは当たり前です。

最後に、最新のソフトウェアが簡単に導入できるのは素晴しいですが、最新を保つにはそれ相応の苦労があることを受け入れることです。Debian stableは更新が遅いので、パッケージに満足していれば長期間安定しますが、その反面、パッケージが古くなってしまいます。

物事はなんでもそうですが、結果を得るためには、あるものを犠牲にする必要があります。stableよりも新しいパッケージが使いたいからテスト版(testing)を使っているのですが、不意に問題に直面する頻度が上がることです。新しいパッケージと引き換えに安定性(アップグレード時のトラブル)が犠牲になりました。でも、このようなトラブルをたくさん経験すると勘と問題解決力が身に付きますので、悪いことではありません。問題人間を成長させてくれます。

2011-11-18

[]ネットブックと母艦を同期させる

それでは、ネットブックと母艦のデータを同期させる方法を説明します。

2つのパソコンデータを一致させておくことで、
一方が他方のファイル上書き保存してしまう
危険性がなくなります。

2台以上のパソコンを使っている人ならば
おそらく、上書き保存をしてしまって
途方に暮れたことがあると思います。

ここでお話する同期を取る方法さえしっかりやっておけば、
こんな問題とはおさらばすることができます。

パソコンデータを同期させるにはunisonというツールを使います。

rsyncに似ているのですが、unisonは双方のパソコンデータ更新されていても対応できる強味があります。

それではunisonを使って同期させるための手順を示します。

とりあえず母艦はLinuxネットブックWindowsだと想定しますが、
手順自体にはOSは関係ありません。

1. 母艦に同期用のネットワークカードを接続する
2. 母艦とネットブッククロスLANケーブルで接続する
3. 母艦のIPアドレスを設定する(例:192.168.1.1)
4. ネットブックIPアドレスを設定する(例:192.168.1.4)
5. 母艦にsshd(sshサーバ)を立ち上げる
6. ネットブックsshクライアント(plink)をインストール・設定する
7. ネットブック側でpageantを使ってパスフレーズ入力なしでssh接続できるようにする
8. 母艦にunisonをインストールする
9. 母艦とネットブックそれぞれに同期させるディレクトリを作成する(例:~/sync, d:\sync)
10. ネットブック側にd:\sync\binディレクトリを作成し、PATHを通しておく
11. ネットブックにunisonをインストールする
12. ネットブックにunisonを動かすバッチファイル(シェルスクリプト)を作成し、d:\unison\bin\usync.batと保存する
13. ネットブックを立ち上げたら毎回sshパスフレーズを入力する
14. ネットブックからusyncを実行して母艦と同期する

この手順により、ネットブックからunisonを動かすことで、
母艦と同期することができるようになります。

母艦とネットブックを直接接続するには、LANカードクロスケーブルで接続することに注意してください。

LANケーブルといっても、見た目はストレート
ケーブルと変わらないので紛らわしいです。

そのため、LANケーブルを購入するときは
クロスと明記してあるものを選んでください。

クロスケーブルの場合は、端に「X」という
文字が書いてあることがあります。

IPアドレスの設定については、環境に
よって異なるので各自調べてください。

母艦側にはsshdを立ち上げておいてください。

なお、Windows用のsshクライアントとしては、
puttyコマンドライン版であるplinkを使うのが無難です。

puttyhttp://www.chiark.greenend.org.uk/~sgtatham/putty/ で入手できます。

http://net-newbie.com/putty.html を参考にして
putty(plink)をインストールして、公開鍵・秘密鍵を
登録しておいてください。

そして、「"C:\Program Files\putty\pageant.exe" "C:\Program Files\putty\id_rsa.ppk"」を
実行するようにスタートアップフォルダショートカットを
作っておいてください。

これでネットブックが立ち上がるたびにパスフレーズを
入力するようになり、同期のたびにパスフレーズを入力
する必要がなくなります。

ssh環境が整ったら、母艦・ネットブックともに
unisonをインストールします。

Linux側は「apt-get install unison」等で
インストールしてください。

Windows側は http://alan.petitepomme.net/unison/index.html から
unisonのバイナリダウンロードします。

この際注意する必要があるのは、
母艦と同じバージョンでないと
unisonは動かない点です。

母艦がバージョン2.27.72ならば、
Windows側も2.27.72をインストール
する必要があるということです。

もしかしたら、TEENY(72の部分)は
一致していなくても動くかもしれません。

unisonの実行ファイルは 
D:\sync\bin\unison.win32-textui.exe 
に保存しておきます。

その後はWindows側に以下のバッチファイルを作成します。

http://www.rubyist.net/~rubikitch/archive/usync.bat.txt

これを d:\sync\bin\usync.bat として保存します。

以下の設定になっているので、
変数の値を適宜書き換えてください。


set UNISON_PATH="D:\sync\bin\unison.win32-textui.exe"
set PLINK_PATH="C:\Program Files\putty\plink.exe"
set SSH_USER=me
set SSH_HOST=192.168.1.1
set SSH_PORT=22
set SSH_KEYFILE="C:\Program Files\putty\id_rsa.ppk"
set LOCAL_ROOT=D:\sync
set REMOTE_ROOT=/home/me/sync


なお、sshは公開鍵を使っているので、
SSH_PASSWORDは無視してかまいません。

バッチファイルを修正したら、コマンドプロンプトからusyncと打つことで、
母艦の~/syncとネットブックのd:\syncの内容が一致します。

次は、ネットブックEmacsインストールし、環境構築を行う話をします。

2011-04-26

[]Yokohama.vimへ行ってきました!

24日、Yokohama.vim #1へ行ってきました。

Yokohama.vim #1 を開催しました - Guyon Diary

意外なことに、これが勉強会初参加です。 しかも、自分のフィールドであるEmacsやRubyではなくて、アウェイなVimの勉強会。

いろいろ事故ってしまい、遅刻してしまいました。本当にごめんなさい。

それにしても、みんなノートパソコンを持ってきていて、僕は持っていないので肩身が狭かったです。 そのうち安価なネットブックを手に入れたいところです。

感想はみんな書いているし、多忙なので、僕はやや短めで(笑)

テーブルシャッフル

VimLevelにあわせてテーブルシャッフルを行いました。 VimLevelの順番に後ろにみんなが並ぶのです。 こーゆーのは初体験で意外におもしろかったです。 高レベルの人はとても少なく、初心者・初級者が多かったです。

僕はhjklとかiaxrあたりが使えるVimLevel1です。 モード切り替えという考え方が好きで苦にならないのでVimLevel 1-2です。

しかし、いろいろカオスになってしまったのでシャッフルはなしになりました。

Shougoさんの発表

なんと、同じテーブルにShougoさんが! これはうれしかったです。

内容は、彼が使っているVimプラグインの紹介です。 「レベルが高いVim使いは、ほぼ自作プラグインで埋めつくされている」ということがわかりました。 まあ、僕もたくさんの自作elispを使っているので、気持ちはよくわかります。

僕とShougoさんの対談 「EmacsとVim〜二人の異端児による次世代エディタ裏話〜」

これは僕のセッションでShougoさんとの対談です。 勉強会に初登場して、しかもセッション持つとか、あまりそういう人はいないと思います(笑) Vimmerにとっては「あんただれ?」という感じだったかもしれませんが、空気読まずに対談を開始。

タイトルは「EmacsとVim〜二人の異端児による次世代エディタ裏話〜」です。 EmacsとVimという対極にいる二人が、独自エディタ論を熱く語りあうのがコンセプトです。 正直、かなりディープでコアでアブない対談なので、ついていける人がどれくらいいるかわかりませんが(^^; それでも、Vimプラグインやelispを書く人にとっては、聞き逃せない対談なのは間違いありません。

Shougoさんは、数々のVimプラグインを作っており、VimをEmacs的に使っている人です。 unite.vimは僕のanything.elをかなり参考にしており、ここまで真似できるのかというほどのクオリティで、びっくりしました。 また、僕が使っているeshellも参考にvimshellを開発していたりと、Vimでやりたい放題しています。

前日から、対談の筋書きをしっかり練って、台本を見ながらの対談です。 予定では45分でしたが、お互い熱く語りあって、大幅にオーバーし、70分になってしまいました(^^;

僕もShougoさんもエディタに関する考え方はものすごい似ていていました。 「エディタはOSだ」という言葉にはとても共感できます。 僕も文字入力はほぼすべてEmacsに統合しているので、X Window Systemでの日本語入力は設定していません。 お互い、既存の腐ったインターフェース・概念をぶち壊し、新たなモノを設計する「創造的破壊」をやっています。

みんなの前で対談をするとか、初めてなので、正直、最初は右も左もわからない状態でした。 しかし、僕のアドバイザーが効果的な対談の作法を教えてくださったおかげで、対談は成功しました。 アドバイザーに感謝です。

moozさんとの交流

対談後に id:mooz さんと少しお話をしました。 Firefox界のanything.elであるKeySnailを実演してくれました。 anything-c-moccurみたいなこともできたりとか、すごかったです。 flashからフォーカスを奪い返すことができたりするので、第2ブラウザをChromeからFirefoxに乗り換えようかなと思いました。 是非とも使いたいです。 ちなみに第1ブラウザはw3mです、はい(笑)

VimとEmacsユーザ交流セッション

交流セッションでは、同じ机にShougoさんがいたので、かなり盛り上がりました。

お題1:Vim(もしくはEmacs)を使ってない自分はすごく損をしている?

もちろん、大損ですね。 Emacsを使っていない僕なんて、考えられません。

お題2: 春から"プログラマー"になる人はどんなEditorを使うといいか?(VimまたはEmacsまたはその他Editorをお勧めする理由)

先輩やメンターが使っているものが鉄板です。 意志の強い人、あえて茨の道へ行きたい人は、VimやEmacsをどうぞ(笑) 年配の人と仲良くなりたい人にもVimやEmacsがいいでしょう。

ちなみに僕はEmacsへの憧れからEmacs道へ進みました。

お題3:VimまたはEmacsで開発をしている方の開発からリリースまでの手順や使用しているツールが知りたい

ヒューマンエラー防止のために自動化は不可欠だと思います。

ちなみに僕のelispのリリース手順はS式ハイパーリンクです。 こんな式をファイルの末尾に書いて、リリースするときはそこでC-x C-e! Gitにpushし、EmacsWiki公開、Twitter告知すべてやります。

;; (progn (magit-push) (emacswiki-post "anything-complete.el"))

お題4: フリーディスカッション(質問にひたすら応えるターン)

ここはgdgd雑談。

vimgolf

ノートパソコン持ってないので他の人がやっているのを見るくらいしか(涙) やはり勉強会にノートパソコンは必須ですね。

その後

帰りは、横浜の街をぶらぶら歩いていました。 横浜とかめったに行かないので、どうせだから探索しました。 探索とか好きなので。

そしたら、どこかの百貨店で巨大な駄菓子屋がありました。 子供のころ見かけた懐しい駄菓子がいっぱい、あの頃のままでいまだに生産されていたのが驚きでした。 会社つぶれてなくてよかったと思い、買いあさり、食べまくりました。

駄菓子は、久々に食べるとおいしいと感じるものですが、今食べたら昔ほどの感動はありませんでした。 数年前に食べたときは、それなりにおいしいと感じたものですが。 今の食生活は玄米菜食で糖分もかなり減らしているので、味に違和感がありました。 着色料などの添加物もけっこう入っていますし。 甘いのはめちゃくちゃ甘いです。

これを機に駄菓子はもう食べないでしょう。 しかし、一時とはいえ昔の感情を振り返ることができたのでよかったです。

2011-04-01

[]Linuxと決別します!

ども、るびきちです。

この度、14年間使ってきたLinuxから決別することにしました。
今日からWindowsを使うことにしました。

なぜ、突然このような決断を、と思ったでしょう。
自分でいろいろいじれるLinuxは今でも大好きです。
車にたとえたら、マニュアル車ですから。

しかし、いくら自分がLinux大好きといっても、世の中はまだWindows全盛です。
便利なツールがあっても、Windowsでしか使えなくて、齒痒い思いをすることもたびたびありました。

Windowsといえば、たしかにウィルスは怖いです。
しっかりWindows Updateをして、きちんとウィルス対策ソフトを導入します。
もちろん怪しいサイトからダウンロードすることはしませんし。

今更Windowsに転向するのは茨の道だと思っています。
慣れない操作体系ですから。

しかし、考えてみれば、EmacsもRubyもWindowsで動きます。
シェルといえば、コマンドプロンプトは糞でしかないが、最強のシェルであるeshellがあります。
わざわざLinuxにこだわる理由はもはやありません。
様々な便利ツールが存在するWindowsがすばらしいに決まっています。

そして、Windows転向の最大の理由は、初心者の気持ちを思い出すためです。
今までLinuxEmacsというニッチな世界にいてましたが、原点回帰したいのです。
今、Windows初心者として再スタートを切ることには意味があると考えています。
なるべくマニアックな操作体系をもたずに、「ふつう」の環境で操作することに努めます。
そうすることで、一般人と同じ目線で物事を考えられるようになります。

今からDebian GNU/Linuxを消して部屋に置いてあるWindows XPをインストールします。

今までありがとう、そして、さようなら、LinuxLinuxが恋しくなったらcoLinuxという形で共存させますね。

<2011-04-19 火> 騙されてる人多すぎワロタwww

Twitterでまんまと騙されてる人がいるみたいだけど、これエイプリル・フールですよ。 日付見てみなさいよ。 僕、嘘つくの下手だと思っているので、騙されている人がこれだけいたのは意外でした。

ただ、初心者の気持ちを忘れないことはとても大切なことなので、新たなPCを購入したときには、vmware上でWindowsを動かすと思います。

2011-03-23

[]インテルのオンボードグラフィックでDebian squeezeのX Window Systemを動かす5つのステップ

<2011-03-23 水> 更新!本家から最新版を取ってくる必要があります。

先月、Debian GNU/Linux squeezeがリリースされました。 もちろん僕もアップグレードしました。

この話は、おそらくUbuntu ユーザにも関係があるかもしれません。

Debian GNU/Linux squeezeにアップグレードしたとき、一番困ったのがX Window Systemの設定でした。 インテルのオンボードグラフィックでは xserver-xorg-video-intel というXサーバを使うのですが、これがフリーズするのです。 フリーズが解決したと思ったら、今度は描画速度がめちゃくちゃ遅いという。 特に端末の描画速度がやばいほど遅く、イライラしていました。

しょうがないから xserver-xorg-video-fbdev を使っていたのですが、今度はmplayerで -vo xv が使えず、動画の拡大再生が遅くなる問題が起きました。 解決策がわからないまま1ヶ月もの間もがき苦しんでいました。 特にカーネル2.6.38は3/15に出たばかりなので、それ以前では解決できなかったのかもしれません。*1

今、やっとの思いで xserver-xorg-video-intel を普通に使えるようになりました。 そのためのステップは、

  1. /etc/modprobe.d/i915-kms.conf を書き換える
  2. カーネルを 2.6.38 にアップグレードする
  3. xserver-xorg-video-intelの最新版を取ってくる
  4. /etc/X11/xorg.confを書き換える
  5. startxを実行する(xdmの人は実行しなくてもよい)*2

/etc/modprobe.d/i915-kms.confを書き換える

/etc/modprobe.d/i915-kms.confを以下のように書き換えます。 これでKMSが有効になります。 Linuxを立ち上げたときに、すでに解像度が広くなっていたら、設定済と思われます。

options i915 modeset=1

もしこの設定をしても解像度が広くならなければ、~/.bash_profileや~/.zprofileに以下の行を書き加えます。

sudo modprobe i915 modeset=1

カーネルを2.6.38にアップグレードする

僕の環境では、xserver-xorg-video-intelは、2.6.37までのカーネルだとフリーズしていました。 それが、2.6.38にアップグレードすることでフリーズはなくなりました。

The Linux Kernel Archives

展開した後、「make oldconfig」を実行すれば、現在の設定を引き継ぐことができます。 あのミラクルパッチも入っているので、アップグレードすると幸せになれます。 デフォルトではNoになっているので、Yesを選んでください。

CONFIG_SCHED_AUTOGROUP=y

具体的なコマンドはこんな感じです。

$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2; tar xjf linux-2.6.38.tar.bz2; cd linux-2.6.38
$ make oldconfig
$ sudo nice make-kpkg clean; sudo nice make-kpkg --initrd --revision=001 kernel_image kernel_headers
$ sudo dpkg -i ../linux-headers-2.6.38-rc7_001_i386.deb ../linux-image-2.6.38_001_i386.deb 

xserver-xorg-video-intelの最新版を取ってくる

ここまででフリーズは解決しましたが、今度は描画速度の問題を解決します。 Debian squeezeの xserver-xorg-video-intel はDRIが無効になっています。 このせいで描画速度がガタ落ちなのです。

これは最新版 xserver-xorg-video-intel を本家から取ってコンパイルくることで解決します。 最新版では、たとえグラボが固まっても復帰してくれます。

コンパイルのためのヘッダファイルは一括して取ってこれます。

コンパイル後、squeezeにインストールされているファイルを強引に置き換えます。

$ sudo apt-get build-dep xserver-xorg-video-intel
$ wget http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/snapshot/xf86-video-intel-2.14.901.tar.bz2
$ tar xjf xf86-video-intel-2.14.901.tar.bz2
$ cd xf86-video-intel-2.14.901
$ sh autogen.sh
$ make
$ cd src
$ sudo cp legacy/i810/xvmc/.libs/libI810XvMC.so.1.0.0  /usr/lib/libI810XvMC.so.1.0.0
$ sudo cp xvmc/.libs/libIntelXvMC.so.1.0.0 /usr/lib/libIntelXvMC.so.1.0.0
$ sudo cp .libs/intel_drv.so /usr/lib/xorg/modules/drivers/intel_drv.so 

/etc/X11/xorg.confを書き換える

僕のxorg.confを貼り付けておきます。 この設定にしてから、まだ固まったことはありません。

Section "Device"
Identifier "Configured Video Device"
Driver "intel"
# これを入れないと固まる
Option "Shadow" "True"
EndSection

Section "Monitor"
Identifier "Configured Monitor"
EndSection

Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
# 速度優先のため16bppにしている
DefaultDepth	16
	SubSection "Display"
		Depth		16
		Modes		"1920x1080"
	EndSubSection
	SubSection "Display"
		Depth		24
		Modes		"1920x1080"
	EndSubSection
	SubSection "Display"
		Depth		32
		Modes		"1920x1080"
	EndSubSection
EndSection

DRIが有効になっているならば、以下のように表示されるはずです。 無効のときは「direct rendering: Failed」と出てきます。

$ grep 'direct render' /var/log/Xorg.0.log
(II) intel(0): direct rendering: DRI2 Enabled

その結果

xengineの値が8000→24000と大幅に上がり、描画はかなり速くなりました。めでたしめでたし。

*1:2.6.38rc7を試しましたが、OSそのものがフリーズする問題があり、使えませんでした。

*2:startxを実行している人は少数派?