Как удалить искаженную строку из моего sources.list?

68

Я удалил и переустановил Ubuntu Software Center в соответствии с информацией, найденной в аналогичной теме, и получил такой же ответ о строке 91 или что-то в этом роде.

Я просто попытался загрузить снимок экрана, но так как я новичок, он не позволит мне. Я также не могу понять, как вырезать и вставлять что-либо, поэтому мне приходится вручную вводить то, что говорит экран ошибки, как при попытке открыть центр программного обеспечения, и ничего не происходит, когда я пытаюсь ввести команды в терминал для удаления, переустановить , что бы я ни получал одинаково:

COULD NOT INTITIALIZE THE PACKAGE INFORMATION
An unresolvable problem occured while initializing the package information
Please report t:his bug against the 'update-manager' package and include the
following error message:
'E: Malformed line 91 in source list/etc/apt/sources.list (dist parse) 
E: The list of sources could not be read., 
E: The package list of status file could not be parsed or opened.

Как мне сообщить об ошибках? Что можно сделать по этому поводу. Я искал, и все, что говорят все, приводит меня к тому же сообщению об ошибке в строке.

Итак, я не знаю, как добраться до строки 91 в списке источников; сказать вам, что он говорит. Извините, я действительно новичок в этом. Вот что мне нужно, это выяснить, как туда добраться и исправить то, что там написано. Мне бы очень хотелось, чтобы мне НЕ пришлось заново разбивать мой жесткий диск и начинать с нуля, поэтому я с нетерпением жду решения этой проблемы. Мне нужно иметь возможность устанавливать новое программное обеспечение.

eminencejae
источник
8
Можете ли вы добавить содержимое вашего /etc/apt/sources.listмежду строками 67 и 69 ???
Бруно Перейра
2
Отредактируйте свой вопрос, чтобы включить вывод команды cat /etc/apt/sources.list. И нет, вам не нужно все уничтожать. Это очень простая проблема ( из моего опыта )
Анвар
Вам не нужны точки повторения, чтобы опубликовать вывод. Однако вам нужно отформатировать вывод как код, иначе он не позволит опубликовать вывод, потому что у вас недостаточно точек повторения для размещения нескольких ссылок. Отредактируйте вопрос и вставьте вывод, затем выделите вывод и затем нажмите CTRL + K, чтобы отформатировать вывод в виде кода и затем сохранить изменения.
mchid

Ответы:

55

Некоторые строки повреждены в вашем sources.listфайле (или другом *.listфайле в sources.list.d/).

Отредактируйте файл, упомянутый в ошибке, чтобы исправить пунктирные линии.

  1. Для этого выполните эту команду (нажмите Ctrl+ Alt+, Tчтобы открыть терминал):

    sudo -H gedit /etc/apt/sources.list
    

    Или вместо Gedit (который есть не во всех системах Ubuntu) вы можете открыть файл в текстовом редакторе на основе терминала:

    sudoedit /etc/apt/sources.list
    

    При необходимости замените его /etc/apt/sources.listна другое имя файла, то есть путь к какому-либо файлу внутри /etc/apt/sources.list.d/.

  2. Найдите строки, которые неправильно отформатированы (обратитесь к ошибке для номера строки, затем осмотрите эту точку). Это примеры правильно отформатированных строк:

    # Comment, marked by a line starting with '#'
    deb http://site.example.com/debian distribution component1 component2 component3
    deb-src http://site.example.com/debian distribution component1 component2 component3
    

    URL distributionи компоненты будут разными. Это не обязательно должно иметь 3 компонента.

    Все, что не соответствует этому формату, неверно.

  3. Сохраните файл и выйдите из текстового редактора. Затем выполните эту команду в окне терминала:

    sudo apt-get update
    

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

Однако, хотя некоторые проблемы с Центром программного обеспечения могут быть решены путем переустановки software-centerпакета, большинство не может, поэтому возможно, что ваша первоначальная проблема останется. Если это так, вы можете опубликовать новый вопрос, чтобы получить помощь в этом.

Элия ​​Каган
источник
Я думаю, что иногда для дистрибутивов на основе Debian вам нужно ./в конце строки, как в этом примере
user10089632
27

Быстрый метод

Обходным путем для этой проблемы может быть создание sources.listвхода с нуля.

deb http://archive.ubuntu.com/ubuntu precise main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu precise universe main multiverse restricted

deb http://security.ubuntu.com/ubuntu/ precise-security universe main multiverse restricted
deb http://archive.ubuntu.com/ubuntu precise-updates universe main multiverse restricted
deb http://archive.ubuntu.com/ubuntu precise-backports universe main multiverse restricted

# deb http://archive.canonical.com/ubuntu precise partner
# deb-src http://archive.canonical.com/ubuntu precise partner

