3

多くのモジュールを使用する Perl アプリケーションを Debian および/または Redhat パッケージにすることを調査しています。現在、これを行うための「最もクリーンな」方法は、可能であれば、特定のディストリビューション用に既にパッケージ化されているモジュールを引用することだと思います。

別の方法は CPAN を使用することであり、おそらくいくつかの重複、@INC などの問題があります。

ただし、Debian パッケージのリストはhttp://pkg-perl.alioth.debian.org/cpan2deb/で見つけることができますが、Redhat/Fedora に相当するものは現在見つかりません。また、cpan2deb が信頼できる最新のものであるかどうかもよくわかりません。

これを行う別のクリーンな方法があれば、他のアイデアも歓迎します。

4

3 に答える 3

3

Debian Perl Groupは、Debianの世界に対する最善の策です。Debian用のすべてのスプレッドモジュールパッケージを傍受するだけでなく、それらを最新の状態に保とうとします。

このページを参照してください:

http://qa.debian.org/developer.php?login=pkg-perl-maintainers@lists.alioth.debian.org

于 2012-08-26T18:12:31.090 に答える
1

別の方法はCPANを使用することであり、おそらくいくつかの重複、@INCの問題などがあります。

多数の依存関係を持つdebian用にパッケージ化されたperlプログラムがあります。便宜上、いくつかのパッケージ化されたモジュールを依存関係として使用する汚いハイブリッドアプローチに加えて、インストール後のスクリプトから実行されるチートバックドアCPANインストールを選択しました。アプリケーションのMETA.ymlのコピーをハイブしてから、依存関係を再確認します。

1.debian/rulesファイルはMETA.ymlのコピーを作成します。

 override_dh_auto_install:
dh_auto_install; \
cp META.yml etc/;\

2.debian/libmyapp-perl.install次に、META.ymlをインストールします。

etc/META.yml /usr/share/myapp/etc/

3.debian/libmyapp-perl.postinstall次に、依存関係をクロスチェックします。

echo "Cross checking with cpan";
for m in `perl -Mstrict -MYAML::Syck -e'my $r = YAML::Syck::LoadFile("/usr/share/myapp/etc/META.yml")->{requires}; for (grep {$_ ne "perl"} (sort keys %$r)) {eval "use $_ $r->{$_}"; print "$_\n" if $@}'`; do
   # would prefer App::cpanminus, but that's not packaged for debian either?
   PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install $m";
 done

正確にはクリーンではありませんが、依存するDebianパッケージといくつかのCPANモジュールを組み合わせてインストールするための簡単なアプローチです。

于 2012-08-26T22:38:30.330 に答える
1

cpanspecはありますが、ここ数年触れられていません。私は cpan2rpm を覚えているようですが、それについてはあまり経験がありません。

于 2012-08-26T17:17:33.600 に答える