Jak usunąć zniekształconą linię z mojej strony sources.list?

68

Odinstalowałem i ponownie zainstalowałem Centrum Oprogramowania Ubuntu zgodnie z informacjami, które znalazłem w podobnym wątku i otrzymałem tę samą odpowiedź na temat linii 91 lub czegoś takiego.

Właśnie próbowałem załadować zrzut ekranu, ale ponieważ jestem nowy, nie pozwala mi na to. Nie mogę również wymyślić, jak coś wyciąć i wkleić, więc muszę ręcznie wpisać treść komunikatu o błędzie, zarówno gdy próbuję otworzyć centrum oprogramowania, ale nic się nie dzieje, gdy próbuję wprowadzić polecenia do terminala w celu odinstalowania, ponownej instalacji , cokolwiek otrzymuję to samo:

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.

Jak zgłaszać błędy? Co można zrobić na ten temat. Szukałem i wszystko, co wszyscy mówią, prowadzi mnie z powrotem do tego samego komunikatu o błędzie linii.

Nie wiem więc, jak dostać się do linii 91 na liście źródeł; powiedzieć ci, co mówi. Przepraszam, jestem naprawdę nowy. Potrzebuję dowiedzieć się, jak się tam dostać i naprawić to, co mówi. Naprawdę nie chciałbym ponownie partycjonować dysku twardego i zaczynać od zera, więc naprawdę nie mogę się doczekać rozwiązania tego problemu. Muszę być w stanie zainstalować nowe oprogramowanie.

eminencejae
źródło
8
Czy możesz dodać treść /etc/apt/sources.listmiędzy wierszami 67 i 69?
Bruno Pereira,
2
Edytuj swoje pytanie, aby uwzględnić wynik polecenia cat /etc/apt/sources.list. I nie, nie musisz wszystko wymazać. To bardzo łatwy problem ( z mojego doświadczenia )
Anwar,
Nie potrzebujesz punktów rep, aby opublikować wynik. Jednak musisz sformatować dane wyjściowe jako kod, inaczej nie pozwoli to opublikować wyniku, ponieważ nie masz wystarczającej liczby punktów rep, aby opublikować wiele linków. Edytuj pytanie i wklej wynik, a następnie podświetl wynik, a następnie naciśnij klawisze CTRL + K, aby sformatować wynik jako kod, a następnie zapisz zmiany.
mchid

Odpowiedzi:

55

Niektóre linie są przerwane w twoim sources.listpliku (lub innym *.listpliku w sources.list.d/).

Edytuj plik wymieniony w błędzie, aby naprawić przerywane linie.

  1. Aby to zrobić, uruchom to polecenie (naciśnij Ctrl+ Alt+, Taby otworzyć terminal):

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

    Lub zamiast Gedit (który nie wszystkie systemy Ubuntu mają), możesz chcieć otworzyć plik w edytorze tekstowym opartym na terminalu:

    sudoedit /etc/apt/sources.list
    

    W razie potrzeby zastąp /etc/apt/sources.listinną nazwą pliku, tj. Ścieżką do pliku znajdującego się w środku /etc/apt/sources.list.d/.

  2. Znajdź linie, które są niepoprawnie sformatowane (zapoznaj się z błędem numeru linii, a następnie rozejrzyj się wokół tego punktu). Oto przykłady poprawnie sformatowanych linii:

    # 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
    

    Adres URL distributioni składniki będą inne. Nie musi koniecznie mieć 3 elementów.

    Wszystko, co nie pasuje do tego formatu, jest nieprawidłowe.

  3. Zapisz plik i zamknij edytor tekstu. Następnie uruchom to polecenie w oknie terminala:

    sudo apt-get update
    

Zakładając, że nie ma błędów, problem został rozwiązany. Powinieneś być w stanie uruchomić Sofware Center.

Jednak chociaż niektóre problemy z Centrum oprogramowania można rozwiązać przez ponowną instalację software-centerpakietu, większość nie może, więc możliwe jest, że oryginalny problem pozostanie. W takim przypadku możesz wysłać nowe pytanie, aby uzyskać pomoc.