# deb http://extras.ubuntu.com/ubuntu precise main
# deb-src http://extras.ubuntu.com/ubuntu precise main
  • Скопируйте вышеуказанный контент (в сером поле) и откройте sources.listфайл как root.

    Напечатайте sudo -H gedit /etc/apt/sources.listэто в терминале и нажмите, Enterчтобы сделать работу.

  • Затем вставьте скопированный контент в sources.listзаметку, которую вам, вероятно, придется заменить preciseна кодовое имя, представляющее вашу версию Ubuntu - например, trustyдля 14.04. Затем сохраните и закройте gedit.

  • Затем сделайте, sudo apt-get updateи вы увидите, что список репозитория обновляется.

Объяснение: Здесь мы полностью заменяем содержимое другим файлом sources.list с записью репозитория с главного сервера. Если вы хотите использовать свой локальный сервер для sources.listознакомления с методом ниже.

Рекомендуемый метод

Перейдите на сайт генератора списка источников Ubuntu .

  • Выберите вашу страну.
  • Выберите нужные ветви, такие как Main, Restricted, Multiverse, Universe.
  • Выберите желаемый список обновлений, -
  • Выберите любой список сторонних репозиториев, если хотите.
  • Нажмите Создать список внизу страницы, вам будет предоставлен список с репозиториями.
  • Скопируйте этот список и замените имеющимся sources.listфайлом.

Вы сделали. (Я надеюсь, это поможет.)

Анвар
источник
5
Странно, что это не было принято !! Быстрое решение, закомментируйте проблемную строку /etc/apt/sources.list, добавив в ##качестве первых символов в строке. Тогда попробуй sudo apt-get update.
Благородный П. Авраам
3
Возможно, это не было принято, потому что у пользователя могут быть включены другие репозитории, и они потеряют их, если сделают это. Например, большинство пользователей VirtualBox получают его из репозитория Oracle. Кроме того, Oracle использует в этих репозиториях имена других пакетов, чем в их Ubuntu. Поэтому, если я установил VirtualBox с репозиторием Oracle и следовал этому руководству, я бы все время сидел за одной версией VirtualBox и никогда не получал обновления. Никогда.
Джон Скотт
@ FuzzyToothpaste они не потеряют их, если они это сделали. Это только удаляет дубликаты записей. Ваш пример сценария не имеет ничего общего с этой проблемой
Anwar
При использовании сайта генератора исходных списков Ubuntu для создания нового файла sources.list не забудьте обновить ключи GPG. В противном случае проблема может сохраниться
Тушар Госвами
6

Как видно из ошибки, в нем говорится, что в файле sources.list указана неправильная запись. Эта неправильная запись не может быть проанализирована. Эта ошибка не связана с Центром программного обеспечения как таковым, но в основном связана с apt (Менеджер пакетов)

Способ решить эту проблему - исправить неверно введенную строку 91.

Если вы не можете понять, что не так со строкой 91, пожалуйста, оставьте строку 91, и я помогу вам

Маниш Синха
источник
6

Пожалуйста, вставьте файл, /etc/apt/sources.listчтобы мы могли решить эту проблему для вас. Посмотрите этот короткий урок, чтобы узнать, как это сделать:

Как я могу легко поделиться результатами команды или текстового файла с другими?


Иногда это может быть очень легко исправить, но сначала нужно сделать резервную копию, sources.list так как это важный файл.

  1. Откройте терминал с помощью Ctrl+ Alt+ T.
  2. Введите / вставьте: sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup(это создает резервную копию)
  3. sudo sed -i -e '68d' /etc/apt/sources.list (это удаляет проблемную строку)
  4. sudo apt-get update (это обновляет базу данных исправленным файлом)

Если вы видите, что при выполнении шага 4 не появляются ошибки, возможно, проблема устранена. Вы можете выйти из терминала и вернуться в Центр программного обеспечения / Диспетчер обновлений, и он должен работать.

Если проблема не устранена, вы можете восстановить исходный файл из терминала с помощью sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list. В этом случае, пожалуйста, вставьте проблемные строки или даже весь файл в каталог, и тогда мы сможем помочь вам в дальнейшем.

иш
источник
3
Удаление оскорбительной строки может быть не очень хорошей идеей (но слава совету сделать резервную копию перед тем, как сделать это). Что если это репозиторий, который нужен пользователю? Кроме того, если длинная строка была каким-то образом разделена на две строки, у вас будут две неправильные линии (и процедуру необходимо повторить). man sources.listесть раздел с примерами, и может быть полезно попросить пользователя сравнить свои строки с примерами, может он сам может определить, что не так, и исправить это сам. Лично я бы подождал, пока он не отправит свой файл sources.list.
roadmr
@roadmr: Спасибо, я полностью согласен со всеми сценариями, которые вы предлагаете. Я просто чувствовал, что новички могут даже не знать, как разместить файл, не говоря уже о конкретных строках из этого файла, если не посоветуют, как это сделать. Это вдохновило меня написать этот себя QA-Howto :-)
иш
@roadmr Я полагаю, вы получите сообщение об ошибке о двух неправильно сформированных строках, если одна длинная строка будет разбита на две строки.
Мч
Обратите внимание , что если -i.backupпередается sedвместо того , чтобы только -iпотом sedсделает сам файл резервной копии.
Элия ​​Каган
5

