Debian IRCチャンネルirc://irc.debian.org#debian-mentorsで何人かのメンテナーと話をして、まったく同じことを求めましたが、一般的なコンセンサスは次のとおりです。
解決策1:
単一のコードベースとしてソースファイルをコピーしてパッケージに依存関係を統合することは非常に嫌われています。依存関係、更新、バージョン管理などを処理するパッケージングシステムの目的に反します。
解決策3:
バイナリ(.deb)のインストール時に非Debianパッケージをオンザフライでダウンロードすることは重大なセキュリティリスクであり、間違いなく間違いです。を 抽出して依存関係を検査することさえできませんdeb。それらはインストール時にダウンロードおよびインストールされるためです。これは、リポジトリシステムを完全にバイパスするアプローチです。関係するユーザーは、背後で(そしてroot、覚えておいてください!)、信頼できないソースから追加の信頼できないソフトウェアをダウンロードするパッケージに満足しません。はい、それはDEBIAN/postinst(またはpreinst)をいじり、発行するwget(または、あなたの場合、pip install)、それがFlash、Oracle Java、Steamなどで採用されているアプローチです。しかし、それはプロプライエタリなクローズドソースソフトウェアですので、とにかくセキュリティはありません。
ソリューション#1.5:
あなたはそれを言及しなかったが、あなただけで依存関係を統合することができ、ビルド時に、すなわち、ソースパッケージ(.orig.tar.gz、.debian.tar.gz、.dsc「バイナリ」パッケージ(作成するときは、PyPIからダウンロードすることにより、トライアド).deb)。以下のための指示pip installに行くだろうdebian/rules(予告小文字debianバイナリパッケージとは反対に、)、そしてあなたが発行したときに実行されるだろうdebuildかdpkg-buildpackage。
これは、#1と#3の中間です。#3の問題のいくつかを軽減します(解決はしません!)。少なくとも最終製品を検査.debでき、インストール時にインターネットにアクセスする必要はありません。すべてのリスクと負担は最終ユーザーからパッケージメンテナーに移されます。しかし、ほとんどのパッケージングシステムインフラストラクチャをバイパスするため、#1と同じ問題があります。結局、依存関係(バージョン、更新、要件、競合)の処理が、dpkg/ aptが最初に作成された理由です!:)
解決策2:
一つの真の右ウェイ™。依存関係用のdebianパッケージを作成し、それらをパッケージの要件としてリストし、すべての.debsパッケージまたはソースパッケージを出荷します。
そこから、いくつかのオプションがあります。
あなたのソフトウェアとその依存関係の両方のソースパッケージをDebianに含めるために提出してください。受け入れられると、Ubuntuのようなすべての派生物を含め、すべてのDebianユーザーが自動的に利用できるようになります。
ソースパッケージをLaunchpadにアップロードして、Ubuntuユーザー(およびLinux Mintのような派生物)が簡単に追加およびインストールできるPPAを作成します
あなたのウェブサイトであなた自身のdebianリポジトリをホストしてください。Debianベースのシステムのユーザーが追加し/etc/apt/sources.list.d、aptインフラストラクチャを使用してダウンロード、インストール、更新を続けることができます(上記のように!)
.deb直接ダウンロードおよびインストールするファイルをホストします。いいえ、aptまたは自動更新が考えられました。
どのように(!あまりにも、あなたのpythonソフトウェア)あなたは、PyPIの依存関係をパッケージ化する、簡単なプロセスを作るツールと参照の数があります。
そして、多くの便利なリファレンス:
助けが必要?それらをチェックしてください: