Як видалити неправильно сформовану лінію зі свого джерела.list?


68

Я видалив і перевстановив програмний центр Ubuntu відповідно до інформації, яку я знайшов у подібній темі, і я отримав таку ж відповідь про рядок 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 у списку джерел; щоб сказати вам, що це говорить. Вибачте, я справді новачок у цьому. Це те, що мені потрібно, щоб дізнатися, як доїхати і виправити те, що воно говорить. Мені б дуже хотілося, щоб НЕ довелося перерозподіляти жорсткий диск і починати з нуля, тому я дуже сподіваюся на вирішення цієї проблеми. Мені потрібно мати можливість встановити нове програмне забезпечення.


8
Чи можете ви додати вміст своїх /etc/apt/sources.listрядків між 67 та 69 ???
Бруно Перейра

2
Відредагуйте своє запитання, щоб включити вихід команди cat /etc/apt/sources.list. І ні вам не потрібно все витирати. Дуже проста проблема ( з мого досвіду )
Анвар

Для публікації результатів вам не потрібні точки повторень. Однак вам потрібно відформатувати вихід у вигляді коду, інакше він не дозволить вам розміщувати вихід, оскільки у вас недостатньо точок повторення для розміщення декількох посилань. Відредагуйте питання та вставте висновок, а потім виділіть висновок, а потім натисніть CTRL + K, щоб відформатувати вихід у вигляді коду, а потім збережіть зміни.
мчід

Відповіді:


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файл як корінь.

    Набравши sudo -H gedit /etc/apt/sources.listце в терміналі і удари Enterвиконають роботу.

  • Потім вставте скопійований вміст у sources.list- зауважте, що, ймовірно, потрібно буде замінити preciseкодове ім’я, що представляє вашу версію Ubuntu - наприклад, trustyдля 14.04. Потім збережіть і закрийте gedit.

  • Потім зробіть, sudo apt-get updateі ви побачите, що список сховищ оновлений.

Пояснення: Тут ми повністю заміняємо вміст на інший файл source.list на запис із сховища з головного сервера. Якщо ви хочете використовувати свій локальний сервер, sources.listперегляньте метод нижче.

Рекомендований метод

Перейдіть на сайт генератора списку джерел Ubuntu .

  • Виберіть свою країну.
  • Виберіть потрібні гілки, такі як Головна, Обмежена, Мультиварна, Всесвіт.
  • Виберіть потрібний список оновлення, -
  • Виберіть будь-який третій список сховищ, якщо бажаєте.
  • Клацніть Створити список внизу сторінки, вам буде наданий список із сховищами.
  • Скопіюйте цей список і замініть на sources.listфайл, який у вас є.

Ви закінчили. (Я сподіваюся, що це допоможе.)


5
Дивно, що цього не прийняли !! Швидке виправлення, прокоментуйте проблематичний рядок /etc/apt/sources.list, додавши ##в якості перших символів рядка. Потім спробуйте sudo apt-get update.
Благородний П. Авраам

3
Можливо, це не було прийнято, тому що у користувача можуть бути включені інші репости, і вони втратили б їх, якби це зробили. Наприклад, більшість користувачів VirtualBox отримують його від репо-Oracle. Крім того, Oracle використовує різні назви пакетів у тамтешніх репостах, ніж Ubuntu у своїх. Тому, якби я встановив VirtualBox з репортажем Oracle і дотримувався цього керівництва, я б весь час сидів за тією ж версією VirtualBox і ніколи не отримував би оновлення. Ніколи.
Джон Скотт

@FuzzyToothpaste вони не втратять їх, якщо зробили це. Він видаляє лише повторювані записи. Ваш приклад сценарію не має нічого спільного з цією проблемою
Anwar

Під час використання сайту генератора списку джерел Ubuntu для створення нового файлу source.list не забудьте оновити ключі GPG. Інакше питання може тривати
Тушар Госвамі

6

Як видно з помилки, він говорить про те, що у файлі izvor.list неправильний запис. Цей неправильний запис не вдалося розібрати. Ця помилка не пов’язана з Software Center як такою, але в основному стосується 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, проблема, сподіваємось, виправлена. Ви можете вийти з терміналу і повернутися до Software Center / Update Manager, і він повинен працювати.

