innodb_log_file_sizeの変更

innodb_log_file_size を変更する場合は、ログファイルをいったん削除して再作成する必要がある。
具体的には以下のような手順になる。

my.cnfを編集

/etc/my.cnf

[mysqld]
innodb_buffer_pool_size=512M
innodb_log_file_size=128M

シャットダウンと同時にテーブルスペースへデータを反映させるよう設定

$ mysql -u root -p
mysql> SET GLOBAL innodb_fast_shutdown=0;

mysqldを停止

# /etc/init.d/mysqld stop

ログをリネーム

# cd /var/lib/mysql/
# mv ib_logfile0 ib_logfile0.bak
# mv ib_logfile1 ib_logfile1.bak

mysqldを開始

# /etc/init.d/mysqld start

MySQLの「innodb_buffer_pool_size」と「innodb_log_file_size」の設定 - FlatLabs

CentOS 5.7 に PHP 5.3 の mcrypt 拡張とpearをインストール

yumのphp53でPHP5.3がインストールできる。拡張もyumにphp53-XXXXがあるが、php53-pearとphp53-mcryptはない。

mcryptのインストール

CentOS5.7のyumでphp53がインストールされた環境に、PHPのソースからmcrypt拡張をインストールした。
まず必要なmcrypt拡張のビルドに必要なパッケージをインストールしておく。

$ sudo yum install php53-devel libmcrypt-devel

yumでインストールしたphpと同じバージョンのソースを http://jp2.php.net/releases/ などPHPのダウンロードサイトからダウンロード、展開してmcrypt拡張をビルド、インストール。

$ wget http://museum.php.net/php5/php-5.3.3.tar.gz
$ tar xzvf php-5.3.3.tar.gz
$ cd php-5.3.3/ext/mcrypt/
$ phpize
$ aclocal
$ ./configure
$ make
$ sudo make install

php.iniを編集

extension=mcrypt.so

CentOS 5.6 に PHP 5.3 の mcrypt 拡張をインストールする (phpMyAdmin) | MyNotebook

pearのインストールとアップグレード

pearは以下の手順でインストール、アップグレード。

$ sudo yum install php-pear
$ sudo pear upgrade --force Archive_Tar
$ sudo pear upgrade --force Console_Getopt
$ sudo pear upgrade PEAR

無視ファイル以外をまとめて svn add、紛失ファイルをまとめてsvn del

作業コピーにあるすべてのバージョン化されていないオブジェクトを再帰的に追加するには、

$ svn add * --force

とやる。

svn add * だと、既にバージョン管理下にあるディレクトリのまだバージョン管理下にないファイルが追加されないから、--force を付けているのだが、この場合、実行したディレクトリ直下のsvn:ignore属性に設定した無視ファイルや無視ディレクトリも追加されてしまう。
また、既にバージョン管理下にあるファイルも追加しようとするので、警告が出て汚い。

結局、svnだけではいい方法はない。

無視ファイルや無視ディレクトリを除いて、Subversionのバージョン管理下にないファイルをまとめてaddしたり、バージョン管理下にあるのになくなった(物理的に削除された)ファイルをまとめてdelするには、svn status の出力をgrepでフィルタしてsedで置き換える以下のようなaliasを設定するとよい。

~/.bashrc

alias svndel="svn st | grep '^!' | sed -e 's/\![ ]*/svn del /g' | sh"
alias svnadd="svn st | grep '^?' | sed -e 's/\?[ ]*/svn add /g' | sh"

これは便利。

svn に登録されていないファイルをまとめて svn add:Goodpic
svn addがめんどくさいので | firegoby

Can't install RMagick 2.13.1. Can't find MagickWand.h.

ImageMagick 6.7.3-7をソースからインストールした環境に、gemでRMagickをインストールしようとしたら、以下のエラーが発生した。

$ sudo gem install rmagick
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
	ERROR: Failed to build gem native extension.
        /opt/ruby-enterprise-1.8.7-2011.03/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... yes
checking for ImageMagick version >= 6.4.9... yes
checking for HDRI disabled version of ImageMagick... yes
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
checking for stdint.h... yes
checking for sys/types.h... yes
checking for wand/MagickWand.h... no
Can't install RMagick 2.13.1. Can't find MagickWand.h.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.
Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/opt/ruby-enterprise-1.8.7-2011.03/bin/ruby
Gem files will remain installed in /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/gems/1.8/gems/rmagick-2.13.1 for inspection.
Results logged to /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/gems/1.8/gems/rmagick-2.13.1/ext/RMagick/gem_make.out

ImageMagickは6.7.3-7をソースからインストールしている。
ImageMagick 6.6.9-10の場合は、Rmagickをインストールできた。

対処方法

エラーメッセージに、

Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable

とあるので、MagickCore.pcが含まれているディレクトリを探して、PKG_CONFIG_PATHにセットするとインストールできた。

$ find /usr/local -name MagickCore.pc
/usr/local/lib/pkgconfig/MagickCore.pc
$ sudo PKG_CONFIG_PATH=/usr/local/lib/pkgconfig gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.13.1
1 gem installed
Installing ri documentation for rmagick-2.13.1...
Installing RDoc documentation for rmagick-2.13.1...

電子署名でダウンロードファイルを検証

gnupgがインストールされているか確認。

$ yum list installed gnupg
Loaded plugins: fastestmirror
Installed Packages
gnupg.x86_64                     1.4.5-14.el5_5.1                      installed

インストールされていなければインストール