Eliah Kagan
źródło
Myślę, że czasami dla dystrybucji opartych na Debianie potrzebujesz ./na końcu linii, jak w tym przykładzie
użytkownik10089632
27

Szybka metoda

Obejściem tego problemu może być budowanie sources.listwpisu od zera.

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
  • Skopiuj powyższą zawartość (w szarym polu) i otwórz sources.listplik jako root.

    Wpisanie sudo -H gedit /etc/apt/sources.listtego w terminalu i uderzenie Enterwykona zadanie.

  • Następnie wklej skopiowaną treść do sources.list- uwagi, którą prawdopodobnie będziesz musiał zastąpić precisekryptonimem reprezentującym twoją wersję Ubuntu - np. trustyDla 14.04. Następnie zapisz i zamknij gedit.

  • Następnie zrób, sudo apt-get updatea zobaczysz, że lista repozytoriów została zaktualizowana.

Objaśnienie: Tutaj całkowicie zastępujemy zawartość innym plikiem sources.list z wpisem do repozytorium z serwera głównego. Jeśli chcesz użyć lokalnego serwera, sources.listzapoznaj się z poniższą metodą.

Zalecana metoda

Przejdź do strony generatora listy źródeł Ubuntu .

  • Wybierz swój kraj.
  • Wybierz żądane gałęzie, takie jak Główne, Ograniczone, Wieloświatowe, Wszechświat.
  • Wybierz żądaną listę aktualizacji, -
  • Jeśli chcesz, wybierz dowolną listę repozytoriów stron trzecich.
  • Kliknij Generuj listę na dole strony, otrzymasz listę z repozytoriami.
  • Skopiuj tę listę i zastąp ją sources.listposiadanym plikiem.

Gotowe. (Mam nadzieję, że to pomoże.)

Anwar
źródło
5
Dziwne, że to nie zostało przyjęte !! Szybka poprawka, skomentuj problematyczną linię /etc/apt/sources.list, dodając ##jako pierwsze znaki w linii. Więc spróbuj sudo apt-get update.
Noble P. Abraham
3
Może nie zostało to zaakceptowane, ponieważ użytkownik może mieć włączone inne repozytorium i straciłoby je, gdyby to zrobił. Na przykład większość użytkowników VirtualBox otrzymuje go z repozytorium Oracle. Ponadto Oracle używa w tych repozytoriach innych nazw pakietów niż Ubuntu. Dlatego gdybym zainstalował VirtualBox z repozytorium Oracle i postępował zgodnie z tym przewodnikiem, cały czas siedziałbym w tej samej wersji VirtualBox i nigdy nie otrzymałem aktualizacji. Nigdy.
John Scott
@FuzzyToothpaste nie stracą ich, jeśli to zrobią. Usuwa tylko zduplikowane wpisy. Twój przykładowy scenariusz nie ma nic wspólnego z tym problemem
Anwar
Korzystając z generatora listy źródeł Ubuntu do generowania nowego pliku sources.list, nie zapomnij zaktualizować kluczy GPG. W przeciwnym razie problem może się utrzymywać
Tushar Goswami,
6

Jak widać po błędzie, oznacza to, że plik sources.list ma nieprawidłowy wpis. Nie można przeanalizować tego nieprawidłowego wpisu. Ten błąd nie jest związany z samym Software Center, ale głównie z apt (menedżerem pakietów)

Sposobem na rozwiązanie tego jest naprawienie nieprawidłowo wpisanego wiersza 91.

Jeśli nie możesz zrozumieć, co jest nie tak z linią 91, proszę napisać linię 91, a ja ci pomogę

Manish Sinha
źródło
6

Wklej plik /etc/apt/sources.list, abyśmy mogli rozwiązać ten problem. Zobacz tę krótką odpowiedź samouczka, jak to zrobić:

Jak mogę z łatwością udostępnić wyniki polecenia lub plik tekstowy innym osobom?


