2

アプリを簡単にインストールできるようにバンドルを作成しています。私はここから始めました: http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Bundles

次のようなパッケージ Bundle::MyApp があります。

package Bundle::MyApp;

$VERSION = '0.01';

1;

__END__

=head1 NAME

Bundle::MyApp - modules needed by my app

=head1 SYNOPSIS

cpan install Bundle::MyApp

=head1 CONTENTS

DateTime
Image::Size

ローカル マシンでテストしているので、パッケージを cpan フォルダーに入れます。例: ~/.cpan/Bundle/MyApp.pm

cpan install Bundle::MyAppリストしたモジュールに必要な依存関係をインストールしないことを除いて、これを使用して実行できます。したがって、この例では、cpan は最初に DateTime をインストールしようとしますが、DateTime::Locale が最初に必要なためインストールが失敗し、次に Image::Size をインストールしようとしますが、dep が必要なために失敗します。

cpan を使用して DateTime モジュールを直接インストールすると、正常にcpan install DateTime動作し、依存関係がインストールされます。

そのため、バンドルからインストールするときに依存関係に従うように CPAN に指示する方法を探しています。パッケージに入れる必要があるものはありますか? それとも、私のユーザー アカウントの CPAN 構成の問題でしょうか?

4

1 に答える 1

1

モジュールの依存関係

Makefile.PL では、前提条件のモジュールを一覧表示できます。からperldoc ExtUtils::MakeMaker:

   PREREQ_PM
     A hash of modules that are needed to run your module.  The keys are
     the module names ie. Test::More, and the minimum version is the
     value. If the required version number is 0 any version will do.

     This will go into the "requires" field of your META.yml.

         PREREQ_PM => {
             # Require Test::More at least 0.47
             "Test::More" => "0.47",

             # Require any version of Acme::Buffy
             "Acme::Buffy" => 0,
         }

PREREQ_PRINT と PREREQ_FATAL もあります。

バンドルファイル形式

CONTENTS セクションの bundle 行の形式では、依存関係を区切る空白行が必要です。

# @(#)$Id: Informix.pm,v 95.1 1999/11/18 22:10:59 jleffler Exp $

package Bundle::DBD::Informix;

$VERSION = '0.95';

1;

__END__

=head1 NAME

Bundle::DBD::Informix - A bundle to install all DBD::Informix related modules

=head1 SYNOPSIS

C<perl -MCPAN -e 'install Bundle::DBD::Informix'>

=head1 CONTENTS

Digest::MD5  - Perl interface to the MD5 Algorithm by GAAS (Gisle Aas)

Bundle::DBI  - Bundle for DBI by TIMB (Tim Bunce)

DBD::Informix  - DBD::Informix by JOHNL (Jonathan Leffler)

=head1 DESCRIPTION

This bundle includes all the modules used by the Perl Database
Interface (DBI) driver for Informix (DBD::Informix), assuming the
use of DBI version 1.02, created by Tim Bunce.

If you've not previously used the CPAN module to install any
bundles, you will be interrogated during its setup phase.
But when you've done it once, it remembers what you told it.
You could start by running:

    C<perl -MCPAN -e 'install Bundle::CPAN'>

Note that DBD::Informix does not directly use Digest::MD5.  However, if
Informix R&D or Tech Support takes over DBD::Informix (which, as of
1999-11-17, they have not agreed to do), then you will be required to
demonstrate that the MD5 checksums of the code you've got match the
original, or you'll be required to provide the diffs between the original
and what you are using.  The shell script md5.verify and Perl script
md5.check will be used to do this.

=head1 SEE ALSO

Bundle::DBI

=head1 AUTHOR

Jonathan Leffler E<lt>F<jleffler@informix.com>E<gt>

=head1 THANKS

This bundle was created by ripping off Bundle::libnet created by 
Graham Barr E<lt>F<gbarr@ti.com>E<gt>, and radically simplified
with some information from Jochen Wiedmann E<lt>F<joe@ispsoft.de>E<gt>.

=cut
于 2010-04-13T15:07:45.110 に答える