Проблема имени дистрибутива в источниках

Дмитрий Корнев
12 сентября 2019

У меня такое случается с Elementary OS. Сейчас актуальна версия 5.0 с кодовым названием «Juno». И хотя система основана на Ubuntu 18.04 с кодовым названием «Bionic», она сообщает о себе честно:

kornev@kornev-desktop:~$ lsb_release -sc
juno

Некоторые скрипты пользуются этим. Берут и прописывают в источники имя, которое сообщает им система. Из-за этого и возникает проблема.

Пример:

kornev@kornev-desktop:/home/kornev# sudo apt update
Игн:1 http://dl.google.com/linux/chrome/deb stable InRelease
Сущ:2 http://ru.archive.ubuntu.com/ubuntu bionic InRelease
...
Пол:18 http://ru.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [728 kB]
Ошб:19 http://repo.percona.com/percona/apt juno Release
  404  Not Found [IP: 74.121.199.234 80]
Сущ:20 http://ppa.launchpad.net/lyzardking/ubuntu-make/ubuntu bionic InRelease
Пол:21 http://packages.elementary.io/appcenter bionic/main amd64 Packages [76,2 kB]
Пол:22 http://packages.elementary.io/appcenter bionic/main amd64 DEP-11 Metadata [198 kB]
...
Пол:55 http://security.ubuntu.com/ubuntu bionic-security/universe DEP-11 128x128 Icons [181 kB]
Пол:56 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 DEP-11 Metadata [2 464 B]
Чтение списков пакетов… Готово
E: Репозиторий «http://repo.percona.com/percona/apt juno Release» не содержит файла Release.
N: Обновление из этого репозитория нельзя выполнить безопасным способом, поэтому по умолчанию он отключён.
N: Информацию о создании репозитория и настройках пользователя смотрите в справочной странице apt-secure(8).

Простой и быстрый способ исправить проблему – это найти файл соответствующего источника и отредактировать там вручную название дистрибутива. Файлы источников находятся в каталоге /etc/apt/sources.list.

#
# This repo is managed by "percona-release" utility, do not edit!
#
deb http://repo.percona.com/percona/apt juno main
deb-src http://repo.percona.com/percona/apt juno main

Находим juno, исправляем на bionic.

deb http://repo.percona.com/percona/apt bionic main
deb-src http://repo.percona.com/percona/apt bionic main

Теперь источники успешно обновятся и все будет работать.

Чтобы быстро найти, в каких файлах есть проблема:

grep -R juno /etc/apt

Чтобы исправить проблему в файлах автоматически:

find /etc/apt -type f -print0 | sudo xargs -0 sed -i 's/juno/bionic/g'

Последняя команда очень полезна, чтобы решить проблему раз и на всегда. Можно создать скрипт и запускать его периодически через крон.

Я уже не первый раз сталкиваюсь с проблемой для одного и того же источника. Скрипт программы при очередном обновлении исправляет источники. Поэтому единожды исправить их руками недостаточно.

Вариант 2

Есть файл /etc/os-release, который по умолчанию в Elementary OS 5.0 Juno вылядит следующим образом:

NAME="elementary OS"
VERSION="5.0 Juno"
ID=elementary
ID_LIKE=ubuntu
PRETTY_NAME="elementary OS 5.0 Juno"
LOGO=distributor-logo
VERSION_ID="5.0"
HOME_URL="https://elementary.io/"
SUPPORT_URL="https://elementary.io/support"
BUG_REPORT_URL="https://github.com/elementary/appcenter/issues/new"
PRIVACY_POLICY_URL="https://elementary.io/privacy-policy"
VERSION_CODENAME=juno
UBUNTU_CODENAME=bionic

Мы можем отредактировать его, чтобы создать видимость, что у нас Ubuntu. Пример ниже.

Такое может пригодится при установке какого-нибудь драйвера или программы. Я использовал это при установке драйвера для видеокарты AMD. По умолчанию в Elementary OS я получал сообщение «Unsupported OS». Со следующими настроками драйвер ставится без проблем.

NAME="elementary OS"
VERSION="5.0 Juno"
ID=ubuntu
ID_LIKE=ubuntu
PRETTY_NAME="elementary OS 5.0 Juno"
LOGO=distributor-logo
VERSION_ID="18.04"
HOME_URL="https://elementary.io/"
SUPPORT_URL="https://elementary.io/support"
BUG_REPORT_URL="https://github.com/elementary/appcenter/issues/new"
PRIVACY_POLICY_URL="https://elementary.io/privacy-policy"
VERSION_CODENAME=juno
UBUNTU_CODENAME=bionic

На совсем оставлять исправления не следует. Может что-то родное для Elementary OS перестать работать. Поэтому исправили, установили что требовалось, и вернули настройки к первоначальному виду.

Hera

Все сказанное акуально для «Hera». Исходный вид /etc/os-release:

NAME="elementary OS"
VERSION="5.1.2 Hera"
ID=elementary
ID_LIKE=ubuntu
PRETTY_NAME="elementary OS 5.1.2 Hera"
LOGO=distributor-logo
VERSION_ID="5.1.2"
HOME_URL="https://elementary.io/"
SUPPORT_URL="https://elementary.io/support"
BUG_REPORT_URL="https://github.com/elementary/os/issues/new"
PRIVACY_POLICY_URL="https://elementary.io/privacy-policy"
VERSION_CODENAME=hera
UBUNTU_CODENAME=bionic

1 комментарий

Ва
Вероятно есть смыл обрабатывать лишь файлы содержащие нужную информацию (примерно так): grep -ilR 'juno' /etc/apt | while read FILE; do sed -i.bak 's/juno/bionic/g' "${FILE}"; done