Czasami może to być bardzo łatwa poprawka, ale najpierw musisz wykonać kopię zapasową, sources.list ponieważ jest to plik krytyczny.

  1. Otwórz terminal za pomocą Ctrl+ Alt+ T.
  2. Wpisz / wklej: sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup(tworzy kopię zapasową)
  3. sudo sed -i -e '68d' /etc/apt/sources.list (usuwa to problematyczną linię)
  4. sudo apt-get update (to aktualizuje bazę danych z plikiem, który prawdopodobnie został naprawiony)

Jeśli nie widzisz żadnych błędów podczas próby wykonania kroku 4, problem jest prawdopodobnie naprawiony. Możesz wyjść z terminala i wrócić do Software Center / Update Manager i powinno działać.

Jeśli nadal występuje problem, możesz przywrócić oryginalny plik z terminala za pomocą sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list. W takim przypadku wklej problematyczne linie lub nawet cały plik do pastebinu, a następnie możemy Ci pomóc.

ish
źródło
3
Usunięcie obraźliwej linii może nie być dobrym pomysłem (ale uznanie za radę, aby zrobić kopię zapasową przed zrobieniem tego). Co jeśli jest to repozytorium, którego potrzebuje użytkownik? Ponadto, jeśli długa linia została w jakiś sposób podzielona na dwie linie, będziesz mieć dwie zniekształcone linie (i procedurę należy powtórzyć). man sources.listma sekcję z przykładami i warto poprosić użytkownika o porównanie jego wierszy z przykładami, być może sam może ustalić, co jest nie tak, i naprawić to sam. Osobiście poczekam, aż opublikuje swój plik sources.list.
roadmr
@roadmr: Dzięki, zgadzam się całkowicie ze wszystkimi scenariuszami, które zakładasz. Po prostu czułem, że nowicjusze mogą nawet nie wiedzieć, jak opublikować plik, nie mówiąc już o określonych wierszach z tego pliku, chyba że zalecono inaczej. To zainspirowało mnie do napisania tego samo-QA-howto :-)
Ish
@roadmr Wierzę, że otrzymasz komunikat o błędzie dotyczący dwóch zniekształconych linii, jeśli jedna długa linia zostanie podzielona na dwie linie.
mchid
Zauważ, że jeśli -i.backupjest przekazywany sed, a nie tylko -iwtedy seddokona sam plik kopii zapasowej.
Eliah Kagan,
5

Plik /etc/apt/sources.listzawiera adresy URL serwerów sieciowych i lokalizację innych źródeł (np. CD), z których pobierasz oprogramowanie i aktualizacje. Zasadniczo informuje Ubuntu, gdzie szukać nowego oprogramowania i aktualizacji już zainstalowanych programów. Otrzymany komunikat o błędzie oznacza, że ​​plik został w jakiś sposób skompromitowany. Nie wiedząc, jaka jest zawartość pliku, trudno jest ustalić, co dokładnie jest z nim nie tak. Więc powinieneś opublikować wyniki sudo more /etc/apt/sources.listdla nas, aby pomóc ci lepiej.

Jeśli plik jest pomieszany nie do naprawienia, możesz użyć Generatora listy źródeł Ubuntu, aby wygenerować od sources.listnowa. Ale powinieneś wcześniej wykonać kopię zapasową swojego starego . Spowoduje to również utratę wszystkich zmian wprowadzonych dla źródeł oprogramowania, np. W Sofware Center.

Lepszym sposobem, aby to naprawić, jest sprawdzenie, co jest nie tak z twoim sources.list

Edytuj po opublikowaniu sources.list:

Uważam, że opublikowany plik powinien wyglądać tak (zwróć uwagę na ostatnie wiersze i brakujące /etc/apt/sources.listna końcu):

