Archive for category Linux

Debian/Ubuntu でデフォルトで入る parallel コマンドは、 GNU parallel ではない

Time to Read

2分

Debian/Ubuntu では、 moreutils というパッケージに parallel と言うプログラムが含まれている(Debianだとsqueezeから)。しかし、この parallel は GNU parallel ではなく、似ているけどかなり違う何かのようだ。

なので、 parallel と言うコマンド自体は便利なんだけれど、例えば

にあるサンプルがそのまま動かない、素晴らしい導入記事なのに、、、、 そもそもネットで拾えるいろんなサンプルが動かないので…… Ubuntu厨として生きるのはつらい。

で、どうするのか

Read the rest of this entry »

 

byobu をはじめよう

Time to Read

3分

ずっと GNU screen を使ってギ~クを気取りたかったんですが、複雑怪奇な .screenrc などに関するバッドノウハウが怖くて(この辺 zsh 移行とかでも同じようなことが言えそう)何度か挑戦しては挫折していたんです。

でも、ここ数か月ぐらい byobu を導入していて、普通に長いこと使えているし大変快適なので、今回ざっくり紹介してみようかな~とか思います。

byobu とは

Byobu is a Japanese term for decorative, multi-panel screens that serve as folding room dividers. As an open source project, Byobu is an elegant enhancement of the otherwise functional, plain, practical GNU Screen. Byobu includes an enhanced profile and configuration utilities for the GNU screen window manager, such as toggle-able system status notifications.

超拙訳すると:

Byobu は、日本語で、装飾的な複数枚組の “screen” で、折りたたみ可能な部屋の間仕切りとしての機能を持っています。オープンソースプロジェクトの一つとしては、「Byobu」は単独でも機能的で、単純で、実践的ではある GNU Screen の、エレガントな機能強化のことです。 Byobu は、 GNU screen の強化されたプロフィールと、設定のユーティリティを含みます。例えば切り替え可能なシステムステータスの通知機能などです。

ある意味全然ジャンルが違うんですけど Sinatra に対する Padrino framework のようなものかもしれません。

いきなり使おう

Ubuntu Japanese Team の @_hito_ さんによる素晴らしいチュートリアルがあるんですが、若干コマンドなどが古いです。一緒に、 screenからbyobuへ移行しようとしてわかったことと、一旦保留した理由 に目を通すことをおすすめします。一応最新の Ubuntu 11.04 natty では以下のような感じになります。

まずはインストール。

1
sudo apt-get install byobu

すぐ使えます。無料です(OSS ですし)。

1
byobu

無設定で screen とだけ打ってみると、違いがはっきり分かると思います。単品の screen は、最初に英語の長ったらしい説明が出るだけで、初期状態ではただ bash プロセスを新たに立ち上げたのと変わらない感じがします。 byobu は、最初からいきなりステータスとかが出てテンションが上がりますね。あ、上がりませんか……。

他は、基本的に screen と同様なキーバインドです。エスケープシーケンスとして、多分初期状態では Ctrl-A になってるとおもいますが、これだと普通に bash 上で不便なので、変更したいです。

1
byobu-config

日本語リミックスだとこの辺もきっちり日本語化されています、すごい……。※ 環境によってはやや表示が崩れるかもしれません。

「エスケープシーケンスの変更」もしくはそれっぽい項目を選べば簡単に変更可能ですね。

僕とかはたいてい「Ctrl-]」にしています。ただ、 telnet を使う時などには不便ですが……。

他にも色々設定できます。「ステータス通知の切り替え」とか変えてみてもいいでしょう。むろん、 ~/.screenrc での変更も反映されます。でも、別に byobu のデフォルトであまり困った感じがしないので、僕の ~/.screenrc はまっさらに近いです。

