私はLinuxディストリビューション(通常DebianとRed Hatの亜種)で多くの科学ソフトウェアを使用しています。パフォーマンスを最大化し、最新の機能を実現するには、ソースからソフトウェアをコンパイルするのが一般的です。
ただし、これは乱雑になり、パッケージマネージャと競合する可能性があります。以下ですべての提案を確認しました。Unix&Linuxの質問「ソースコードからプログラムをコンパイルしてインストールする方法」そしてUnix&Linuxの質問「自分でコンパイルされたソフトウェアをどこに置くべきですか?」案内をリクエストしてください。これらの質問は良い出発点ですが、依存関係を簡単に管理する方法は不明です。たとえば、開発ブランチをビルドすると数値シミュレーションソースでこのようなものを使用してください。インストールの確認、CheckInstallで構築されたパッケージに正しく追加できるように、依存関係をどのように検出する必要がありますか?私の目標は、構成を複雑にすることなくソフトウェアを比較的簡単にインストールおよび削除することです。
また、設定を繰り返し可能にしたいと思います。私は、新しいOSのインストール時に正確に繰り返すことができるように、コンピュータにソフトウェアをインストールするワークフローを設定したいということです。ベストプラクティスはありますか?パッケージマネージャの標準パッケージに関してソフトウェアのインストールを繰り返す最も簡単な方法は、適切なパッケージを含むスクリプトを作成することです。
適切な設置 <包装>(またはそれに対応する)。ただし、ソースからソフトウェアをインストールすると、この方法は非常に複雑になります。もっと良い方法がありますか?
答え1
正しい方法は、ソフトウェアパッケージ(RPM / Deb)をビルドしてパッケージをインストールすることです。これは、パッケージマネージャと正しく統合し、依存関係を正しく処理する唯一の方法です。 RPM / Debがどのように構築されたかを理解し、そのソフトウェアの既存のパッケージを見つけて、パッケージの基礎として使用することを提案します。
Pythonモジュールはシステム全体にパッケージ化されインストールされ、通常はvirtualenvと共に使用されます(1つを使用しない限り--no-site-packages
)。しかし、これがvirtualenvに直接インストールするよりも良いかどうかはpip
不明です。パッケージの重量はより重いですが、新しいバージョンがあなたを驚かせる可能性があるため、virtualenvのインストールは再現性が低下する傾向があります。
システムを構成するパッケージのリストを定義するには慰安宝はファイルが含まれていないが依存関係があるパッケージです。このメタパッケージは、すべての必須パッケージ(自分で構築したパッケージとアップストリームパッケージ)によって異なります。新しいシステムをインストールするには、このメタパッケージをインストールするだけです。