Неправильная строфа в ubuntu 24.04

Вопрос или проблема

Я застрял в обновлении моего 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 есть два основных формата файлов с расширениями, которые могут быть инициализированы в зависимости от конкретных требований:

  1. Одиночная строка (One-line style) – формат, который использует расширение .list. Этот формат является наиболее распространённым и состоит из единой строки для каждого источника репозиториев с указанием его URI, веток и компонентов (например, deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse).

  2. Расширенный формат DEB822 (DEB822-style) – используется для файлов с расширением .sources. Этот формат допускает использование более навороченной структуры и является более гибким. Каждый источник репозитория объявляется в виде структуры, содержащей такие поля, как Types, URIs, Suites, Components и Signed-By.

Пример

Для решения проблемы, описанной выше, нам следует один из форматов. Давайте рассмотрим два решения.

  1. Решение через изменение расширения файла:
    Если вы предпочитаете использовать простую структуру, как в формате One-line style, вы можете просто изменить расширение файла на .list:

    sudo mv /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.list

    После этого необходимо снова выполнить команду sudo apt update, чтобы убедиться, что теперь система понимает этот файл.

  2. Использование формата 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:

  1. Определите версию Ubuntu, используя команду lsb_release -cs. Это позволит убедиться в корректности введенных данных, потому что вы должны использовать правильную версию Ubuntu для настройки репозитория. Например, в вашем случае это "noble".

  2. Обновите файл ubuntu.sources, если вы решаете использовать формат DEB822. Убедитесь, что файл содержит корректные данные, как указано в примерах выше.

  3. Обновите ключи подписи репозиториев командой:

    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. Если ни один из представленных способов не работает, рассмотрите возможность повторной проверки всех проведённых изменений и перезапуска сервера для сброса кэша.

Эти шаги должны помочь решить проблему и восстановить функциональность системы управления пакетами. Убедитесь, что вы выполняете эти действия с суперпользовательскими правами, чтобы иметь необходимые привилегии для изменения системных файлов.

Оцените материал
Добавить комментарий

Капча загружается...