Как узнать имя репозитория, чтобы указать с помощью `apt-get install -t`?

Я знаю, что мог бы использовать следующие команды для выбора репозитория:

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

Недавно мне пришлось работать с mysql-репозиторием в /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 . Кроме того, есть ли какая-то команда, которая перечислит все репозитории в моей системе?

Параметр -t не указывает repository, он указывает релиз (это сокращение для настройки APT::Default-Release ; см. man apt_preferences ).

Вы можете увидеть, для чего предназначен данный repository, посмотрев на его файл Release , здесь, в вашем случае . Это определяет stretch (ищите Codename: , так что вы не сможете использовать это …

Если вам нужно получить информацию о ваших репозиториях, выполните:

 sudo apt-cache policy 

Но это не может помочь вам достичь своей цели. Если вы хотите установить пакет из какого-то определенного репозитория, вы должны выбрать не repository, а конкретную версию пакета. Чтобы получить список всех версий пакета 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 

Если вы хотите указать repository, просто извлеките его из 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 и kernel ​​4.15.

Другим вариантом для вас может быть закрепление , внимательно прочитайте эту тему: Как устанавливать обновления только из определенного репозитория?