Якщо проблема все-таки є, ви можете відновити вихідний файл з терміналу за допомогою sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list. У такому випадку, будь ласка, вставте проблемні рядки або навіть весь файл на пасту, і тоді ми зможемо допомогти далі.


3
Видалення кривдного рядка може не бути гарною ідеєю (але кудо на пораду зробити резервну копію, перш ніж робити це). Що робити, якщо це сховище, яке потрібен користувачеві? Крім того, якщо довгу лінію якимось чином розділили на дві лінії, у вас будуть дві неправильно сформовані лінії (і процедуру потрібно повторити). man sources.listє розділ із прикладами, і це може бути корисно попросити користувача порівняти його рядки з прикладами, можливо, він може визначити, що не так, і виправити це сам. Особисто я б зачекав, поки він опублікує свій файл source.list.
roadmr

@roadmr: Дякую, я повністю погоджуюся з усіма сценаріями, які ви створюєте. Я просто відчував, що новачки можуть навіть не знати, як опублікувати файл, не кажучи вже про конкретні рядки з цього файлу, якщо тільки не порадили, як. Це надихнуло мене на написання цього власного QA-howto :-)
останній

@roadmr Я вважаю, що ви отримаєте повідомлення про помилку щодо двох неправильно сформованих ліній, якби один довгий рядок розділився на два.
mchid

Зауважте, що якщо він -i.backupбуде переданий, sedа не просто -iтоді, він sedстворить сам файл резервної копії.
Eliah Kagan

5

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

Якщо файл зіпсований НЕ підлягає ремонту, то ви можете використовувати Ubuntu Source List Generator для створення sources.listзаново. Але попередньо слід створити резервну копію старої . Також це призведе до втрати всіх змін, внесених до джерел програмного забезпечення, наприклад, у Sofware Center.

Кращий спосіб виправити це - дати нам побачити, що не так у вашому 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 до повідомлення вище.
Оді1215

Досить створити резервну копію лише одного названого файлу sources.list.
con-f-use

Гаразд, зробимо. Тоді я спробую генератор списку джерел?
Odi1215

Позитивний. Це так.
con-f-use

Я набрав sudo more /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файлу пошкоджений або є якась помилка, що означає, що певне програмне забезпечення неможливо встановити / оновити / оновити.

Коментуючи / видаляючи помилкову лінію, програмне забезпечення не буде встановлено (якщо ще не було) або не буде оновлено / оновлено, якщо саме це ви намагаєтеся. Я пропоную вам перевірити, звідки походить цей рядок (яке програмне забезпечення вимагає цього) і зробити належні модифікації, як це потрібно, щоб усе працювало нормально.


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 На мою думку, відповідальність за відповідь (а) не відповідає таким чином, що лише допомагає первинному запитувачеві [це занадто локалізовано], (b) не належним чином попереджає про можливі побічні ефекти командування. Відмова від відповідальності допомагає.
Jjed

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,10 єoneiric

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

    1. Основне - яке містить безкоштовне та відкрите програмне забезпечення, офіційно підтримується
    2. Всесвіт - ці програмні засоби не підтримуються Canonical, але їх підтримує громада.
    3. Обмежено - ці програмні засоби підтримуються Canonical, але не є безкоштовними. Вони підтримуються для надання деяких необхідних драйверів
    4. Multiverse - це також невільні програмні засоби, які не підтримуються Canonical.

Дивіться цю сторінку для отримання додаткової інформації.

Тепер ви можете зрозуміти, що /etc/apt/sources.listце не рядок джерела сховища, і, отже, apt-getнарікайте на нього.



1
Привіт, Анвар, це хороша відповідь, але дуже ризикувати просто sudo sedкоманда у верхній частині. Багато людей з однаковою проблемою (але дещо іншими обставинами) побачать цю відповідь і мимоволі виконають її, і, можливо, зруйнують її sources.listпісля ремонту. У цьому випадку може бути більш загальний підхід (з текстовим редактором).
Jjed
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.