88171.net

g-cpanでCartonを入れる

古くて依存関係の多いPerlモジュール(具体的には昔懐かしいPlagger)をインストールしたい。 ただ、全てをg-cpanでインストールするのは気が進まないし絶対にハマるのでCartonで局所化したい。

まあそうすんなりとはインストールさせてくれないので、手探りで泥臭くどうにかした。 真似はしない方がいい。


g-cpan --install CartonするとManifestがないと怒られる。 ログを追うと、vなしのCarton-1.0.34.tar.gzをGETしようとして失敗している様子。

とりあえずebuildを保存させないと修正のしようもないので、overlayを設定する。

# mkdir /usr/local/portage
# chgrp portage /usr/local/portage
# chmod g+s /usr/local/portage
# vi /etc/portage/make.conf
[...]
PORTDIR_OVERLAY="/usr/local/portage ${PORTDIR_OVERLAY}"
# g-cpan --install Carton

ebuildのMODULE_VERSIONvありに修正する。

# vi /usr/local/portage/perl-gcpan/Carton/Carton-1.0.34.ebuild
[...]
MODULE_VERSION="v1.0.34"

Manifestを作成する。 DISTのファイル名はvありにする。 チェックサムはb2sumsha512sumで計算する。

# cat << __EOM__ > /usr/local/portage/perl-gcpan/Carton/Manifest
DIST Carton-v1.0.34.tar.gz 85808 BLAKE2B d627061ff260fbf0f12eec71c030a37cf9d90d3d40a316e67184f50b9ca6a330f8e0cc604093eeaa9a1b3d3cd9dab45106687e95bcf2a09570904e7690bff367 SHA512 6c34dd95f749a8fd91843a63c87b802f1bb967511e3737a58fa2d80360f36cb62db1d66f740921ec3d4d6c624872bd7aa9c146e5eccdb8ac58f6d0a300ddba9e
EBUILD Carton-1.0.34.ebuild 867 BLAKE2B 14215a3e910e78308cded33cf61043d0673c5bd9ce473099c9a608cf9218094b11eb2edc6f3122040f53f565ebdf766eb85c739ca55dd8377780124e0f75529b SHA512 0d7bb8945f9de709cc6ed1eb3022045c6771081ccd09e6d53692251b83a52245af79902a088a034fb46c083acc782ddcb15d44266cac22b52de2eaeff4f3a17d
__EOM__

これでたぶんインストールできる。


おまけ。 依存関係にあるperl-gcpan/Parse-PMFileのインストール時、ExtUtils::MakeMaker::CPANfileがmissingだと怒られる。 この期に及んで/usr/localには入れたくなかったので、アーカイブから持ってきて雑に対処した。

# cp CPANfile.pm /usr/lib64/perl5/5.30.3/ExtUtils/MakeMaker/

未来の自分にトラップを仕掛けた、かもしれない。


参考