$ sudo yum install gnupg

※Mac OS X の場合は、MacPortsでgnupgをインストールできる。
設定ファイルを初期化する。
--list-keysはgpgに登録されている公開鍵を表示するコマンド。
初回実行時に設定ファイルが自動的に作成される。

$ gpg --list-key
gpg: ディレクトリー「/home/pistolfly/.gnupg」ができました
gpg: 新しい構成ファイル「/home/pistolfly/.gnupg/gpg.conf」ができました
gpg: 警告: 「/home/pistolfly/.gnupg/gpg.conf」のオプションは起動している間、有効になりません
gpg: 鍵輪「/home/pistolfly/.gnupg/pubring.gpg」ができました
gpg: /home/pistolfly/.gnupg/trustdb.gpg: 信用データベースができました

~/.gnupg/gpg.conf を編集。

$ vi ~/.gnupg/gpg.conf 

以下の部分のコメントを外して、公開鍵を鍵サーバから自動的に取得できるようにする。

#keyserver-options auto-key-retrieve

 ↓

keyserver-options auto-key-retrieve

ダウンロードファイルの真正性を確認する

gpg --verify <電子署名ファイル>

例:

$ ls emacs*
emacs-23.3a.tar.gz emacs-23.3a.tar.gz.sig
$ gpg --verify emacs-23.3a.tar.gz.sig 
gpg: 2011年08月03日 00時39分07秒 JSTにDSA鍵ID BC40251Cで施された署名
gpg: 鍵BC40251Cをhkpからサーバーsubkeys.pgp.netに要求
gpg: 鍵BC40251C: 公開鍵"Chong Yidong <cyd@stupidchicken.com>"を読み込みました
gpg: 絶対的に信用する鍵が見つかりません
gpg:     処理数の合計: 1
gpg:           読込み: 1
gpg: "Chong Yidong <cyd@stupidchicken.com>"からの正しい署名
gpg: 警告: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵の指紋: AF1A 0574 841E 0F2D EDE2  829A 764D A716 BC40 251C

gpg: "Chong Yidong <cyd@stupidchicken.com>"からの正しい署名
とあるので、OK。
gpg: 警告: この鍵は信用できる署名で証明されていません!
は、公開鍵を信頼していない状態なので表示されている。

制御文字の入力方法

Emacs

C-q 制御文字

例: エスケープ文字を入力

C-q C-[

シェル、vim

Ctrl+V 制御文字

例: エスケープ文字を入力

Ctrl+V Ctrl+[

コントロールキーと同時に押す文字は?

上記で「制御文字」と記載しているところは、Ctrl+(コントロールキーと同時に押す)で送出するが、この時のコントロールキーと同時に押す文字は、入力したい制御文字の7ビット目に1をセット、つまり0x40(64)を足した文字である。
man ascii 等でASCII文字の一覧を表示して探す。

例:
エスケープ文字は0x1B(27)
7ビット目に1をセットする=0x40(64)を足すと0x5B(91)
0x5B(91)は[
よってエスケープ文字を送出するにはCtrl+[

改行は0x0A(10)
7ビット目に1をセットする=0x40(64)を足すと0x4A(74)
0x4A(74)はJ
よって改行を送出するにはCtrl+J

https://ja.wikipedia.org/wiki/ASCII#ASCII.E5.8D.B0.E5.AD.97.E5.8F.AF.E8.83.BD.E6.96.87.E5.AD.97

なお、印字可能文字のうち「@」から始まる32文字については、ASCII値を64減じて対応する制御文字を求め、この制御文字を「コントロール+」(英: control+)という前置表現を付けた印字可能文字で表記する慣習がある。

例:BELコード(07) →「コントロール+G」(受信した側の機器で注意喚起音が鳴る)

この制御文字の表記方法は、キーボード上の印字可能文字キーを制御文字の送出に用いていた機器の名残りであると考えられる(7ビット目を0にセットする専用キー(Ctrlキー)を、印字可能文字キーと同時に押して制御文字を送出)。

エスケープ文字の入力方法 - nelnalog.note

tune2fsでfsckのタイミングを設定する

久しぶりに再起動しようとしたら、強制的にfsckが始まってしまい、なかなか起動しない。
ext2/ext3/ext4ファイルシステムでfsck(実際にはe2fsck)のタイミングを設定、表示するには、tune2fsを使う。

表示

# tune2fs -l /dev/sda1
・・・(略)
Mount count:              7
Maximum mount count:      27
Last checked:             Fri Oct 21 03:41:32 2011
Check interval:           15552000 (6 months)
Next check after:         Wed Apr 18 03:41:32 2012
・・・(略)

自動チェックを停止する

# tune2fs -c 0 -i 0 /dev/sda1 
tune2fs 1.39 (29-May-2006)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds

確認

# tune2fs -l /dev/sda1
・・・(略)
Mount count:              7
Maximum mount count:      -1
Last checked:             Fri Oct 21 03:41:32 2011
Check interval:           0 (<none>)
・・・(略)

Source: tune2fs でfsckを制御 - ike-daiの日記

MacPorts で特定のパッケージのみ除外する

$ sudo port upgrade outdated

とやると、アップデートのあるportsをすべてまとめてアップグレードできるが、特定のportsはアップグレードしたくない場合は、以下のように演算子を使って指定できる。
例: PHP関連はアップグレードしたくない場合

$ sudo port upgrade outdated and not php*

Excluding packages from MacPorts operations | The Gippy Pages