Вопрос или проблема
Я застрял в обновлении моего Ubuntu 24.04, до того как я попытался добавить PGP-ключ, все работало, и после многих изменений я попытался сбросить все настройки до значений по умолчанию, но теперь у меня проблема с обновлением apt. Я вставляю ошибки и мою конфигурацию ниже! Помогите мне 😐
➜ sources.list.d pwd
/etc/apt/sources.list.d
➜ sources.list.d ll
total 4.0K
-rw-r--r-- 1 root root 343 Dec 17 00:38 ubuntu.sources
➜ sources.list.d cat ubuntu.sources
deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-backports main universe restricted multiverse
➜ sources.list.d sudo apt update
E: Malformed stanza 1 in source list /etc/apt/sources.list.d/ubuntu.sources (type)
E: The list of sources could not be read.
➜ sources.list.d
apt
ожидает файл в DEB822-STYLE FORMAT
если файл имеет расширение .sources
.
Ваш файл использует ONE-LINE-STYLE FORMAT
, который должен иметь расширение .list
.
Переименуйте ваш файл с помощью
sudo mv /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.list
или используйте DEB822-STYLE FORMAT
, вот пример для noble:
Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble noble-updates
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Смотрите также man sources.list
.
если у вас такая же проблема, просто выполните эти 3 шага, и она будет решена
-
первый: вы должны узнать тип вашей Ubuntu с этой командой
lsb_release -cs
-
второй: обновите ваш ubuntu.sources на основе lsb_release -cs, в моем случае это noble
sudo nano /etc/apt/sources.list.d/ubuntu.sources
Types: deb
URIs: http://archive.ubuntu.com/ubuntu
Suites: noble
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: http://archive.ubuntu.com/ubuntu
Suites: noble-updates
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: http://archive.ubuntu.com/ubuntu
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: http://archive.ubuntu.com/ubuntu
Suites: noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
- третий: вы можете обновить ваш /usr/share/keyrings/ubuntu-archive-keyring.gpg этой командой:
curl -fsSL https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920D1991BC93C | gpg --dearmor | sudo tee /usr/share/keyrings/ubuntu-archive-keyring.gpg > /dev/null
Ответ или решение
Ошибка "Malformed stanza" в Ubuntu 24.04 может возникнуть при попытке выполнить команду apt update
, если файл конфигурации источников не соответствует ожидаемому формату. В данной ситуации важно понимать, что система управления пакетами apt
требует определённых форматов для файлов источников, которые содержатся в директории /etc/apt/sources.list.d/
. Если формат не соответствует ожиданиям, система выдаст ошибку.
Теория
Для менеджера пакетов apt
в Ubuntu есть два основных формата файлов с расширениями, которые могут быть инициализированы в зависимости от конкретных требований:
-
Одиночная строка (One-line style) – формат, который использует расширение
.list
. Этот формат является наиболее распространённым и состоит из единой строки для каждого источника репозиториев с указанием его URI, веток и компонентов (например,deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse
). -
Расширенный формат
DEB822
(DEB822-style) – используется для файлов с расширением.sources
. Этот формат допускает использование более навороченной структуры и является более гибким. Каждый источник репозитория объявляется в виде структуры, содержащей такие поля, какTypes
,URIs
,Suites
,Components
иSigned-By
.
Пример
Для решения проблемы, описанной выше, нам следует один из форматов. Давайте рассмотрим два решения.
-
Решение через изменение расширения файла:
Если вы предпочитаете использовать простую структуру, как в форматеOne-line style
, вы можете просто изменить расширение файла на.list
:sudo mv /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.list
После этого необходимо снова выполнить команду
sudo apt update
, чтобы убедиться, что теперь система понимает этот файл. -
Использование формата DEB822:
Если вы хотите сохранить расширение.sources
, вам придется изменить структуру файла на соответствующую этому формату. Вот как можно структурировать файл:Types: deb URIs: http://archive.ubuntu.com/ubuntu Suites: noble Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: http://archive.ubuntu.com/ubuntu Suites: noble-updates Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: http://archive.ubuntu.com/ubuntu Suites: noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: http://archive.ubuntu.com/ubuntu Suites: noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Ознакомиться с деталями можно, используя команду:
man sources.list
.
Применение (Практическое руководство)
Теперь, когда вы понимаете различие между этими форматами, следуйте этим шагам для устранения проблемы с apt update
:
-
Определите версию Ubuntu, используя команду
lsb_release -cs
. Это позволит убедиться в корректности введенных данных, потому что вы должны использовать правильную версию Ubuntu для настройки репозитория. Например, в вашем случае это "noble". -
Обновите файл
ubuntu.sources
, если вы решаете использовать формат DEB822. Убедитесь, что файл содержит корректные данные, как указано в примерах выше. -
Обновите ключи подписи репозиториев командой:
curl -fsSL https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920D1991BC93C | gpg --dearmor | sudo tee /usr/share/keyrings/ubuntu-archive-keyring.gpg > /dev/null
Таким образом, вы можете решить ошибку "Malformed stanza" и продолжить использовать apt
для управления программным обеспечением в вашей системе Ubuntu. Если ни один из представленных способов не работает, рассмотрите возможность повторной проверки всех проведённых изменений и перезапуска сервера для сброса кэша.
Эти шаги должны помочь решить проблему и восстановить функциональность системы управления пакетами. Убедитесь, что вы выполняете эти действия с суперпользовательскими правами, чтобы иметь необходимые привилегии для изменения системных файлов.