rpmファイルを簡単に作成する

CentOSでは、なかなか新しいパッケージが配信されない。

ImageMagickとか、Rubyとか、SQLiteとか。。

なので、自前でrpmファイルを作ろうと思った。

方法は、checkinstallというツールを入れる。

ホームページは

http://www.asic-linux.com.mx/~izto/checkinstall/index.php

で、ソースコードをダウンロード

wget http://www.asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz

ファイルの解凍とコンパイル

tar xvfz checkinstall-1.6.2.tar.gz

cd checkinstall-1.6.2

make

make install

これで、/usr/local/sbin/checkinstall

が生成される

次に、今回はSQLiteをダウンロード

ホームページ

http://www.sqlite.org/

から

autoconfの方をダウンロード

wget http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz

ファイルの解凍

tar xvfz sqlite-autoconf-3070603.tar.gz

mv sqlite-autoconf-3070603 sqlite

cd sqlite

./configure

これでsqliteディレクトリにMakeFileが出来上がったので

checkinstallを実行

checkinstall

あとは、yum –nogpgcheck install /usr/src/redhat/RPMS/i386/sqlite-3.7.6.3-1.i386.rpm

で、インストールされる

※sqlite-develはどうやって作るか分からない。。。。。。

 

Rails 2.*系で「rake/rdoctask is deprecated. Use rdoc/task instead (in RDoc 2.4.2+)」エラー

Rails 2.*系のプロジェクトで、rakeコマンドをたたくと、

というエラーが発生することがある。

このエラーは rake のバージョンが新しすぎるのが原因。

基本的にRails3.0.5より前のRailsでは、rakeのバージョンは0.8.7を使う。

新しいrakeが入っている場合

と実行すればよい

CentOSでDHCPのIPアドレスを再取得する

DHCPでIPアドレスを取得していて、再取得させたい場合

dhclientコマンドを使用する

まずは現在のIPアドレスを解放する

次に取得処理を実行する

a

a

a

a

sed で、ファイルの中身を一括して置換する

sedを使ってファイルの中身を一括して置換する時の書き方

ファイルには

id,携帯電話番号(ハイフンなし)

[text]1,09000000000
2,09000000001
3,09000000002[/text]

という感じで入っている

これを、

[sql]update users set mobile_phone = ‘[携帯電話番号(ハイフンあり)]’ where id = [id];[/sql]

という形に変換したい。

[shell]sed -e "s/\([^,]*\),\([0-9]\{3\}\)\([0-9]\{4\}\)\([0-9]\{4\}\)/update users set mobile_phone = ‘\2-\3-\4’ where id = \1;/" 電話番号.csv[/shell]

ar-octopus

Railsは、標準では基本的にDBひとつの構成で動く作りになっている。

大規模サイトなどで、DBの負荷も高く、DBを分割しないといけなくなった場合に

Railsの標準構成では難しくなってくる。

そこで、ar-octopus を使う。

これは、更新系の処理はマスターに接続し、参照系の処理はスレイブを参照するように設定できる。

ホームページ

github

Rails 3とRails 2.3.*に対応

インストール

Gemfileに

を追加して

実行

使い方

コンフィグファイルを設定

コンフィグファイルの場所は

#config/shards.yml

で、基本的な設定内容は

※詳しいshards.ymlファイルの設定方法はこちら

usingを使うと、データベースを切り替えることが出来る

以下の場合、Userのfindクエリーの接続先はslaveとなる

ブロックにすることで、ブロック内でのクエリーを一括して指定することが出来る

マイグレーションを実行するデータベースを指定する

レプリケーションの場合

#config/shards.yml ファイルを以下のようにする

replicated: true を設定した場合、database.ymlに設定したものがマスターになる。