Category Archives: コマンド

pacoでソースからインストールしたアプリを管理する

このエントリーをはてなブックマークに追加
はてなブックマーク - pacoでソースからインストールしたアプリを管理する
Share on Facebook

pacoは、自分でソースからインストールしたアプリでもrpmのようにパッケージ管理できるようになるツールです。

インストール手順

最新のソースは paco – a source code pacKAGE oRGANIZER for Unix/Linux で確認してください。

# wget http://sourceforge.net/projects/paco/files/paco/2.0.9/paco-2.0.9.tar.bz2/download
# tar xvf paco-2.0.9.tar.bz2 
# cd paco-2.0.9
# ./configure --disable-gpaco
# make
# make install
# make logme

今回はGUIを使わないので、configureオプションに「–disable-gpaco」を付けています。 これを付けないと「No package ‘gtkmm-2.4′ found」というエラーが出ます。

最後の「make logme」でpaco自身のインストール内容を記録しています。

使い方

インストールを記録する

今後、何らかのアプリをmake installする際には、「paco -D」を付けることでpacoに記録できます。

# cd {インストールしたいパッケージ}
# paco -D make install

インストール済みパッケージを確認する

「-a」オプションを使います。

# paco -a
paco-2.0.9

パッケージでインストールされたファイルを確認する

「-f」オプションを使います。

$ paco -f paco-2.0.9
paco-2.0.9:
/usr/local/share/paco/README
/usr/local/lib/libpaco-log.a
/usr/local/lib/libpaco-log.la
/usr/local/lib/libpaco-log.so
/usr/local/lib/libpaco-log.so.0
/usr/local/lib/libpaco-log.so.0.0.0
/usr/local/bin/paco
/usr/local/etc/pacorc
/usr/local/lib/pkgconfig/paco.pc
/usr/local/share/man/man5/pacorc.5
/usr/local/share/man/man8/paco.8
/usr/local/share/man/man8/pacoball.8
/usr/local/share/man/man8/rpm2paco.8
/usr/local/share/man/man8/superpaco.8
/usr/local/share/paco/faq.txt
/usr/local/share/paco/pacorc
/usr/local/bin/ocap
/usr/local/bin/pacoball
/usr/local/bin/rpm2paco
/usr/local/bin/superpaco

パッケージをアンインストールする

「-r」オプションです。

# paco -r {アンインストールしたいパッケージ名}

参考

CentOSでbzip2が解凍できないエラー

このエントリーをはてなブックマークに追加
はてなブックマーク - CentOSでbzip2が解凍できないエラー
Share on Facebook

bzip2ファイルを解凍しようと思ったら、見慣れないエラーが出ました。

# tar xvf paco-2.0.9.tar.bz2 
tar: bzip2: exec 不能: そのようなファイルやディレクトリはありません
tar: エラーを回復できません: 直ちに終了します
tar: Child returned status 2
tar: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました

ただ単にbzip2がインストールされていなかったのが原因でした。yumで入れて即解決です。

# yum -y install bzip2
...
Installed:
  bzip2.x86_64 0:1.0.3-6.el5_5                                                                                     

Complete!

CloudCore VPSでこのエラーに遭遇しました。 CentOSの最小構成でインストールされているようで、ごく普通のコマンドが使えないことが多いです。 パッケージが不足していないか注意が必要ですね。

参考

vmstatの値をロギングする

このエントリーをはてなブックマークに追加
はてなブックマーク - vmstatの値をロギングする
Share on Facebook

vmstatの値をファイルに出力したいとき、次のコマンドが使えます。

nohup vmstat -n -S M 1 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 } { system(":") }' >> /path/to/log &

出力は下記のようになります。

2011/09/28 15:51:07 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
2011/09/28 15:51:07  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
2011/09/28 15:51:07  1  0      0    251    153    358    0    0     0     9    1    0  0  0 99  0  0
2011/09/28 15:51:08  0  0      0    251    153    358    0    0     0     0 1012   40  0  1 99  0  0
2011/09/28 15:51:09  0  0      0    251    153    358    0    0     0     0 1004   37  0  0 100  0  0

このプロセスを終了したい場合は、下記のようにkillしてやればOKです。

$ pgrep vmstat      # vmstatのprocess idを取得する
29248

$ kill {上で出てきたpid}

参考

svnでdiffの行数を取得する

このエントリーをはてなブックマークに追加
はてなブックマーク - svnでdiffの行数を取得する
Share on Facebook

どれだけコーディングしたかチェックするため、svnのdiffの行数を取得するコマンドを考えました。 下のコマンドを叩くと、変更された行の総数が表示されます。

(2011-08-17修正) 以前のコードはdiffのヘッダ行まで取得してしまっていたので、正しい数値が得られるよう修正しました。

svn diff -r {before}[:{after}] -x -b {path} | grep -E '^[+\-][[:blank:]]' | wc -l

例えば「チェンジセット301~310で uso.php に発生した差分の総行数」は、下のようになります。

# svn diff -r 301:310 -x -b ./uso.php | grep -E '^[+\-][[:blank:]]' | wc -l
500

ロジックは、

  1. 空白文字の差分(インデントや空行の削除)を無視してdiffを取る
  2. 差分行だけ(「+ 」「- 」どちらかから始まっている行)を取得する
  3. 行数をカウントする

となっています。

参考