Ubuntuを使い始めてから1年近く経ちますが、ソースからソフトウェアをインストールしようとはしていません。実際にそうする必要はありませんでした。しかし、現在、リポジトリのリリース候補段階にあるソフトウェアに取り組んでいますが、最新の安定バージョンのソースコードはソフトウェアのホームページで入手できます。
ソフトウェアに多くの依存関係がある場合、ソースコードからのインストールは難しい場合があることを学びました。ただし、それに取り組むと、最新バージョンに満足することができます。しかし、そのようなソフトウェアが自動的にそれ自体を更新できるかどうか、またはパッケージを更新するためにいくつかのスクリプトを実行する必要があるかどうか疑問に思っています。さらに悪いことに、各更新プログラムを最初から再インストールする必要がありますか?
また、上記以外のソースからインストールする特定の利点があるかどうかを知りたいです。
ソフトウェアの依存関係はめったに変化しないことに注意してください。ソフトウェアを1回正常にコンパイルした場合、後続のバージョンshouldは簡単にコンパイルできます。すべての依存関係shouldはすでに満たされています。
ソースからコンパイルした場合、更新に使用できる.deb
または同様のパッケージはありません。nlessディストリビューションがそのソフトウェアをリポジトリに含めるのを待つか、待つ開発者のPPAが更新されるまで。
簡単に言えば、誰かがまずそれをコンパイルしてdebにする必要があります。古いバージョンをコンパイルしても、自動的に更新することはできませんが、「download-configure-compile-install」プロセス全体を実行する必要があります。
ただし、同じバージョンを複数のコンピューターにインストールする場合は、コンパイル済みバージョンを.deb
(または同様の)としてパッケージ化し、それらのコンピューターに配布するのが理にかなっています。適切に行われた場合、依存関係は自動的に取り込まれます。
ソースからインストールする利点に関して、私が考えることができるのは次の2つだけです。
これによれば post ソースをコンパイルした後に.debパッケージを生成できます。その後、「make install」の代わりに、.debパッケージからインストールできます。パッケージは更新を追跡するパッケージマネージャーによって管理されるため、更新が容易になります(リポジトリにある場合)。
ソースからパッケージ「some-package」をビルドし、依存関係がある場合、「apt-get build-dep some-package」を試して、パッケージをコンパイルするために必要なすべての依存関係を手動で追跡せずに自動的にインストールできます依存関係を自分で。そのようにして、依存関係もパッケージマネージャーによって管理され、同様に自動的に更新される必要があります。
git
ユーザーの別の選択肢は、言及する価値があります。
以前のgit pull
の後にgit clone
を使用してソースコードを更新し、必要に応じてプログラムを再コンパイルすることもできます。 (git
を使用してファイルをさらに追跡することもできます。 答えはこちら を参照してください。)
たとえば、元々git clone
を使用してソースコードを取得した場合、
git clone git://github.com/person/programname.git
コンパイルおよびインストール後にフォルダーを保持した場合、そのフォルダーにcdしてgit pull
を実行し、最新のコミットを取得できます。次に、作成したかもしれないビルドディレクトリを削除し、make clean
(適切な場合)を実行し、ソフトウェアを再度コンパイルし、checkinstall
でインストールします。分布)。
ただし、プログラムの開発を支援していて、毎日git pull
後に再コンパイルする必要がある場合は、/usr/local/
階層に毎回インストールする必要がないため、おそらくホームフォルダーにインストールします。 。
例として、私がテストしているので定期的にプログラムを再コンパイルしている場合、git pull
で最新のコミットを取得し、実行してから(この特定のプログラムに対して)ビルドフォルダーにcdします。
cmake .. -DCMAKE_BUILD_TYPE=Debug -DLAYOUT=home -DPREFIX=home
次に、デバッグバージョンをコンパイルしてテストします。
ただし、毎月かそこらでgitクローンプログラムの新しいバージョンをコンパイルしたいだけで(テストもデバッグもしていなかった場合)、通常checkinstall
で/usr/local/
階層にインストールします。
ソースからインストールを管理するには、こちらの回答を参照してください: ソースからコンパイルされたパッケージを更新する方法?