# /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
dezorientować
źródło
Wypróbuję generator listy źródeł po utworzeniu kopii zapasowej plików, ale naprawdę zajmie to trochę czasu. Mój laptop wciąż jest na dysku twardym, więc nie jest jeszcze tak szybki. Dodałem moją source.list do powyższej wiadomości.
Odi1215
Wystarczy wykonać kopię zapasową tylko jednego pliku o nazwie sources.list.
con-f-use
OK, zrobi. Więc spróbuję generator listy źródeł?
Odi1215
Pozytywny. To jest tak.
con-f-use
Wpisałem sudo więcej /etc/apt/sources.list, ale nic się nie stało.
Odi1215
5

Spróbuj edytować sources.listplik, upuszczając sudo gedit /etc/apt/sources.listterminal (możesz poprosić o hasło), po czym będziesz mieć opcje włączenia „Numerów linii” w menu Edycja / Preferencje gEdit i klikając pole wyboru „Wyświetl numery linii”, następnie ręcznie przejdź do wiersza z błędem, np. 91 lub używając „Wyszukaj / Idź do wiersza” (Ctrl + I załatwia sprawę).

wprowadź opis zdjęcia tutaj

Na początku wiersza 91 upuść dwa symbole # ( ##), aby skomentować ten wiersz i w ten sposób usuń go z procesu aktualizacji (możesz również usunąć ten wiersz na własne ryzyko, sugeruję utworzenie kopii zapasowej).

Po zakończeniu zapisz plik i zamknij go. Następnie otwórz terminal i uruchom sudo apt-get updatei sprawdź, czy błąd nadal się pojawia. Jeśli nie, spróbuj otworzyć menedżera aktualizacji.

W jakiś sposób wydaje się, że tekst w wierszu 91 sources.listpliku jest uszkodzony lub występuje jakiś błąd, co oznacza, że ​​niektóre oprogramowanie nie może zostać zainstalowane / zaktualizowane / zaktualizowane.

Komentując / usuwając błędną linię, oprogramowanie nie zostanie zainstalowane (jeśli jeszcze nie) lub nie zostanie zaktualizowane / uaktualnione, jeśli tego właśnie spróbujesz. Z których sugeruję sprawdzić, skąd pochodzi ta linia (które oprogramowanie tego wymaga) i wprowadzić odpowiednie modyfikacje, aby wszystko działało poprawnie.

Geppettvs D'Constanzo
źródło
4