Файл /etc/apt/sources.listсодержит URL-адреса веб-серверов и расположение других источников (например, компакт-дисков), из которых вы получаете программное обеспечение и обновления. Он в основном говорит Ubuntu, где искать новое ПО и обновления уже установленных программ. Полученное сообщение об ошибке означает, что файл каким-то образом был взломан. Не зная, каково содержание вашего файла, трудно понять, что именно с ним не так. Таким образом, вы должны опубликовать вывод sudo more /etc/apt/sources.listдля нас, чтобы помочь вам лучше.

Если файл испорчен и не подлежит восстановлению, вы можете использовать Ubuntu Source List Generator для генерации sources.listзаново. Но вы должны сделать резервную копию старого . Кроме того, это приведет к потере всех изменений, которые вы внесли в свои Источники программного обеспечения, например, в Центр программного обеспечения.

Лучший способ исправить это - показать нам, что не так с вашим sources.list

Изменить после того, как вы опубликовали свой sources.list:

Я считаю, что файл, который вы разместили, должен выглядеть следующим образом (обратите внимание на последние строки и пропущенные /etc/apt/sources.listв конце):

# /etc/apt/sources.list

deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 
deb http://security.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://archive.canonical.com/ubuntu partner
deb-src http://archive.canonical.com/ubuntu partner
кон-е использование
источник
Я попробую генератор списка источников после того, как сделаю резервную копию своих файлов, но это действительно займет некоторое время. Мой ноутбук все еще на жестком диске, поэтому он еще не так быстр. Я добавил свой source.list к сообщению выше.
Odi1215
Достаточно сделать резервную копию только одного вызванного файла sources.list.
con-f-use
Ладно сделаем Тогда я попробую генератор списка источников?
Odi1215
Положительно. Это да.
con-f-use
Я набрал в sudo больше /etc/apt/sources.list, но ничего не произошло.
Odi1215
5

Пожалуйста, попробуйте отредактировать ваш sources.listфайл, поместив его sudo gedit /etc/apt/sources.listв терминал (возможно, будет запрошен ваш пароль), после чего у вас будет возможность включить «Номера строк» ​​в меню «Редактировать / Настройки gEdit» и установить флажок «Отображать номера строк», затем вручную перейдите к строке в вашей ошибке, например, 91 или с помощью «Поиск / перейти к строке» (Ctrl + I делает трюк).

введите описание изображения здесь

В начале строки 91 ##удалите два символа # ( ), чтобы прокомментировать эту строку, и таким образом удалите ее из процесса обновления (вы также можете удалить эту строку на свой страх и риск, я предлагаю вам сделать резервную копию).

Когда вы закончите, сохраните файл и закройте его. Затем откройте терминал, запустите sudo apt-get updateи посмотрите, появляется ли ошибка по-прежнему. Если нет, попробуйте открыть менеджер обновлений.

Почему-то кажется, что текст в строке 91 вашего sources.listфайла поврежден или есть какая-то ошибка, что означает, что некоторые программы не могут быть установлены / обновлены / обновлены.

Комментируя / удаляя ошибочную строку, программное обеспечение не будет установлено (если еще не установлено) или не будет обновлено / обновлено, если вы попробуете это. Из которых я предлагаю вам проверить, откуда эта строка (какое программное обеспечение требует этого) и внести соответствующие изменения, как требуется, чтобы все работало нормально.

Geppettvs D'Constanzo
источник
4

