Come rimuovo una linea non valida dal mio sources.list?


68

Ho disinstallato e reinstallato Ubuntu Software Center secondo le informazioni che ho trovato in un thread simile e ho ottenuto la stessa risposta sulla linea 91 o qualcosa del genere.

Ho appena provato a caricare una schermata ma, dato che sono nuovo, non me lo permette. Inoltre non riesco a capire come tagliare e incollare qualcosa, quindi devo digitare a mano ciò che dice la schermata di errore, sia quando provo ad aprire il centro software e non succede nulla, quando provo a inserire comandi nel terminale per disinstallare, reinstallare , qualunque cosa ottenga la stessa cosa:

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.

Come posso segnalare i bug? Cosa si può fare al riguardo. Ho cercato e tutto ciò che tutti dicono di fare mi riporta allo stesso messaggio di errore di riga.

Quindi, non so come arrivare alla linea 91 nell'elenco delle fonti; per dirti cosa dice. Mi dispiace, sono davvero nuovo a questo. Questo è ciò di cui ho bisogno è scoprire come arrivarci e risolvere ciò che dice. Vorrei davvero NON dover ripartizionare il mio disco rigido e ricominciare da zero, quindi non vedo l'ora di risolvere questo problema. Devo essere in grado di installare un nuovo software.


8
Puoi aggiungere il contenuto della tua /etc/apt/sources.listtra le righe 67 e 69 ???
Bruno Pereira,

2
Modifica la tua domanda per includere l'output del comando cat /etc/apt/sources.list. E no, non è necessario cancellare tutto. È un problema molto semplice ( dalla mia esperienza )
Anwar,

Non hai bisogno di punti rep per pubblicare l'output. Tuttavia, è necessario formattare l'output come codice o non ti consentirà di pubblicare l'output perché non hai abbastanza punti rep per pubblicare più collegamenti. Modifica la domanda e incolla l'output, quindi evidenzia l'output e quindi premi CTRL + K per formattare l'output come codice e quindi salvare le modifiche.
lunedì

Risposte:


55

Alcune righe sono interrotte nel tuo sources.listfile (o in un altro *.listfile in sources.list.d/).

