UNIXやLinux: 2009年1月アーカイブ

プログラムの中で自動でパスワード付きの圧縮ファイルが作れないか・・・という話があったので zip コマンドについて調査。

zip -P パスワード 圧縮ファイル名(*.zip) 圧縮対象ファイル . . .

で、パスワードをかけて圧縮出来る。
解凍するときは、unzip コマンドでも同じように -P オプションをつけてやればOK。

具体的には、例えば hogehoge というパスワードをかけて圧縮する場合、

<圧縮>
zip -P hogehoge exsample_files.zip exsample_file1.txt exsample_file2.txt
<解凍>
unzip -P hogehoge -d . exsample_files.zip

という感じ。

まあ、あんまり P オプションは使うな・・・ということのようだが、他人がコマンドを見れない環境であれば全然問題ないと思うがね。(生理的に駄目だという人は、多分、ウィルスに感染したファイルの入った FD を差し込んだだけで青ざめるような人なんだろうな(笑))

※チェックしたのは、Red Hat Enterprise Linux ES release 4 (Nahant Update 4)
 上にて。

MovableType の MailPack plugin のメール取得処理で、

[MailPack] listner.pm Can't locate object method "binmode" via package "IO::File" at /usr/lib/perl5/site_perl/5.8.5/MIME/Body.pm line 437.

というエラーが出てしまう。
確かに、/usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/IO/File.pm を見てみると、binmode なんてメソッドは無い。

なので、CPAN から最新のソース(http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.2301.tar.gz)を取ってきてインストールしてみた。(最新つっても、2006/3/26 fix ですよ。枯れてるなぁ(^^;)

# grep binmode /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/IO/File.pm
<略>
sub binmode {
    ( @_ == 1 or @_ == 2 ) or croak 'usage $fh->binmode([LAYER])';
<略>

をを、ちゃんと binmode が存在してるじゃないすか。グー。

CentOS 4.7 の File.pm は相当古いんじゃねえ。

MTOS 4.23-ja で、cron に run-periodic-tasks を登録して実行すると、MT/Bootstrap.pm と MT.pm が見つからないってエラーが出るね。
cron 実行時のカレントディレクトリからのパスが通ってないようで。

Can't locate MT/Bootstrap.pm in @INC (@INC contains: lib ../lib /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi <略> .) at /var/www/html/mt2/tools/run-periodic-tasks line 44.

とか、

Can't locate MT.pm in @INC (@INC contains: /var/www/html/mt/tools/lib /var/www/html/mt/extlib <略> .) at /var/www/html/mt2/tools/run-periodic-tasks line 45.

とか。

ずいぶん前から既知のエラーのようだけど、未だに直ってないんだなあ。

ググってみると、強引に /usr/lib/perl5/5.8.5 の下とかにファイルをコピっちゃうという話が出てたが、それはあんまりだと思うので、取りあえずシンボリックリンクを張ってみた。

# ln -s /var/www/html/mt/lib/MT /usr/lib/perl5/5.8.5/MT
# ls -la /usr/lib/perl5/5.8.5/MT
lrwxrwxrwx  1 root root 24 Jan 15 11:36 /usr/lib/perl5/5.8.5/MT -> /var/www/html/mt/lib/MT
# ln -s /var/www/html/mt/lib/MT.pm /usr/lib/perl5/5.8.5/MT.pm
# ls -la /usr/lib/perl5/5.8.5/MT.pm
lrwxrwxrwx  1 root root 27 Jan 15 11:42 /usr/lib/perl5/5.8.5/MT.pm -> /var/www/html/mt/lib/MT.pm

取りあえず、これで run-periodic-tasks は問題なく実行されているようだ。

MovableType 4.1 では問題なかったので、MTOS の問題なのか?それとも、4.2 以降のバージョンで出てきた問題なのか???

ディレクトリをコピーしようとして、cp -Rp とするところを R オプション忘れて cp -p としちゃった。
当然、オプション無しの cp コマンドでディレクトリの一括コピーは出来ないのでエラーになるんだが、Linux のエラーメッセージはちょっとわかりづらいなあ。

%cp -p hogehoge hogehoge.bak
cp: omitting directory `hogehoge'

って出る。
'omitting directory'???
お客さんのサーバで作業中だったので、ちょっと焦っちゃったじゃん。

これが、FreeBSD だと、

%cp -p hogehoge hogehoge.bak
cp: hogehoge is a directory (not copied).

・・・だ。
「hogehoge はディレクトリだよ。コピー出来ないよ」
実に正しくわかり易いメッセージだ。

Linux の cp コマンドが、わざわざわかりづらいメッセージに変えてるってのは、著作権上の何か問題があるからだろうか???

謎だ。(ま、ネイティブな人にとっては、どっちでもかまわないのかもしれませんが(^^;)

このアーカイブについて

このページには、2009年1月以降に書かれたブログ記事のうちUNIXやLinuxカテゴリに属しているものが含まれています。

前のアーカイブはUNIXやLinux: 2008年12月です。

次のアーカイブはUNIXやLinux: 2009年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

  • photo
  • photo2008
  • podcasting
電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら