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の依存関係をパッケージ化する、簡単なプロセスを作るツールと参照の数があります。
そして、多くの便利なリファレンス:
助けが必要?それらをチェックしてください: