Fedora8 yum で checksum error

yumのレポジトリにfreshrpmsを入れていると、yumの最初のアップデート確認処理で怒られる

Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * fedora: archive.nl.eu.kernel.org
 * adobe-linux-i386: linuxdownload.adobe.com
 * updates-newkey: archive.nl.eu.kernel.org
 * updates: archive.nl.eu.kernel.org
 * freshrpms: ayo.ie.freshrpms.net
http://ayo.ie.freshrpms.net/fedora/linux/8/i386/freshrpms/repodata/primary.sqlite.bz2: [Errno -3] Error performing checksum

そんな時は/etc/yum.repos.d/freshrpms.repoを以下のように編集すれば解決できます

# $Id: freshrpms.repo 3341 2005-06-28 18:40:26Z thias $
[freshrpms]
name=Fedora Core $releasever - $basearch - Freshrpms
#baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms/
mirrorlist=http://ayo.freshrpms.net/fedora/linux/$releasever/mirrors-freshrpms
#enabledを1から0へ変更
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-freshrpms
gpgcheck=1

Module::Starter::PBPを使う

Module::Starter::PBPを使うための手順

Module::Starter::PBP, Module::Starter::Smartのインストール

Module::Starter::Smarはモジュール追加のため必要

perl -MModule::Starter::PBP=setupで初期セットアップ

~/.module-starter/PBP/Module.pmでpluginsにModule::Starter::Smartを追加する

plugins: Module::Starter::PBP Module::Starter::Smart

~/.module-starter/PBP/Module.pmで以下を編集する

(誤)use version; $VERSION = qv('0.0.3');
(正)use version; our $VERSION = qv('0.0.3');

ディストリビューション用のフォルダを作成する

module-starter --module="Foo"
Fooディレクトリが作成されlib/Foo.pmが作成される

追加でモジュールを作成してく

module-starter --module="Foo::Bar" --distro="Foo"
distroを指定しないとFoo-Barディレクトリが新たに作成される
Fooディレクトリ内にlib/Foo/Bar.pmを作成したい場合はdistroを指定する必要がある
(この時にModule::Starter::Smartが設定されていないとlib/Foo.pmが削除されてしまう)

build&testしてみる

$ perl Build.PL
$ perl Build
$ pelr BUild test

これで快適なモジュール開発してください。

perlの効率的なデバッグ方法

最近のvimにはデフォルトでcompilerを指定できる方法がある。
compilerを指定しておくと、:makeコマンドで指定されたコンパイラを使って現在開いているファイルをコンパイルし文法ミスがあればその修正にとりかかることができる。

ただperlの場合実行optionが-Wc(no warningsを指定していても無視されるモード)となるので、例えばmooseなどのモジュールを使っていると大量にwarningが表示されて面倒だ。

その場合は:compilerコマンドを実行して表示されるperlのcompilerプラグインをrootで開いて、以下の様に修正すると-wc(no warningsが指定されている場合はそれが尊重される)オプションで実行することができるようになる

if getline(1) =~# '-[^ ]*T'
"   CompilerSet makeprg=perl\ -WTc\ %
    CompilerSet makeprg=perl\ -wTc\ %
else
"   CompilerSet makeprg=perl\ -Wc\ %
    CompilerSet makeprg=perl\ -wTc\ %
endif

chmod setuid,setgid,sticky

chmod 0755 filename

といった感じで権限設定をするが、意外と知られていない一桁目の意味。

setuid 4
setgid 2
sticky 1

を足した値を一桁目に設定すると使えます。

あるプログラムをSetUIDしたい場合

chmod 4755 filename

あるプログラムをSetUID&SetGIDしたい場合

chmod 6755 filename