Browse Month: June 2010

RE: 独自/ミラー yum リポジトリを作ろう

アシアルさんのブログに「独自/ミラー yum リポジトリを作ろう」というエントリが公開されました。

とても分かりやすく「独自/ミラー yum リポジトリ」を作る方法がまとまっている素晴らしいエントリです。

アシアルさんのブログでは、rsync や createrepo などを手動で使っていますが、これを cobbler というツールを使うともっと簡単に「独自/ミラー yum リポジトリ」を作成することができます。

まず、CentOS 5.x のミラーを作成する方法を紹介します。

EPEL を設定してから、cobbler をインストールします。

$ sudo yum install cobbler

CentOS ミラーサイト一覧から、自分がいる国にいる近いサイトの rsync 可能なミラーサイトを選びます。ミラーサイトを選んだら、次のコマンドでミラーします。

$ sudo cobbler import –path=rsync://your_centos_mirror_site/centos –name=centos –arch=x86_64

rsync し終わったら、httpd を起動してから、/etc/yum.repos.d に次のような yum リポジトリを追加します。

cobbler をインストールすると、自動的に必要な yum リポジトリの公開設定が /etc/httpd/conf.d/cobbler.conf にされています。

[centos]
name=centos
baseurl=http://localhost/cobbler/repo_mirror/centos
enabled=1
gpgcheck=0
priority=1

ミラーを更新したい場合は、次のような cron を root ユーザの cron で設定します。

/usr/bin/cobbler reposync –tries=3 –no-fail > /dev/null 2>&1

独自の yum リポジトリを作成した場合は、RPM が入っているディレクトリ (例えば /home/naoya/rpms) を用意して、次のコマンドを実行するだけです。

$ sudo cobbler repo add –name=”local” –mirror=”/home/naoya/rpms”

独自の yum リポジトリを更新する場合も、上の cobbler reposync コマンド一発で同期させることができます。

独自の yum リポジトリの設定は、次のようなになります。

[local]
name=local
baseurl=http://localhost/cobbler/repo_mirror/local
enabled=1
gpgcheck=0
priority=1

いかがでしょうか?

cobbler を使うと、とても簡単に yum リポジトリを構築することができます。

ぜひ、試してみてください!

kumofs の RPM を作ってみた

そろそろ本格的に kumofs を使ってみようかなと思いたって、CentOS 5.5 x86_64 向けの RPM を作ってみました。

まず、kumofs には、次のものが必要です(以下の情報は公式ドキュメントを参照しました)。

Linux と g++ と libcrypto と zlib は、CentOS 5.5 x86_64 の標準パッケージに含まれているので標準パッケージをインストールすれば問題ありません。

Ruby は、以前紹介した方法で作成したバージョン 1.8.7 系を RPM でインストールします。

TokyoCabinet は、自分で作成した SPEC ファイルから RPM を作成しました。

MessagePack for C++ も、自分で作成した SPEC ファイルから RPM を作成しました。

MessagePack for Ruby は、RPM を作成してもいいですが gem コマンド一発でインストールすることができるので RPM は作成しませんでした。次のコマンドでインストールします。

$ sudo gem install msgpack

肝心の kumofs ですが、kumofs は分散環境下で使われていることを前提しているので、kumo-manager、kumo-server、kumo-gateway、は別々のサーバであることが普通の環境だと思います。

そこで、kumofs というコアのプログラムが含まれている RPM、manager、server、gateway、をそれぞれ別々の RPM として作成してみました。あわせて、manager、server、gateway、それぞれの redhat 系の起動スクリプト、設定ファイル、logrotate スクリプト、daemontools 用のサンプルスクリプト、を作成して RPM に同梱しました。これからのスクリプトは、まとめて github に置きました。また、作成した RPM も github に置きました(バージョンが少し古いので注意してください)。

sysinit のスクリプトを使うと、kumofs の実行ユーザが root にになります。通常ユーザで実行したい場合は、daemontools などを使うといいと思います。daemontools 用のサンプルスクリプトは、github においてある kumofs-XXX-run.sample と kumofs-XXX-log-run.sample です。daemontools を使う場合は、logrotate のスクリプトを削除するのを忘れないでください。

kumo-gateway のプログラムにも libtokyocabinet がリンクされているのはちょっと気になるところですが、特に弊害はないので気にしないことにします。

ここで作成した RPM で、それぞれのインストール方法を説明します。