1
2
3
4
5
6
$ cat ~/.screenrc 
escape ^]^]
zombie ^[
 
bind , prev
bind . next

これだけ。また、 byobu-config での変更はどうも ~/.byobu 以下に保存されるようですが、自分で直接ファイルをいじらないほうがいいと思います。

あと、リモートサーバなら「ログイン時に起動」をオンにしたいところです。作業途中でもデタッチできるし圧倒的に便利です。ビバ screen/byobu !

byobu を byobu っぽく使う最低限のコマンド

これぐらいを覚えておけばいいでしょう、 [<エスケープシーケンス> + ?] でヘルプも出ますし、チートシートもそこら中転がっています。

キ~バインド 起こること 覚え方
[<エスケープシーケンス> + c,^c] 新しいタブを作成 “c”reate
[<エスケープシーケンス> + k,K] タブを閉じる “k”ill
[<エスケープシーケンス> + A] タブのタイトル変更 t”A”itoru(?)
[<エスケープシーケンス> + S] ウィンドウ分割(水平) “S”plit
[<エスケープシーケンス> + |] ウィンドウ分割(垂直) | の形
[<エスケープシーケンス> + <Tab>] 分割されたウィンドウを移動
[<エスケープシーケンス> + X] 分割されたウィンドウを閉じる X ボタン
[<エスケープシーケンス> + p,^p] 前のタブへ “p”rev
[<エスケープシーケンス> + n,^n] 次のタブへ “n”ext
[<エスケープシーケンス> + <数字>] その数字のタブへ
[<エスケープシーケンス> + d] デタッチ(一時的にscreenを閉じる、すぐに戻る) “d”etach

Debian その他なあなたは

Debian では、 squeeze 以降でないと標準のリポジトリからインストールできません。アップグレードの理由がまた一つ増えましたね!

yum コマンドが好きな方も、標準ではインストールできないとはいえ Launchpad などにそれらしい情報があるようです。

* * *

byobu は Ubuntu から出てきたナイスなものの一つだと思います。でも、上述のように Debian では squeeze でようやく普通に使えるようになったりとかまだまだ普及してない感じなので、もっと広まるといいなあと思って書きました。

更なるカスタマイズ道を進みたい方は、以下の記事が参考になる可能性もあります。僕は、下の記事を読んで「byobu プロジェクトが誕生して本当によかった!」 って思いました。

まあ、 GNU screen は人気のあるソフトウェアなので日本語情報も沢山あると思います……(続きは Google で!)。

 

Ruby – gtkmozembedの入れ方

Time to Read

1分

ずいぶん前の話ですが、

こういう記事を書いたんですけど、この記事ではaptで入れてますが、最近は

1
2
gem install gtk2
gem install gtkmozembed

と言う風に、Rubygemsからインストールも出来るようです。bundlerなどと連携して管理するのが楽になりました……。

この際、いくつかヘッダが必要になります。Ubuntu/Debianの場合、gtk2は参考ページのとおり libgtk2.0-dev でいいんですが、gtkmozembed gemは、

xulrunner-dev

パッケージが必要になります。

libxul-embedding-unstable is not found.
libxul-embedding is not found.
xulrunner-gtkmozembed is not found.
firefox-gtkmozembed is not found.
seamonkey-gtkmozembed is not found.
mozilla-gtkmozembed is not found.
No gtkmozembed is found. Abort.

インストール失敗時にこういうメッセージが表示されますが、「libxul-embedding」は Fedora 等向けのパッケージ名です。要注意。

Ruby1.8.7、1.9.2、REE、などでコンパイルを確認しています。ただ、一番安定するのは 1.8.7 のようです…。

 

etckeeperのつかいかた(インストール、サブコマンド追加)

Time to Read

2分

etckeeperと言うものがあり、要するに /etc 以下をリポジトリにして変更履歴を管理してくれる、大変大雑把と言えば大雑把なソフトウェアがあります。大雑把ですが、結構便利です。

インストール

1
sudo aptitude install git-core etckeeper

そしたら、 /etc/etckeeper/etckeeper.conf と言う若干くどい名前の設定ファイルを編集。

1
2
3
4
5
# The VCS to use.
#VCS="hg"
VCS="git"
#VCS="bzr"
#VCS="darcs"

Gitの他、MercurialやBazaarなんかが使えます。ただし、Subversionなどのような、中央リポジトリが必要なバージョン管理システムは使えませんね(ローカルにコミットしていくため)。

VCSを決めたら:

1
2
sudo etckeeper init
sudo etckeeper commit

使い方

勝手にバージョン管理するんで、特にとりたててすることは無いです。

それで終わってもアレなので、、コミットのタイミングは主に以下の2点です。

  1. aptitudeの操作
  2. 日付が変わったとき

たとえばaptitude installしたりすると自動で変更をコミットしてくれます。また、 /etc/cron.daily/etckeeper というジョブがインストールされて、毎日変更をチェックし、変更があれば自動コミットします。

手動で /etc の変更をコミットしたい場合は:

1
sudo etckeeper commit "message"

サブコマンドの追加

/etc/etckeeper/ 以下には、commit.d、init.d、unclean.dなどのディレクトリがあり、サブコマンドcommit、init、unclean…といった感じで対応しています。そのサブコマンドを発行すると、 ${SUBCOMMAND}.d/ 以下の実行スクリプトを順次実行していきます。

たとえば、/etc/etckeeper/log.d と言うディレクトリを作れば、 etckeeper log と言うサブコマンドが利用できるようになります。 /etc/etckeeper/log.d/10LOG と言うシェルスクリプトを以下のように作成してみましょう。

1
2
3
4
5
6
#!/bin/bash
git --git-dir=/etc/.git log \
    --graph \
    --all \
    --color \
    --pretty='%x09%h %cn%x09%C(yellow)(%cr)%Creset%x09%s %Cred%d%Creset'

これで:

Logを見るのが楽になりました。etckeeper自体は微妙に機能不足感は否めませんが、大雑把な仕組みだけあって大雑把に機能追加出来ます。活用しましょう。

ちなみに、git --git-dir=/etc/.git log の順番でないと動きません。。。しばらく、動かないスクリプトを載せていて失礼しました(19:33修正)。

なお、上述のカラフルなGit logのフォーマットは、以下のサイトを参考にさせていただいております。

ドキュメントなど

 

ServersMan@VPSのDebianをSqueezeにした。

Time to Read

1分

先日言ったとおり、サーバの引越しを完了させた。

ServersMan@VPSのStandardプランでやっている。ServersMan@VPSは最安値で490円/月だったり、2ヶ月無料キャンペーンをやっていたりするにも関わらずDebianが使えるので、apt信者の人でも安心して使えると思った。

とはいえ、契約初期状態ではDebianはlennyのリポジトリを向いている。これを、squeezeに向けて、なるべく最新のソフトウェアを使えるようにする(以下の方法はサポート対象外の手順なので、自己責任で!)。

手順は簡単で、 /etc/apt/sources.list を、「Debian JP Project – ミラーサイトについて」を参照しつつ例えば以下のようにする(バックアップは取っておこうね!)。

1
2
3
4
5
6
7
8
9
deb http://ftp2.jp.debian.org/debian squeeze main contrib non-free
 
deb http://security.debian.org/ squeeze/updates main contrib non-free
 
# Uncomment if you want to use Debian volatile stable updates
#deb http://ftp2.jp.debian.org/debian-volatile squeeze/volatile main contrib non-free
# Uncomment if you want the apt-get source function to work
#deb-src http://ftp2.jp.debian.org/debian squeeze main contrib non-free
#deb-src http://ftp2.jp.debian.org/debian-volatile squeeze/volatile main contrib non-free

ちなみに初期段階ではセントラルに向いててヘヴィなので、ついでに日本のサーバに向けておく。

debian-volatileは、現状squeezeがテスト段階である以上、当然まだ使えない。あと、deb-srcについては、aptitude updateが重くなるし、必要になってからアンコメントすればいいと思う。

上記の設定をしたら、まず、aptdpkgaptitudeだけ最新の状態にする。また、初期状態ではlocaleが変な感じなので再設定。

1
2
3
sudo aptitude update
sudo aptitude install apt dpkg aptitude locales
sudo dpkg-reconfigure locales

dpkg-reconfigureで「ja_JP.UTF-8 UTF-8」を頑張って探して設定。これで、aptitude installしてもロケールまわりで変な警告が出ることがなくなる。

そして、

1
sudo aptitude full-upgrade

それなりに長いこと掛かるが、帯域は思ったより広いのでものすごく長くは掛からない。多分、何度も何度も「パッケージメンテナのバージョンをインストールして置き換えますか?」みたいな質問が出てくるが、「N」を選んだほうがいいと思う。

終わったら、ドキドキしながら:

1
sudo shutdown -r now

再び上がってくるまでお茶でも飲みながら待つ。上がらなかったら、管理画面から上げよう。それでも上がらなかったら、初期化しよう。。。

うまくいけば、これでsqueezeのリポジトリからより新しいソフトウェアが利用できるようになる。ちなみに、僕はアップデートする前にもうapache2を削除してしまっているので、squeezeでもServersManが利用できるかどうかはよく分からない。

現状、squeezeのリポジトリでは、例えばRubyなら1.9.2が、MySQLなら5.1.49が入る。lennyもいい加減リリースされて経つし、squeezeは年内には正式版になるようなので、個人利用ぐらいならこの辺で乗り換えてもよいんじゃないかと思った。

Thanks to: