`apt-get install -t`を使って指定できるようにリポジトリ名をどのように見つけますか?

`apt-get install -t`を使って指定できるようにリポジトリ名をどのように見つけますか?

次のコマンドを使用してリポジトリを選択できることを知っています。

apt-get install -t backports|testing|unstable|etc software

私は最近mysql-repositoryを使用する必要がありました/etc/apt/sources.list.d/mysql.list

deb http://repo.mysql.com/apt/debian/ stretch mysql-apt-config
deb http://repo.mysql.com/apt/debian/ stretch mysql-5.7
deb http://repo.mysql.com/apt/debian/ stretch mysql-tools
deb-src http://repo.mysql.com/apt/debian/ stretch mysql-5.7

オプションを使用して指定するためにこのリポジトリの名前を見つける方法は-t

apt-get install -t mysql-community mysql-server
E: The value 'mysql-community' is invalid for APT::Default-Release as such a release is not available in the sources
apt-get install -t mysql-5.7 mysql-server
E: The value 'mysql-5.7' is invalid for APT::Default-Release as such a release is not available in the sources
apt-get install -t mysql mysql-server
E: The value 'mysql' is invalid for APT::Default-Release as such a release is not available in the sources

私も関連情報が見つかりませんでしたapt-cache showpkg mysql-server。また、私のシステムのすべてのリポジトリを一覧表示するコマンドがありますか?

答え1

この-tオプションはリポジトリではなくバージョンを指定します(設定の略語ですAPT::Default-Release。参照man apt_preferences)。

Releaseファイルを見ると、特定のリポジトリがどのバージョンをターゲットにしているかがわかります。あなたの場合stretch(find)を指定しているためCodename:使用できなくなります...

答え2

リポジトリに関する情報を取得するには、次のようにします。

sudo apt-cache policy

しかし、それは目標を達成するのに役立ちません。特定のリポジトリからパッケージをインストールする場合は、リポジトリを選択するのではなく、特定のパッケージのバージョンを選択することです。このパッケージのすべてのバージョンのリストを取得するには、次の手順を実行しますmysql-server

apt-show-versions | grep mysql-server

私のUbuntu 18.04では、出力は次のようになります。

mysql-server:all/bionic-security 5.7.22-0ubuntu18.04.1 uptodate
mysql-server-5.7:amd64/bionic-security 5.7.22-0ubuntu18.04.1 uptodate
mysql-server-5.7:i386 not installed
mysql-server-core-5.7:amd64/bionic-security 5.7.22-0ubuntu18.04.1 uptodate
mysql-server-core-5.7:i386 not installed

リポジトリを指定するには、リポジトリでgrepを実行します。apt searchたとえば、bionic-updatesリポジトリーの場合は、次のようにします。

apt search linux-image | grep -i bionic-updates

次に、必要なバージョンを選択してインストールします。例:

sudo apt-get install mysql-server-5.7:amd64

したがって、ルールは次のようになります。リポジトリの代わりにパッケージのバージョンを選択します。

アップグレードを避けるために以前のバージョンのパッケージが必要な場合は、以下を使用してくださいapt-mark

sudo apt-mark hold mysql-server-5.7

最後のコマンドはパッケージがアップグレードされないようにします。この動作を復元するには、unhold を使用します。

sudo apt-mark unhold mysql-server-5.7

また、Askubuntuに関する同様の質問に対する私の答えも参照してください。Ubuntu 16.04とカーネル4.15

別のオプションは次のとおりです。決定した、この項目を注意深くお読みください。特定のリポジトリのアップデートのみをインストールする方法は?

関連情報