まず、manager から、manager にはコアの RPM もインストールします。manager の設定は、/etc/sysconfig/kumo-manager を編集します。daemontools 用のスクリプトも同じ設定ファイルを読み込んでいます。

$ sudo yum install kumofs kumofs-manager

次に server。設定ファイルは、/etc/sysconfig/kumo-server です。

$ sudo yum install kumofs-server

そして、gateway。設定ファイルは、/etc/sysconfig/kumo-gateway です。

$ sudo yum install kumofs-gateway

server と gateway には、kumoctl などの管理系のコマンドはインストールされないので注意してください。server と gateway にはそれぞれに必要な最低限のプログラムをインストールしています。kumofs の管理系のコマンドを使う場合は、manager のサーバ上から使います。

また、kumofs とは関係ありませんが、個人的には rpmforge を本番環境のサーバでは使わない方がいいと思います。過去に、rpmforge を使っていてパッケージまわりでトラブったことがあります。自分で RPM を作成する手間を削減できるので EPEL の方はちゃんとしているので使うのをおすすめします。

今回作成した kumofs の RPM も、EPEL に入れることができるのか提案してみる予定です。

今回の RPM を作るにあたって、次のページを参考にしました。貴重な情報ありがとうございました!

(おまけ)

OSX を使っている人向けに MacPorts でも kumofs をインストールすることができます。

$ sudo port selfupdate

$ sudo port install kumofs

$ sudo port info kumofs
kumofs @0.4.7 (net)
Variants:             universal

Description:          kumofs is a scalable and highly available distributed
key-value store. You can use a memcached client library to
set, get, CAS or delete values from/into kumofs. Backend
storage is Tokyo Cabinet and it will give you great
performance.
Homepage:            http://kumofs.sourceforge.net/

Library Dependencies: msgpack, rb-msgpack, tokyocabinet, openssl, zlib
Platforms:              darwin
License:                  unknown
Maintainers:          < my email address >

MacBook Pro で、外付けディスプレイのみを使う方法

昨年、自宅や出先など大きなディスプレイがあるときは MacBook Pro で外付けディスプレイのみをこの方法で使っていました。

しかし、新しい世代の MacBook Pro になってから、OSX のバージョンアップの影響からなのか、昨年紹介した方法が使えなくなってしまいました。

ずっと不便だなと思っていたのですが、今日偶然こんな映像「Set Up External Monitor/TV to Macbook Pro – Video」を見つけました。この映像によると、次の手順で外付けディスプレイのみを使うことができるようです。

  1. MacBook Pro の LCD を閉じる
  2. スリープ状態になるまで待つ
  3. 適当な外付けキーボードを接続する
  4. MacBook Pro と外部ディスプレイを接続する
  5. 外付けキーボードから、スペースキーを押して復帰させる

この方法をとると、MacBook Pro LCD の解像度ではなく、外付けディスプレイの解像度として切り替えることができるようです。

なるほどと思って、僕もさっそく試してみると上の方法で確かにできました!

ただ、毎回外付けキーボードを接続するのは面倒くさいです。無線 LAN 経由で、スリープ状態から起こすことができるか調べてみるとなんとできるではありませんか!(参考:無線LAN経由で眠っているMacBookを起こす方法 – ザリガニが見ていた…。

ということで、次の方法で MacBook Pro を外付けディスプレイのみで使うことに成功しました。これで、大きいディスプレイがある環境では、マルチディスプレイにするより作業効率が上がります。

  1. MacBook Pro を、同一ネットワーク上からインターネットに接続する
  2. 別のホストコンピュータから、WakeOnLan などのソフトウェアを起動して MacBook Pro を認識させておく
  3. MacBook Pro の LCD を閉じて、スリープ状態にする
  4. 外付けディスプレイに接続する
  5. 手順 2 の WakeOnLan などのソフトウェアから、対象の MacBook Pro を起こす
  6. 対象の MacBook Pro が起きると、外付けディスプレイのみに出力先が切り替わる

あとは、teleport や Synergy なりで、ホストコンピュータから MacBook Pro を操作することができます。

これで、個人的には自宅や出先での作業効率がいくぶんか上がるはずです。

# 2010/06/10: 追記

@htaira さんから、すばらしいアドバイスをいただきました。なんと、次の方法でもできました!

  1. MacBook Pro LCD を閉じる
  2. 外部ディスプレイを接続する
  3. MacBook Pro がスリープ状態になったら、素早く LCD を開いて、すぐに閉じる

これなら、簡単ですね!