2015-01-12 16 views
10

私は自分の会社のスクリプトを書いており、私はCPANから入手したライブラリを使用しています。私のマネージャーは余分なライブラリを統合して削除することを望んでいました。Perlモジュールのクレジットを付与

いくつかの注意事項:

  • 私は、このサーバー上のrootアクセス権を持っていないも私は彼らが私のユーザディレクトリ
  • にインストールされているW/OルートCPANモジュールを使用するにはアクセス
  • を要求することができます他のユーザーが自分のスクリプトを実行できるようにするには、通常、 'libs'というフォルダをスクリプトのディレクトリの中に入れてください。スクリプトには私のCPANモジュールであるuseの前にuse 'libs';があります。

今私が持っている唯一の解決策は、文字通り私のperlスクリプトの中にperlモジュールの内容を入れることです。しかし、私はそれが期限であるクレジットを与えたいと思うし、また、著者や組織に適切なクレジットを持っているオープンソースのコードを含めても困ることはありません。

したがって、どうすればよいですか?私は何かを取り除こうとしているわけではありません。私は正に、これを正しい方法でやりたいと思っています。

3つのモジュールはすべて「Perl自身と同じ条件でライセンスされています」と言っていますが、これは簡単ではないはずです。

私は他のアイデアも探求したいと思います!

モジュールは以下のとおりです。

  • テキスト::表
  • テキスト::アライナ
  • ターム:: ANSICOLOR
+4

最後に、ルートアクセス権がないという理由だけでCPANをあきらめなかった人。あなたに誇り! – ThisSuitIsBlackNot

+0

ハハ、ありがとう。当時は難しい仕事でしたが、それに見合った価値がありました。 – rusty

+0

私は、あなたのスクリプトを実行する必要があるシステムに必要なライブラリをインストールするためには、root権限を持つ人にはもっと理にかなっていると思います。モジュールのコードをコピーしてスクリプトに貼り付けるよりもずっと簡単で信頼性が高くなります。 (しかし、あなたのマネージャーを説得することは障害になるかもしれない) –

答えて

1

モジュールが純粋なPerlモジュールの場合は、プログラムにコード(packageステートメントを含む)を単純に追加することができます。私はまた、著作権の声明と著者の名前も含めたPODを含めるだろう。それはArtistic License Requirement(GNUライセンス要件を満たしていない可能性があります)を満たす必要があります。

Perlbrewを使用すると、システムにPerlのユーザーバージョンをインストールすることができます。こうすることで、管理者権限を必要とせずにCPANモジュールをインストールできます。また、他のユーザーにもPerlbrewを使用するように指示できます。

さまざまなバージョンのPerlをインストールして切り替えることができるので、PerlのさまざまなバージョンのPerlスクリプトをテストできます。私はまた、標準リリースには含まれていなかった新しいバージョンのPerlやモジュールが必要な私たちのサーバーでも使用しました。

Perlbrewをインストールする前にITの承認を得る必要がありますが、多くの場合、CPANモジュールの保守とインストールに悩む必要がなくなります。

+0

私はそれを追加して問題を解決したので、回答として選択しました。私は他の人に示唆されているようにパッケージマネージャを使用する方が好きですが、PAR:Packerは複数のマシン上のコンパイラの問題のためにインストールできませんでした(まだ困惑しています)。 @Edwardが提案したように 'Staticperl'を使用しようとはしませんでしたが、私はそれを探求しようとしています。 – rusty

+0

これは「ファットパッキング」と呼ばれています。これにはCPAN上で依存関係のコードを分析し、Perlインタープリタだけが必要な大きなPerlプログラムを構築するアプリがあります。コンパイルされたCコードでプラットフォームに依存するXSモジュールは動作しません。 –

0

あなたが不要なコードを減らすことができます(上司の懸念を満たすために)。それが入ったファイルに必要なコードを書き留めておき、そのモジュール/パッケージ内に著者のクレジットを与えます。

例:これはJoe E Perlのインスピレーション(盗難)です。

+0

私はそれを行うことができますが、明示的にスクリプトはそれ自身の独立した私の 'libs'フォルダ上で実行したい。コードを削除するとサイズには役立ちますが、目標には役立ちません。私が使用する唯一のモジュール(それには2つの依存関係があります)はText :: Tableです。その情報が役立つかどうかは不明です。 – rusty

2

あなたにはPAR Packagerオプションが使用されていますか?これにより、スタンドアロンの実行可能ファイルが生成されます。

+0

私はそれをインストールしようとしましたが、make中にエラー255が発生しています。私は自分のホームサーバーにインストールしようとしても...同じエラー。本当に混乱し、不幸です。たぶん私はそれと一緒に遊ぶだろう。 – rusty

+1

makeからのエラー255は、以前のエラーがあったと言うだけです。何が間違っているかを見るために最初のエラーメッセージを見る必要があります。 – ysth

+2

これは実際にあなたの状況に最適なソリューションです。スクリプトからモジュールを取り出すと、破損する恐れがあり、問題のコードの新しいバグ修正をあきらめることになります。 – ysth

1

興味深い質問& perspective。私はライブラリやモジュールの使用に反対するものは理解していませんが、あなたのマネージャーに考えさせるようにします;-)

著作権については、確かめたい場合は弁護士に相談することをお勧めします。私が理解する限り、あなたは著作権表示を保持している他の人の作品を組み合わせることができます。結合された作業may not be covered by copyleftです。そのため、商用で使用することができます(つまり、ソースを開示せずに配布することができます)。しかし、弁護士に確認してください。

しかし、あなたは他のアイディアを探求したいと言ったので、App::Staticperlは解決策になるかもしれませんか?経験はありませんが、簡単な例で試してみました。

App :: Staticperlは、CPANモジュールが組み込まれたPerlインタプリタからスタンドアロンの実行可能ファイルをビルドします。

  1. アプリの最新バージョン:: Staticperlが1.43である:私は、その後の手順は、(明らかに、私はあなたのスクリプトでテストができなかったので、あなたが、適応する必要があります)おおよそたhttps://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/App-Staticperl-1.43.tar.gz
  2. のいずれかのモジュールをインストールしますCPAN経由、または単にタールからビン/ staticperlを抽出 - それはEMAILCPAN変更する(オプション、しかし、あなたはCPANミラーを変更したい場合があります)
  3. ./staticperl installダウンロードスタンドアロンスクリプト
  4. 編集staticperlだとPerlを構築します。それは私のボックスにエラーメッセージで終了しましたが、動作中のPerlを生成しました
  5. ./staticperl cpanはインタラクティブなCPANプロンプトに入ります。 install Text::Tableinstall Term::ANSIColor、および他のものは何でも
  6. ./staticperl mkapp my_app --boot path/to/your/script -MText::Table -MText::Aligner -MTerm::ANSIColor
  7. を必要とするアプリを試してください:./my_app - それが欠落しているモジュールに関するエラーメッセージが表示されて、最も可能性の高い失敗します。前の手順を繰り返し、不足しているモジュールをのフラグに含めます。

幸いです!

+0

ライセンスでカバーされていないものは、あなたの権利を追加するものではありません!あなたが他人の仕事に持っている権利は、ライセンスに明記されているか、あるいは公正使用によって指定されており、商業的使用は公正使用権を主張するための良いスタートではありません。 – tjd

+0

ありがとうエドワード!残念ながら、私は 'Staticperl'を使ってみる時間がありませんでしたが、将来私は意図しています。私は助けに感謝します! – rusty

関連する問題