GNU/Linux >> Linux の 問題 >  >> Ubuntu

依存関係として必要な仮想パッケージを提供するために、Aptはインストールする特定のパッケージをどのように選択しますか?

たとえば、awk original-awkによって提供される仮想パッケージです 、mawk およびgawk

直接インストールしようとすると、次のようになります。

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package awk is a virtual package provided by:
  original-awk:i386 2012-12-20-4
  mawk:i386 1.3.3-17ubuntu2
  gawk:i386 1:4.1.1+dfsg-1
  original-awk 2012-12-20-4
  mawk 1.3.3-17ubuntu2
  gawk 1:4.1.1+dfsg-1
You should explicitly select one to install.

E: Package 'awk' has no installation candidate

ただし、デフォルトでインストールされるパッケージによる依存関係として、多くの仮想パッケージが必要です。たとえば、awk それ自体はbase-filesに必要です 、APTログをチェックすることは、apt-get --yesを介して他のパッケージの束と一緒にインストールされます;どういうわけか、APTは3つのうちの1つを自動的に選択することになります(mawkだと確信しています) 、しかしそれは問題のポイントではありません。

この場合、APTはインストールする特定のパッケージをどのように選択しますか?

承認された回答:

この場合、APTはインストールする特定のパッケージをどのように選択しますか?

APTはパッケージを選択しません。伝えます:

明示的に選択する必要があります インストールします。

パッケージを手動で選択しようとすると、インストールされません。

awkに依存するベースファイルの場合、それは無関係です。まず、実際にはawkにPreDependsし、ベースファイルのインストールを開始する前にdpkgにawkのインストールを強制します。第二に、mawkにはシステムのインストール時にインストールされる優先順位が必要であり、それを削除しようとするとaptがあなたを悩ませます。だから、それをしないでください。

現在、情報源によると、aptは、仮想パッケージを試す前に、まず依存関係を満たそうとします(つまり、依存関係がfirefox | www-browserの場合 、パッケージのいずれかがインストールされているかどうかを確認し、インストールされていない場合はFirefoxのインストールを試みます)。非仮想パッケージが利用できない場合、他の依存関係が壊れていなければ、仮想パッケージを提供するすべてのパッケージを反復処理するように見えます。この動作のその他のコメントの証拠は、GrpIterator::FindPreferredPkg関数につながるこれです。

関連:マウントされたイメージに実行権限を設定しますか?
Ubuntu
  1. yumを使用して特定のバージョンのパッケージをインストールする方法は?

  2. Dpkg -iまたはAptでDebファイルをインストールする方法は?

  3. シロアリをインストールする方法は?

  1. Ubuntu20.04にWebminをインストールする方法

  2. Ubuntu18.04にKvmをインストールする方法

  3. Synapticをデフォルトにして.debファイルをインストールする方法は??

  1. Ubuntu20.04にYarnをインストールする方法

  2. Ubuntu20.04にSpotifyをインストールする方法

  3. Ubuntu20.04にVagrantをインストールする方法