Modifica il file indicato nell'errore per correggere le linee spezzate.

  1. Per fare ciò, eseguire questo comando (premere Ctrl+ Alt+ Tper aprire un Terminale):

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

    Oppure, invece di Gedit (che non tutti i sistemi Ubuntu hanno), potresti preferire aprire il file un editor di testo basato su terminale:

    sudoedit /etc/apt/sources.list
    

    Se necessario, sostituisci /etc/apt/sources.listcon un altro nome file, ovvero il percorso di un file all'interno /etc/apt/sources.list.d/.

  2. Trova le righe che sono formattate in modo errato (fai riferimento all'errore per un numero di riga, quindi guardati attorno in quel punto). Questi sono esempi di righe formattate correttamente:

    # 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
    

    L'URL distributione i componenti saranno diversi. Non deve necessariamente avere 3 componenti.

    Tutto ciò che non si adatta a questo formato non è corretto.

  3. Salvare il file ed uscire dall'editor di testo. Quindi eseguire questo comando in una finestra Terminale:

    sudo apt-get update
    

Supponendo che non vi siano errori, il problema è ora risolto. Dovresti essere in grado di eseguire il Sofware Center.

Tuttavia, mentre alcuni problemi con Software Center possono essere risolti reinstallando il software-centerpacchetto, la maggior parte non può, quindi è possibile che il problema originale rimanga. In tal caso, puoi inviare una nuova domanda per ottenere assistenza.


Penso che a volte per le distribuzioni basate su Debian sia necessario ./alla fine della riga come in questo esempio
user10089632

27

Metodo rapido

Una soluzione alternativa a questo problema può essere la creazione della sources.listvoce da zero.

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
  • Copia il contenuto sopra (nella casella grigia) e apri il sources.listfile come root.

    Digitando sudo -H gedit /etc/apt/sources.listquesto in un terminale e colpire Enterfarà il lavoro.

  • Quindi incolla il contenuto copiato nella sources.list- nota che probabilmente dovrai sostituire precisecon il nome in codice che rappresenta la tua versione di Ubuntu - ad es. trustyPer 14.04. Quindi salva e chiudi gedit.

  • Quindi fai sudo apt-get updatee vedrai che l'elenco dei repository è aggiornato.

Spiegazione: Qui stiamo sostituendo completamente il contenuto con un altro file sources.list con la voce repository dal server principale. Se si desidera utilizzare il server locale per sources.listvedere il metodo seguente.

Metodo raccomandato

Vai al sito del generatore dell'elenco delle fonti di Ubuntu .

  • Seleziona il tuo paese.
  • Seleziona i rami desiderati, come Principale, Limitato, Multiverso, Universo.
  • Seleziona l'elenco di aggiornamenti desiderato, -
  • Selezionare un elenco di repository di terze parti, se lo si desidera.
  • Fai clic su Genera elenco nella parte inferiore della pagina, ti verrà fornito un elenco con repository.
  • Copia l'elenco e sostituiscilo con il sources.listfile che hai.

Hai fatto. (Spero che questo possa aiutare.)


5
Strano che questo non sia stato accettato !! Una soluzione rapida, commenta la riga problematica /etc/apt/sources.listaggiungendo ##come primi caratteri nella riga. Quindi prova sudo apt-get update.
Noble P. Abraham,

3
Forse non è stato accettato perché l'utente potrebbe avere altri repository abilitati e li perderebbero se lo facessero. Ad esempio, la maggior parte degli utenti di VirtualBox lo ottiene dal repository Oracle. Inoltre, Oracle utilizza nomi di pacchetti diversi nei repository rispetto a Ubuntu nei loro repository. Pertanto, se avessi installato VirtualBox con il repository Oracle e avessi seguito questa guida, mi sarei sempre seduto alla stessa versione di VirtualBox e non avrei mai ricevuto un aggiornamento. Mai.
John Scott,

@FuzzyToothpaste non li perderanno se lo facessero. Rimuove solo le voci duplicate. Lo scenario di esempio non ha nulla a che fare con questo problema
Anwar,

Quando si utilizza il sito del generatore di elenchi di sorgenti di Ubuntu per generare un nuovo file sources.list, non dimenticare di aggiornare le chiavi GPG. Altrimenti il ​​problema potrebbe persistere
Tushar Goswami,

6

Come puoi vedere dall'errore, dice che il tuo file sources.list ha una voce errata. Non è stato possibile analizzare questa voce errata. Questo errore non è correlato a Software Center in quanto tale, ma principalmente a che fare con apt (il gestore pacchetti)

Il modo per risolverlo sarebbe correggere l' 91immissione di riga non valida .

Se non riesci a capire cosa c'è che non va nella riga 91, inserisci la riga 91 e ti aiuterò


6

Incolla il file in /etc/apt/sources.listmodo che possiamo risolvere questo problema per te. Guarda questa breve risposta tutorial per come farlo:

Come posso condividere facilmente l'output di un comando o di un file di testo con altri?


A volte può essere una soluzione molto semplice, ma è necessario eseguire sources.listprima il backup poiché si tratta di un file critico.

  1. Apri il terminale con Ctrl+ Alt+ T.
  2. Digita / incolla: sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup(questo crea una copia di backup)
  3. sudo sed -i -e '68d' /etc/apt/sources.list (questo elimina la linea problematica)
  4. sudo apt-get update (questo aggiorna il database con il file che si spera sia stato corretto)

Se non si visualizzano errori durante il passaggio 4, si spera che il problema sia stato risolto. È possibile uscire dal terminale e tornare a Software Center / Update Manager e dovrebbe funzionare.

Se il problema persiste, è possibile ripristinare il file originale dal terminale con sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list. In tal caso, si prega di incollare le righe problematiche o persino l'intero file in un pastebin e quindi possiamo aiutare ulteriormente.


3
Eliminare la linea offensiva potrebbe non essere una buona idea (ma complimenti per il consiglio di eseguire il backup delle cose prima di farlo). Cosa succede se è un repository di cui l'utente ha bisogno? Inoltre, se una linea lunga è stata in qualche modo divisa in due linee, si avranno due linee deformate (e la procedura deve essere ripetuta). man sources.listha una sezione con esempi e può essere utile chiedere all'utente di confrontare le sue righe con gli esempi, forse può determinare cosa c'è che non va e risolverlo da solo. Personalmente aspetterei che pubblichi il suo file sources.list.
Roadmr,

@roadmr: Grazie, sono completamente d'accordo con tutti gli scenari che ritieni positivi. Ho appena sentito che i neofiti potrebbero anche non sapere come pubblicare un file, per non parlare di linee specifiche da quel file, a meno che non venga consigliato. Ciò mi ha ispirato a scrivere questo auto-QA-howto :-)
ish,

@roadmr Credo che otterresti un messaggio di errore su due righe non valide se una riga lunga fosse divisa in due righe.
mchid,

Si noti che se -i.backupviene passato sedinvece che solo -iallora sedverrà creato il file di backup stesso.
Eliah Kagan,

5

Il file /etc/apt/sources.listcontiene gli URL dei server web e la posizione di altre fonti (ad es. Cd), da cui recuperare il software e gli aggiornamenti. Fondamentalmente dice a Ubuntu dove cercare nuovo software e aggiornamenti ai programmi già installati. Il messaggio di errore che ricevi significa che in qualche modo il file è stato compromesso. Senza sapere qual è il contenuto del tuo file, è difficile sapere che cosa c'è di sbagliato in esso. Quindi dovresti pubblicare l'output di sudo more /etc/apt/sources.listper noi per aiutarti meglio.

Se il file è incasinato irreparabilmente, è possibile utilizzare Ubuntu Source List Generator per generare di sources.listnuovo. Ma dovresti prima fare il backup del tuo vecchio . Inoltre, ciò causerà la perdita di tutte le modifiche apportate alle Sorgenti software, ad esempio nel Sofware Center.

Il modo migliore per risolvere questo problema è farci vedere cosa c'è di sbagliato nel tuo sources.list

Modifica dopo aver pubblicato il tuo sources.list:

Credo che il file che hai pubblicato dovrebbe assomigliare a questo (nota l'ultimo alle righe e il mancante /etc/apt/sources.listalla fine):

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

Proverò il generatore dell'elenco di sorgenti dopo aver eseguito il backup dei miei file, ma ci vorrebbe davvero un po '. Il mio laptop è ancora su HDD, quindi non è ancora così veloce. Ho aggiunto il mio source.list al messaggio sopra.
Odi1215

È sufficiente eseguire il backup di un solo file chiamato sources.list.
con-f-use

Va bene, lo farà. Quindi proverò il generatore dell'elenco delle fonti?
Odi1215

Positivo. Questo è un sì.
con-f-use

Ho digitato sudo more /etc/apt/sources.list ma non è successo niente.
Odi1215

5

Prova a modificare il sources.listfile trascinandolo sudo gedit /etc/apt/sources.listin un terminale (potrebbe essere richiesta la password), dopodiché avrai le opzioni per abilitare "Numeri di riga" nel menu Modifica / Preferenze di gEdit e facendo clic sulla casella di controllo "Visualizza numeri di riga", quindi vai manualmente alla riga nel tuo errore, ad esempio 91 o usando "Cerca / Vai alla linea" (Ctrl + I fa il trucco).

inserisci qui la descrizione dell'immagine

All'inizio della Linea 91 rilascia due simboli # ( ##) per commentare quella linea e in questo modo rimuovila dal processo di aggiornamento (puoi anche eliminare quella linea a tuo rischio, ti suggerisco un backup).

Al termine, salva il file e chiudilo. Quindi aprire un terminale ed eseguire sudo apt-get updatee vedere se l'errore persiste. In caso contrario, prova ad aprire il tuo gestore aggiornamenti.

In qualche modo sembra che il testo nella riga 91 del tuo sources.listfile sia danneggiato o che ci sia un qualche tipo di errore, il che significa che alcuni software non possono essere installati / aggiornati / aggiornati.

Commentando / rimuovendo la riga errata il software non verrà installato (se non già) o non verrà aggiornato / aggiornato se è quello che si prova. Di cui ti suggerisco di controllare da dove proviene quella linea (quale software lo richiede) e fare le opportune modifiche come richiesto per far funzionare tutto bene.


4

Se si verificano errori di riga non validi come di seguito, si consiglia vivamente di commentare ( aggiungendo #prima della riga ) la riga anziché eliminarla nel /etc/apt/sources.listfile.

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

Dall'errore sopra riportato, il numero di riga 91nel /etc/apt/sources.listfile è danneggiato. Per commentare il numero di riga 91, è necessario eseguire il comando seguente sul terminale.

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

91nel codice sopra rappresenta il numero di riga. Sostituisci il numero 91 nel codice sopra con il tuo se hai qualche errore di linea non valido.

In alcuni casi si verificherà anche un errore di riga non corretta in un file elenco che era effettivamente presente all'interno della /etc/apt/sources.list.ddirectory. Per esempio,

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

In questo caso ti consiglio vivamente di eliminare il google.listfile eseguendo sudo rm /etc/apt/sources.list.d/google.liste quindi aggiungere nuovamente il PPA corrispondente.

Infine aggiorna tutti i repository eseguendo il sudo apt-get updatecomando sul terminale. Ora l'errore non verrà visualizzato.


3

Devi eliminare l'ultima riga di questo file (non il file stesso, ovviamente):

 /etc/apt/sources.list

Il tuo sources.listfile deve assomigliare a questo:

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

Ovviamente, semplicemente sostituire il tuo sources.listfile con quel testo potrebbe essere una cosa molto brutta, specialmente se prima sembrava piuttosto diverso. Il punto chiave è che ogni riga inizia con debo deb-src(ad eccezione dei commenti, che iniziano con #).


1
@Malika Ciao, sono contento che questo abbia risolto il problema. Ma per favore prova a rispondere alle domande non solo per il richiedente, ma anche per le persone che Google questa domanda e hanno lievi variazioni del problema del richiedente. Questo probabilmente ha bisogno di qualche spiegazione in più per renderlo una buona risposta "generale". :)
Jjed

@JacobJohanEdwards Non posso essere d'accordo con te, perché non possiamo davvero aiutare quelle persone che eseguono i comandi prima di leggere la domanda, IMO
Anwar

2
@Anwar A mio avviso, è responsabilità del rispondente (a) non rispondere in un modo che aiuti solo il richiedente originale [che è troppo localizzato], (b) non avverte in modo appropriato dei potenziali effetti collaterali di un comando. Un disclaimer aiuta.
Jjed

1

Apri un terminale usando CTRL+ Alt+ Ted esegui il comando seguente per rimuovere la linea 6, che non è la forma corretta della linea sorgente del repository, quindi ti dà un errore sulla linea non valida.

ATTENZIONE: Non eseguire questo comando senza prima leggere la domanda, questo comando eliminerà la riga 68 del /etc/apt/sources.listfile. Verifica se il problema è simile e, anche se lo è, sostituiscilo 68con il numero della riga che devi eliminare .

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

Questo comando eliminerà la linea usando sedsul posto. Fa un backup chiamato /etc/apt/sources.list.old. Se non si desidera il backup, è possibile utilizzare plain -iinvece di -i.old.

In alternativa, puoi eliminare manualmente la linea con Gedit.

  • Premi Alt+ F2e digita gksu gedit /etc/apt/sources.list.
    (Se non lo gksuhai puoi usare sudo -H gedit).
  • Trova il danneggiato /etc/apt/sources.liste rimuoverlo.
  • Salva ed esci da Gedit.

Forma corretta della riga di origine del repository:

Il formato corretto della riga di origine del repository è:

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

Per esempio:

  deb http://archive.ubuntu.com/ubuntu precise main
  • Tipo: deb è il tipo di repository, indica che è un repository binario, non un repository di origine, che ha tipo deb-scr.
  • Posizione: http://archive.ubuntu.com/ubuntu posizione del repository
  • Dist-name: precise è il nome di distribuzione della versione di Ubuntu. per Ubuntu 12.04 lo è precise, 11.10 lo èoneiric

  • Componente: main indica il componente del repository. Il repository Ubuntu è diviso in quattro parti.

    1. Principale : contiene software gratuito e open source, supportato ufficialmente
    2. Universo : questi software non sono supportati da Canonical, ma sono gestiti dalla community.
    3. Limitato : questi software sono supportati da Canonical, ma non sono gratuiti. Questi sono supportati per fornire alcuni driver essenziali
    4. Multiverso - Questi sono anche software non liberi e non supportati da Canonical.

Vedi questa pagina per maggiori informazioni.

Ora puoi capire che /etc/apt/sources.listnon è una linea di origine del repository e quindi ti apt-getlamenti.



1
Ciao Anwar, questa è una buona risposta, ma è molto rischioso avere solo un sudo sedcomando in cima. Molte persone con lo stesso problema (ma circostanze leggermente diverse) vedranno questa risposta e la condurranno volenti o nolenti, e potenzialmente rovineranno la loro sources.listriparazione irreparabile. In questo caso potrebbe essere un approccio più generale (con un editor di testo).
Jjed
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.