Jeśli napotkasz jakikolwiek zniekształcony błąd linii, jak poniżej, zdecydowanie zalecam skomentowanie ( dodanie #przed linią ) linii zamiast usuwania jej w /etc/apt/sources.listpliku.

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

Z powodu powyższego błędu numer wiersza 91w /etc/apt/sources.listpliku jest uszkodzony. Aby skomentować linię 91, musisz uruchomić poniższe polecenie na terminalu.

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

91w powyższym kodzie reprezentuje numer linii. Zamień cyfrę 91 w powyższym kodzie na swój, jeśli wystąpił błąd zniekształconej linii.

W niektórych przypadkach nieprawidłowo sformatowany błąd linii wystąpi również w pliku listy, który faktycznie był obecny w /etc/apt/sources.list.dkatalogu. Na przykład,

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

W takim przypadku zdecydowanie zalecamy usunięcie google.listpliku przez uruchomienie, sudo rm /etc/apt/sources.list.d/google.lista następnie ponowne dodanie odpowiedniego PPA.

Na koniec zaktualizuj wszystkie repozytoria, uruchamiając sudo apt-get updatepolecenie na terminalu. Teraz błąd nie pojawi się.

Avinash Raj
źródło
3

Musisz usunąć ostatni wiersz tego pliku (oczywiście nie sam plik):

 /etc/apt/sources.list

Twój sources.listplik musi wyglądać mniej więcej tak:

# /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

Oczywiście zastąpienie sources.listpliku tym tekstem może być bardzo złe, szczególnie jeśli wcześniej wyglądało inaczej. Kluczową kwestią jest to, że każda linia zaczyna się od deblub deb-src(z wyjątkiem komentarzy, które zaczynają się od #).

Królowa Maliki
źródło
1
@Malika Witam, cieszę się, że to rozwiązało problem. Ale spróbuj odpowiedzieć na pytania nie tylko dla pytającego, ale także dla osób, które Google to pytanie i mają niewielkie różnice w problemie pytającego. To prawdopodobnie wymaga nieco więcej wyjaśnień, aby była to dobra „ogólna” odpowiedź. :)
Jjed
@JacobJohanEdwards Nie mogę się z tobą zgodzić, ponieważ tak naprawdę nie możemy pomóc tym, którzy wykonują polecenia przed przeczytaniem pytania, IMO
Anwar 1'12
2
@Anwar Moim zdaniem odpowiadający odpowiada za (a) nie odpowiadanie w sposób, który pomaga tylko pierwotnemu pytającemu [który jest zbyt zlokalizowany], (b) nie ostrzega odpowiednio przed potencjalnymi skutkami ubocznymi Komenda. Zastrzeżenie pomaga.
Jjed
1

Otwórz terminal za pomocą CTRL+ Alt+ Ti wykonaj poniższą komendę, aby usunąć linię 6, która nie jest poprawną formą linii źródłowej repozytorium, a tym samym może dać ci błąd dotyczący zniekształconej linii.

OSTRZEŻENIE: Nie wykonuj tego polecenia bez uprzedniego przeczytania pytania, to polecenie spowoduje usunięcie wiersza 68 /etc/apt/sources.listpliku. Sprawdź, czy twój problem jest podobny, a nawet jeśli jest, zastąp 68numerem wiersza, który chcesz usunąć .

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

To polecenie usunie wiersz za pomocą sedw miejscu. Tworzy kopię zapasową o nazwie /etc/apt/sources.list.old. Jeśli nie chcesz kopii zapasowej, możesz użyć zwykłego -izamiast -i.old.

Alternatywnie możesz ręcznie usunąć linię za pomocą Gedit.

  • Naciśnij Alt+ F2i wpisz gksu gedit /etc/apt/sources.list.
    (Jeśli nie masz gksu, możesz użyć sudo -H gedit.)
  • Znajdź uszkodzony /etc/apt/sources.listi usuń go.
  • Zapisz i zamknij Gedit.

Prawidłowa forma wiersza źródła repozytorium:

Prawidłowy format wiersza źródłowego repozytorium to:

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

Na przykład:

  deb http://archive.ubuntu.com/ubuntu precise main
  • Typ: deb jest rodzajem repozytorium, oznacza to, że jest to repozytorium binarne, a nie repozytorium źródłowe, które ma typ deb-scr.
  • Lokalizacja: http://archive.ubuntu.com/ubuntu lokalizacja repozytorium
  • Dist-name: precise to nazwa dystrybucji wersji Ubuntu. dla Ubuntu 12.04 jest to precise11.10oneiric

  • Składnik: main wskazuje składnik repozytorium. Repozytorium Ubuntu jest podzielone na cztery części.

    1. Główny - który zawiera bezpłatne i otwarte oprogramowanie, oficjalnie obsługiwane
    2. Wszechświat - te oprogramowanie nie jest obsługiwane przez Canonical, ale są utrzymywane przez społeczność.
    3. Ograniczone - te programy są obsługiwane przez Canonical, ale nie są darmowe. Są one obsługiwane w celu zapewnienia niezbędnych sterowników
    4. Multiverse - są to również niewolne oprogramowanie, które nie są obsługiwane przez Canonical.

Zobacz tę stronę, aby uzyskać więcej informacji.

Teraz możesz zrozumieć, że /etc/apt/sources.listnie jest to linia źródłowa repozytorium i dlatego apt-getnarzekasz na to.


Anwar
źródło
1
Cześć, Anwar, to dobra odpowiedź, ale bardzo ryzykujesz, że po prostu masz sudo sedna górze polecenie. Wiele osób z tym samym problemem (ale nieco odmiennymi okolicznościami) zobaczy tę odpowiedź i niechętnie ją uruchomi i potencjalnie zniszczy ich sources.listnie do naprawienia. W takim przypadku może być bardziej ogólne podejście (z edytorem tekstu).
Jjed