カテゴリー別アーカイブ: Linux

atコマンドの書式

久々に使おうと思って書式を調べてみたら、えらく明確な形式で日時を指定できるようになっていました。昔の at コマンドはもうちょっと非直感的だったような気がするんですが。

echo ‘ls /tmp/ > /tmp/z.txt’ | at 15:00 11/30/2013


zphoto を Ubuntu 10.04.4 で使う

お手軽にフォトアルバムを作る必要があったので、ものすごく久々に zphoto を Ubuntu で使ってみました。

libming-dev, libpopt-dev, libimlib2-dev をインストール後に configure, make してみると、下記のようなエラーで止まってしまいました。

make[2]: Entering directory `/home/xxx/tmp/zphoto-1.2'
g++ -DHAVE_CONFIG_H -DLOCALEDIR=\"/usr/local/share/locale\" -DZPHOTO_TEMPLATE_DIR='"/usr/local/share/zphoto/templates/default/en"' -DZPHOTO_FONT='"/usr/local/share/zphoto/fonts/EfontSerifB.fdb"' -DZPHOTO_TEMPLATE_DIR_RELATIVE='"templates/default/en"' -DZPHOTO_FONT_RELATIVE='"EfontSerifB.fdb"' -I. -I. -I. -I.        -O2 -Wall -Wunused -Wuninitialized -c -o image.o image.cpp
image.cpp: In function 'int convert_needed_p(const char*, const char*)':
image.cpp:557: error: invalid conversion from 'const char*' to 'char*'
image.cpp:558: error: invalid conversion from 'const char*' to 'char*'
make[2]: *** [image.o] Error 1
make[2]: Leaving directory `/home/xxx/tmp/zphoto-1.2'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/xxx/tmp/zphoto-1.2'
make: *** [all] Error 2

このエラーを調べてみると、Getting Invalid conversion from const char* to char* on gcc 4.4.1 にもある通り、gcc(g++)のバージョンが 4.4 なのが問題のようです。g++のバージョン4.1を下記のようにしてインストールしました。

 % sudo aptitude install g++-4.1

後はMakefileのCXXをg++-4.1に変更することで、無事にコンパイルが通るようになりました。

% diff -u Makefile.org Makefile
--- Makefile.org     2012-03-26 22:39:09.413993750 +0900
+++ Makefile     2012-03-26 22:41:33.549992947 +0900
@@ -138,7 +138,7 @@
 CFLAGS = -g -O2 -Wall -Wunused -Wuninitialized -Wmissing-prototypes -Wmissing-declarations -pedantic
 CPP = gcc -E
 CPPFLAGS =
-CXX = g++
+CXX = g++-4.1
 CXXDEPMODE = depmode=gcc3
 CXXFLAGS = -O2 -Wall -Wunused -Wuninitialized
 CYGPATH_W = echo

コンパイルが必要なアプリを入れたのは何年かぶりですが、gcc4.4で同様の問題にハマっている人は結構多いみたいです。有名な問題(?)なんですね。

 

 


PukiWiki Plus! を Ubuntu にインストール

Wikiはずっと Pukiwiki を使ってきたんですが、その後継版(?)の PukiWiki Plus! というものがあると知ったので、Ubuntu にインストールしてみました。

PHP5.3 対応やHTML5+jQueryUIポートを行なっている PukiWiki Advance というものもあるようですが、7-zip形式という良くわからない形式でアーカイブされているので試すことはできませんでした。

PukiWiki Plus! のインストール方法は普通の Pukiwiki とほぼ同じようで、多少 locale の設定で迷った位で簡単にインストールできました。

まずは /etc/locale.alias に utf-8 の設定を追加して、ロケールを作り直します。

ja_JP           ja_JP.utf8

% sudo locale-gen

その後、Apacheを再起動すれば前準備は完了です。ロケールが正しく設定されていないと、英語表示となります。詳細に関しては PukiWiki Plus! の質問問箱/247 が参考になるかと思います。

あとは PukiWiki Plus! をインストールするだけです。まずはgitからファイルを持ってきます。

% git clone https://github.com/miko2u/pukiwiki-plus-i18n

次に適当なディレクトリに移動して、Basic認証の設定とファイルのパーミッションを修正します。

% htpasswd .htpasswd xxxxuser
% sudo chown -R www-data *

あとは auth.ini.php でパスワードを設定したり、各種 ini で自分のお好みの設定をすれば完了です。

$adminpass = '{x-php-md5}' . md5('xxxpasswords');

2012/03/29追記:会社にあった Ubuntu 11.04 で試した場合、デフォルトの状態が変わったのか、日本語関係の設定がされてないだけだったのかわかりませんが、locale-gen の前に、言語パックなどのインストール・設定が必要でした。

% sudo aptitude install language-pack-ja
% sudo localedef -i ja_JP -f UTF-8 -A /etc/locale.alias ja_JP.UTF-8

 


UNIX Timeを人間がわかる形式に変更するコマンド

時々ですが、Unix Time を人間が見てわかるような形式に変換したくなる時があります。そういう時は今までは Ruby か Python で適当なワンライナーを書いてすませていたんですが、実は date コマンド一発で相互変換できちゃうのを知りました。

例えば、2013/7/13 21:00をUnix Timeに変換する場合

$ date +%s --date "2013-07-13 21:00"
1373716800

逆に Unix Time から変換する場合

date --date @1373716800
2013年 7月 13日 土曜日 21:00:00 JST

あまりに手軽すぎて、今まで何をやってたんだろう、と思っちゃいました。