Если вы столкнулись с какой-либо ошибкой неправильной строки, как показано ниже, я настоятельно рекомендую вам закомментировать ( добавить #перед строкой ) строку, а не удалять ее в /etc/apt/sources.listфайле.

E: Malformed line 91 in source list /etc/apt/sources.list (dist parse)

Из-за вышеуказанной ошибки номер строки 91в /etc/apt/sources.listфайле поврежден. Чтобы закомментировать строку номер 91, вы должны выполнить следующую команду на терминале.

sudo sed -i '91s/\(.*\)/#\1/' /etc/apt/sources.list

91в приведенном выше коде представляет номер строки. Замените число 91 в приведенном выше коде на ваш, если вы получили какую-либо ошибку в неправильной строке.

В некоторых случаях ошибка в искаженной строке также возникает в файле списка, который фактически присутствовал в /etc/apt/sources.list.dкаталоге. Например,

E: Malformed line 1 in source list /etc/apt/sources.list.d/google.list (dist parse)

В этом случае я настоятельно рекомендую вам удалить google.listфайл, запустив его, sudo rm /etc/apt/sources.list.d/google.listа затем снова добавить соответствующий PPA.

Наконец, обновите все репозитории, запустив sudo apt-get updateкоманду на терминале. Теперь ошибка не появляется.

Авинаш Радж
источник
3

Вы должны удалить последнюю строку этого файла (конечно, не сам файл):

 /etc/apt/sources.list

Ваш sources.listфайл должен выглядеть примерно так:

# /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse 
deb http://security.ubuntu.com/ubuntu/ precise-security main restricted universe   multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://archive.canonical.com/ partner
deb-src http://archive.canonical.com/ partner

Конечно, просто заменить ваш sources.listфайл этим текстом может быть очень плохо, особенно если раньше он выглядел совсем иначе. Ключевым моментом является то, что каждая строка начинается с debили deb-src(кроме комментариев, которые начинаются с #).

Малика Квин
источник
1
@Malika Привет, я рад, что это решило проблему. Но, пожалуйста, попробуйте ответить на вопросы не только для автора, но и для людей, которые задают этот вопрос в Google и имеют небольшие вариации проблемы. Это, вероятно, нуждается в небольшом дополнительном объяснении, чтобы сделать его хорошим "общим" ответом. :)
Jjed
@JacobJohanEdwards Я не могу с вами согласиться, потому что мы действительно не можем помочь тем людям, которые выполняют команды до прочтения вопроса, IMO
Anwar
2
@Anwar По моему мнению, ответчик обязан (а) не отвечать таким образом, который только помогает первоначальному спрашивающему [это слишком локализовано], (б) не предупреждает надлежащим образом о потенциальных побочных эффектах команда. Отказ от ответственности помогает.
Джед
1

Откройте терминал, используя CTRL+ Alt+, Tи выполните приведенную ниже команду, чтобы удалить строку 6, которая не является правильной формой строки исходного кода репозитория, что может привести к ошибке об искаженной строке.

ВНИМАНИЕ: Не выполняйте эту команду, не прочитав сначала вопрос, эта команда удалит строку 68 /etc/apt/sources.listфайла. Проверьте, схожа ли ваша проблема, и, даже если это так, замените ее 68на номер строки, которую нужно удалить .

sudo sed -i.old '68d' /etc/apt/sources.list

Эта команда удалит строку, используя sedна месте. Это делает резервную копию под названием /etc/apt/sources.list.old. Если вам не нужна резервная копия, вы можете использовать -iвместо -i.old.

Кроме того, вы можете вручную удалить строку с помощью Gedit.

  • Нажмите Alt+ F2и введите gksu gedit /etc/apt/sources.list.
    (Если у вас нет, gksuвы можете использовать sudo -H gedit.)
  • Найдите испорченный /etc/apt/sources.listи удалите его.
  • Сохраните и выйдите из Gedit.

Правильная форма исходной строки репозитория:

Правильный формат исходной строки репозитория:

<type of repository> <location i.e URI>  <dist-name> <components i.e main, universe>

Например:

  deb http://archive.ubuntu.com/ubuntu precise main
  • Тип: deb тип репо, он указывает, что это бинарный репозиторий, а не исходный репозиторий, имеющий тип deb-scr.
  • Расположение: http://archive.ubuntu.com/ubuntu расположение хранилища
  • Dist-name: precise имя дистрибутива выпуска Ubuntu. для Ubuntu 12.04 это precise11.10oneiric

  • Компонент: main указывает на компонент хранилища. Репозиторий Ubuntu разделен на четыре части.

    1. Главная - которая содержит бесплатное программное обеспечение с открытым исходным кодом, официально поддерживается
    2. Universe - эти программы не поддерживаются Canonical, но поддерживаются сообществом.
    3. Restricted - эти программы поддерживаются Canonical, но не являются бесплатными. Они поддерживаются, чтобы обеспечить некоторые основные драйверы
    4. Multiverse - это также несвободные программы, которые не поддерживаются Canonical.

Смотрите эту страницу для получения дополнительной информации.

Теперь вы можете понять, что /etc/apt/sources.listэто не исходная строка репозитория и, следовательно, apt-getжаловаться на это.


Анвар
источник
1
Привет, Анвар, это хороший ответ, но очень рискованно просто иметь sudo sedкоманду на вершине. Многие люди с такой же проблемой (но несколько иными обстоятельствами) увидят этот ответ и будут его невольно запускать, что может привести к поломке sources.list. В этом случае более общий подход (с текстовым редактором) может быть в порядке.
Джед