同じシステムで「apt-get install ...」とは異なるバージョンのソースコードを使用してパッケージをビルドすると、どのような問題が発生する可能性がありますか?

同じシステムで「apt-get install ...」とは異なるバージョンのソースコードを使用してパッケージをビルドすると、どのような問題が発生する可能性がありますか?

「私」と仮定しましょう。apt-get install somepkg'を選択して、「somepkg」に依存する別のパッケージ(「abc」と「def」)を追加でインストールします。後でパッケージの最近公開されたソースコードに望ましいアップデートがあるという内容を読むことになりますが、パッケージマネージャを通じて提供されるプリビルドバージョンは非常に古いバージョンに付いていることが見られ、最新バージョンから始まります。リリースされたソースコードから取得、ビルド、インストールします。

ただし、さまざまなビルド/インストールパッケージの2つのバージョン/コレクションがあることがわかります。例えば/bin/somepkg-ツール(v 1.0),/usr/bin/sompkg-ツール(v1.0)および最新のsrcで構築された最新バージョン/usr/local/bin/somepkg-ツール(v4.1)、これはいくつかの質問を提起します。

  1. 異なるバージョンの複数のバイナリセット(事前にビルドされたパッケージマネージャの1セット、ローカルビルドの最新のsrcの1セット)をインストールするのに問題がある可能性がありますか?これは避けることが最善の問題の潜在的な原因のように感じます。
  2. 'を使用して事前に構築された古いホスティングパッケージを削除するにはsudo apt-get purge somepkg'、プロンプトは依存関係パッケージ「abc」と「def」も削除します。これは、これが絶対に必要かどうか、またはパスで最新のビルドバイナリを見つけて作業を続けることができるかどうかわからないため、不便です。以前にインストールされたパッケージを削除/クリーンアップすると、必然的に後続の依存パッケージも削除されますか?また、依存パッケージの削除を受け入れると、パッケージマネージャは、「abc」と「def」の後続の(再)インストールから以前の「somepkg」をインポートしてインストールする必要がないことを確認できますか?すでにローカルで、srcでビルドしているからです。必要な「somepkg」バイナリがインストールされていますか?
  3. それとも、パッケージマネージャを介して "somepkg"の以前のインストールをクリーンアップする方法はありますか?いいえ2つの依存パッケージを削除してもよろしいですか?
  4. この状況に対処するための一般的な最善の方法はありますか、それとも一般的にケースごとに処理するのが最善ですか?

同様の答えがない質問を見つけました。ここしかし、レビューは多くのことに根本的に依存しているため、かなり問題のある特定のケースに焦点を当てています。

問題の一般的な性格を気を散らすことなく特定のケースを説明することが役に立つかもしれません。

  • 私は 'apt-get install git'(v2.30.2)
  • 後で「apt-get install gitolite3」と「... git-lfs」を実行します。
  • 後でリリースノートで多くの修正/更新を見て、Debianパッケージマネージャは、最新のgitパッケージが以前のバージョン(apt-get update、apt show git)で停止していると言ったので、「wget ... git -2.37」.3 .tar.gz 'は、最新バージョンのソースから作成してインストールしました。

これで、次のバイナリ(およびgitパッケージに付属の他のすべてのバイナリ)があることがわかります。

  • /bin/git (v2.30.2古い)
  • /usr/bin/git (v2.30.2古い)
  • /usr/local/bin/git (v2.37.3新しい)

そして、誤って古いgitバイナリを使用してgitoliteストレージサーバーとLFSサーバーに依存する問題を回避したいと思います。したがって、これらの質問が発生します。

答え1

  1. PATH常に設定方法を知ることで制御できますが、これが問題の原因になる可能性があります。

  2. パッケージマネージャはパッケージについてのみ知っており、手動でインストールしたバイナリについては知りません。

  3. equivs依存関係を満たすためにダミーパッケージを作成できます。バラよりインストールされたパッケージの実装されていない依存関係を無視するにはどうすればよいですか?

  4. バラよりDebianが提供するよりも新しいバージョンのソフトウェアをどのようにインストールしますか?より良いアプローチのために、特に以下のgit最新バージョンのパッケージについてすでに梱包されています。- バックポート(現在のDebian 11の場合2.34.1)で利用できない場合は、最新のソースパッケージを使用して実際のパッケージを再構築できます。

答え2

2つの異なるインストールシステム(パッケージマネージャでは、ローカル管理者が「手動で」コンパイル/インストール)を使用すると、次のことが簡単になります。

  1. 注コマンド/デーモンは2つの異なる場所にあります。一部のユーザーはある場所を探し、他のユーザーは別の場所を探し、バージョンの違いによって行動の違いが発生し、すべてのユーザーが混乱します。これは、ユーザーが自分で停止して起動できるデーモンの場合に特に当てはまります。
  2. 構成ディレクトリ/ファイルは2つの異なる場所にあるため、誰かが使用していないバージョンの構成ファイルを更新すると苦情が発生します。
  3. デーモンの場合、2つのバージョンのログファイルが2つの異なる場所に書き込まれることが多いため、混乱を招き、ユーザーやサーバー管理者のデバッグやトラブルシューティングの作業が遅れます。

可能であれば、重複プログラムを手動でインストールしないでください。これを行う必要がある場合は、この方法でインストールしたプログラムとそのプログラムをコンパイル/インストールする方法に関する広範な文書を作成してください。不要なパッケージがインストールされないように、パッケージマネージャに設定を追加することも重要です(これらの設定に詳細な説明を含めてください)。次のシステム管理者がこれらのプログラムを簡単に保守および更新できるようにします。 (通常、「次の」管理者はあなた(これらの詳細の記憶は9ヶ月後に消えました)

関連情報