Вопрос или проблема
$ sudo apt update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [128 kB]
Hit:2 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal InRelease
Get:3 https://esm.ubuntu.com/infra/ubuntu focal-infra-security InRelease [7450 B]
Get:4 https://esm.ubuntu.com/infra/ubuntu focal-infra-updates InRelease [7449 B]
Hit:5 http://us.archive.ubuntu.com/ubuntu focal InRelease
Hit:6 http://repo.percona.com/percona/apt focal InRelease
Get:7 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease [128 kB]
Hit:8 http://repo.percona.com/prel/apt focal InRelease
Get:9 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease [128 kB]
Get:10 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [3692 kB]
Get:11 http://us.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [1237 kB]
Получено 5328 kB за 4s (1195 kB/s)
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
360 пакетов могут быть обновлены. Выполните 'apt list --upgradable', чтобы увидеть их.
$ sudo apt install --only-upgrade openssl
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Следующие пакеты были установлены автоматически и больше не требуются:
libicu60 postgresql-client-10 postgresql-client-13 postgresql-doc-10
Используйте 'sudo apt autoremove', чтобы удалить их.
E: Невозможно найти источник для загрузки версии '12.11-0ubuntu0.20.04.1' пакета 'postgresql-12:amd64'
$ apt-cache policy postgresql-12
postgresql-12:
Установлено: 12.11-0ubuntu0.20.04.1
Кандидат: 12.20-0ubuntu0.20.04.1
Таблица версий:
12.20-0ubuntu0.20.04.1 500
500 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
*** 12.11-0ubuntu0.20.04.1 100
100 /var/lib/dpkg/status
12.2-4 500
500 http://us.archive.ubuntu.com/ubuntu focal/main amd64 Packages
Похоже, он пытается найти пакет, который в настоящее время установлен, а не обновленный. Почему apt пытается обновить другой пакет, когда я прошу обновить совершенно другой пакет?
Как я могу решить эту проблему?
Ответ или решение
Проблема, с которой вы столкнулись, связана с поведением инструмента управления пакетами APT (Advanced Package Tool) в Ubuntu, который пытается обновить пакет PostgreSQL при попытке обновить OpenSSL. Давайте рассмотрим ключевые моменты вашей ситуации и предложим решение.
Объяснение поведения APT
Когда вы выполняете команду sudo apt install --only-upgrade openssl
, APT определяется с тем, какие пакеты необходимо обновить, и начинает проверять зависимости. В вашем случае, в процессе обновления OpenSSL, система пытается убедиться, что все связанные пакеты, включая PostgreSQL, находятся в корректных версиях. Поскольку у вас установлена версия пакета PostgreSQL 12.11, а новая доступная версия — 12.20, APT пытается обновить его.
Однако, проблема возникает, когда APT не может найти источник для загрузки новой версии пакета PostgreSQL, что обозначается сообщением:
E: Can't find a source to download version '12.11-0ubuntu0.20.04.1' of 'postgresql-12:amd64'
Причины возникновения проблемы
-
Источники пакетов: Возможно, в вашем списке источников пакетов отсутствуют репозитории, содержащие нужные версии PostgreSQL. Это может произойти, если репозиторий был отключен, перемещен или поврежден.
-
Кэш пакетов: Если кэш пакетов устарел или поврежден, APT может не видеть актуальные версии пакетов.
-
Автоматические зависимости: Некоторые пакеты могут автоматически устанавливаться в зависимости от других пакетов. Если у вас есть пакеты, которые больше не нужны, это также может вызвать проблемы.
Рекомендации по решению проблемы
Чтобы исправить ситуацию, выполните следующие шаги:
-
Обновление списка пакетов: Убедитесь, что ваша система имеет актуальный список пакетов. Выполните:
sudo apt update
-
Проверка источников пакетов: Откройте файл
/etc/apt/sources.list
и другие файлы в/etc/apt/sources.list.d/
и убедитесь, что у вас есть необходимые репозитории для PostgreSQL. Добавьте их, если это необходимо.Например, для PostgreSQL 12 можно добавить следующий репозиторий:
echo "deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
-
Очистка кэша: Очистите кэш пакетов, чтобы устранить проблемы с устаревшими данными:
sudo apt clean
-
Автоудаление ненужных пакетов: Удалите лишние пакеты, если они больше не нужны:
sudo apt autoremove
-
Установка обновлений: Попробуйте снова установить обновление OpenSSL:
sudo apt install --only-upgrade openssl
-
Проверка зависимостей: Если проблема сохраняется, выполните
sudo apt install -f
для исправления зависимостей.
Заключение
Следуя указанным шагам, вы сможете устранить проблему с обновлением пакетов в вашей системе. Важно поддерживать актуальную конфигурацию источников пакетов, а также регулярно управлять установленными пакетами. Настоятельно рекомендуется периодически проверять наличие обновлений и актуализировать ваши источники пакетов, чтобы избежать подобных конфликтов в будущем.