Comment puis-je supprimer une ligne malformée de mon sources.list?

68

J'ai désinstallé et réinstallé le Centre de logiciel Ubuntu conformément aux informations que j'ai trouvées dans un fil de discussion similaire et j'ai obtenu la même réponse concernant la ligne 91 ou quelque chose du genre.

J'ai juste essayé de télécharger une capture d'écran, mais comme je suis nouvelle, cela ne me le permet pas. Je ne peux pas non plus comprendre comment couper et coller quoi que ce soit, je dois donc taper à la main ce que l'écran d'erreur dit, à la fois lorsque j'essaie d'ouvrir le centre logiciel et que rien ne se passe, lorsque je tente d'entrer des commandes dans le terminal pour désinstaller, réinstaller , tout ce que je reçois le même suivant:

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.

Comment signaler des bugs? Que peut-on faire à ce sujet? J'ai cherché et tout ce que tout le monde dit de faire me ramène au même message d'erreur de ligne.

Je ne sais donc pas comment accéder à la ligne 91 de la liste des sources; pour vous dire ce que ça dit. Désolé, je suis vraiment nouveau dans ce domaine. C’est ce dont j’ai besoin, c’est de trouver un moyen d’y arriver et d’y remédier. Je voudrais vraiment ne pas avoir à re-partitionner mon disque dur et à recommencer à zéro, alors je suis vraiment impatient de résoudre ce problème. Je dois pouvoir installer un nouveau logiciel.

éminencejae
la source
8
Pouvez-vous ajouter le contenu de vos /etc/apt/sources.listentre les lignes 67 et 69 ???
Bruno Pereira
2
Modifiez votre question pour inclure le résultat de la commande cat /etc/apt/sources.list. Et non, vous n'avez pas besoin de tout effacer. C'est un problème très facile (d' après mon expérience )
Anwar
Vous n'avez pas besoin de points de rep pour publier le résultat. Toutefois, vous devez formater la sortie sous forme de code, sinon vous ne pourrez pas poster la sortie car vous ne disposez pas de suffisamment de points de vente pour publier plusieurs liens. Modifiez la question et collez la sortie, puis mettez en surbrillance la sortie, puis appuyez sur CTRL + K pour la formater en tant que code, puis enregistrez les modifications.
mardi

Réponses:

55

Certaines lignes sont cassées dans votre sources.listfichier (ou dans un autre *.listfichier sources.list.d/).

Editez le fichier mentionné dans l'erreur pour corriger les lignes brisées.

  1. Pour ce faire, exécutez cette commande (appuyez sur Ctrl+ Alt+ Tpour ouvrir un terminal):

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

    Ou, au lieu de Gedit (que tous les systèmes Ubuntu ne possèdent pas), vous pouvez préférer ouvrir le fichier dans un éditeur de texte basé sur un terminal:

    sudoedit /etc/apt/sources.list
    

    Si nécessaire, remplacez-le /etc/apt/sources.listpar un autre nom de fichier, c'est-à-dire le chemin d'accès à un fichier à l'intérieur /etc/apt/sources.list.d/.

  2. Recherchez les lignes dont le format est incorrect (reportez-vous à l'erreur pour un numéro de ligne, puis cherchez autour de ce point). Voici des exemples de lignes correctement formatées:

    # 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 distributionet les composants seront différents. Il ne doit pas nécessairement avoir 3 composants.

    Tout ce qui ne correspond pas à ce format est incorrect.

  3. Enregistrez le fichier et quittez l'éditeur de texte. Puis exécutez cette commande dans une fenêtre de terminal:

    sudo apt-get update
    

En supposant qu'il n'y ait pas d'erreur, le problème est maintenant résolu. Vous devriez pouvoir exécuter le Centre de logiciel.

Cependant, bien que certains problèmes avec le Centre logiciel puissent être résolus en réinstallant le software-centerpackage, la plupart ne le peuvent pas. Il est donc possible que votre problème d' origine persiste. Si tel est le cas, vous pouvez poster une nouvelle question pour obtenir de l'aide.

Eliah Kagan
la source
Je pense que parfois, pour les distributions basées sur Debian, vous avez besoin ./de la fin de la ligne, comme dans cet exemple
user10089632
27

Méthode rapide

Une solution de contournement à ce problème peut être de créer l' sources.listentrée à partir de zéro.

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
  • Copiez le contenu ci-dessus (en gris) et ouvrez le sources.listfichier en tant que root.

    Taper sudo -H gedit /etc/apt/sources.listceci dans un terminal et frapper Enterfera l'affaire.

  • Ensuite, collez le contenu copié dans la sources.listnote que vous devrez probablement remplacer precisepar le nom de code représentant votre version d'Ubuntu, par exemple trustypour 14.04. Puis enregistrez et fermez gedit.

  • Ensuite sudo apt-get update, vous verrez que la liste de référentiels est mise à jour.

Explication: Nous remplaçons ici complètement le contenu par un autre fichier sources.list par une entrée de référentiel du serveur principal. Si vous souhaitez utiliser votre serveur local pour sources.listvoir la méthode ci-dessous.

Méthode recommandée

Accédez au site du générateur de liste de sources Ubuntu .

  • Sélectionnez votre pays.
  • Sélectionnez les branches de votre choix, telles que Main, Restricted, Multiverse, Univers.
  • Sélectionnez la liste de mise à jour souhaitée, -
  • Sélectionnez une liste de référentiels tiers si vous le souhaitez.
  • Cliquez sur Générer la liste au bas de la page pour obtenir une liste avec les référentiels.
  • Copiez cette liste et remplacez-la par le sources.listfichier que vous avez.

Vous avez terminé. (J'espère que cela aidera.)

Anwar
la source
5
Etrange que cela n'ait pas été accepté !! Une solution rapide, commentez la ligne problématique en /etc/apt/sources.listajoutant ##comme premiers caractères de la ligne. Alors essaie sudo apt-get update.
Noble P. Abraham
3
Peut-être que cela n’a pas été accepté car l’utilisateur peut avoir d’autres référentiels activés et il les perdrait s’il le faisait. Par exemple, la plupart des utilisateurs de VirtualBox l'obtiennent du dépôt Oracle. De plus, Oracle utilise différents noms de paquet dans ces dépôts que Ubuntu dans leurs noms. Par conséquent, si j'installais VirtualBox avec le référentiel d'Oracle et suivais ce guide, je resterais assis dans la même version de VirtualBox tout le temps et je n'aurais jamais de mise à jour. Jamais.
John Scott
@ FuzzyToothpaste, ils ne les perdront pas s'ils le faisaient. Il supprime uniquement les entrées en double. Votre exemple de scénario n'a rien à voir avec ce problème
Anwar
Lorsque vous utilisez le site du générateur de liste source Ubuntu pour générer un nouveau fichier sources.list, n'oubliez pas de mettre à jour les clés GPG. Sinon, le problème peut persister
Tushar Goswami
6

Comme vous pouvez le constater, il est indiqué que votre fichier sources.list contient une mauvaise entrée. Cette mauvaise entrée n'a pas pu être analysée. Cette erreur n'est pas liée au Centre logiciel en tant que tel, mais principalement à apt (Le gestionnaire de paquets)

Le moyen de résoudre ce problème serait de corriger l' 91entrée de ligne mal formée .

Si vous ne comprenez pas ce qui ne va pas avec la ligne 91, postez la ligne 91 et je vous aiderai.

Manish Sinha
la source
6

Veuillez coller le fichier /etc/apt/sources.listafin que nous puissions résoudre ce problème pour vous. Voir cette réponse du didacticiel pour savoir comment faire cela:

Comment puis-je facilement partager le résultat d'une commande ou d'un fichier texte avec d'autres?


Cela peut parfois être une solution très simple, mais vous devez d' sources.list abord effectuer une sauvegarde car il s'agit d'un fichier critique.

  1. Ouvrez le terminal avec Ctrl+ Alt+ T.
  2. Type / coller: sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup(cela crée une copie de sauvegarde)
  3. sudo sed -i -e '68d' /etc/apt/sources.list (cela supprime la ligne problématique)
  4. sudo apt-get update (ceci met à jour la base de données avec le fichier, espérons-résolu)

Si aucune erreur ne s'affiche lorsque vous essayez l'étape 4, le problème est résolu si tout va bien. Vous pouvez quitter le terminal et revenir à Software Center / Update Manager et cela devrait fonctionner.

Si le problème persiste, vous pouvez restaurer le fichier d'origine à partir du terminal avec sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list. Dans ce cas, veuillez coller les lignes problématiques, voire le fichier entier, dans un pastebin pour que nous puissions aider davantage.

ish
la source
3
Supprimer la ligne incriminée n'est peut-être pas une bonne idée (mais félicitez-vous de conseiller de sauvegarder les choses avant de le faire). Et si c'est un référentiel dont l'utilisateur a besoin? De plus, si une longue ligne était divisée en deux lignes, vous aurez deux lignes mal formées (et la procédure doit être répétée). man sources.lista une section avec des exemples et il peut être utile de demander à l'utilisateur de comparer ses lignes avec les exemples, peut-être qu'il peut déterminer ce qui ne va pas et le corriger lui-même. Personnellement, j'attendrais qu'il publie son fichier sources.list.
roadmr
@roadmr: Merci, je suis tout à fait d'accord avec tous les scénarios que vous proposez. J'ai juste senti que les débutants ne savaient même peut-être pas comment poster un fichier, encore moins des lignes spécifiques de ce fichier, à moins de savoir comment. Cela m'a inspiré pour écrire cette auto-QA-howto :-)
ish
@roadmr Je pense que vous obtiendrez un message d'erreur à propos de deux lignes malformées si une longue ligne était scindée en deux.
Mchid
Notez que si -i.backupest passé à sedau lieu de juste -ialors sedfera le fichier de sauvegarde lui-même.
Eliah Kagan
5

Le fichier /etc/apt/sources.listcontient les URL des serveurs Web et l'emplacement d'autres sources (par exemple, des CD) à partir desquelles vous récupérez votre logiciel et vos mises à jour. En gros, cela indique à Ubuntu où chercher le nouveau logiciel et les mises à jour des programmes déjà installés. Le message d'erreur que vous avez reçu signifie que le fichier a été compromis d'une manière ou d'une autre. Sans connaître le contenu de votre fichier, il est difficile de savoir ce qui ne va pas avec. Donc, vous devriez poster le résultat de sudo more /etc/apt/sources.listpour que nous puissions vous aider mieux.

Si le fichier est irrécupérable, vous pouvez utiliser le générateur de liste source Ubuntu pour en générer un sources.listnouveau. Mais vous devriez sauvegarder votre ancien au préalable. Cela entraînera également la perte de toutes les modifications apportées à vos sources de logiciels, par exemple dans Sofware Center.

La meilleure façon de résoudre ce problème est de nous laisser voir ce qui ne va pas avec votre sources.list

Modifier après avoir posté votre sources.list:

Je crois que le fichier que vous avez posté devrait ressembler à ceci (notez les dernières lignes et les manquantes /etc/apt/sources.listà la fin):

# /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
embrouiller
la source
J'essaierai le générateur de liste source après avoir sauvegardé mes fichiers, mais cela prendrait vraiment un certain temps. Mon ordinateur portable est toujours sur le disque dur, ce n'est donc pas si rapide. J'ai ajouté mon source.list au message ci-dessus.
Odi1215
Il suffit de sauvegarder uniquement le fichier appelé sources.list.
con-f-use
Ok, va faire. Ensuite, je vais essayer le générateur de liste source?
Odi1215
Positif. C'est un oui.
con-f-use
J'ai tapé dans sudo plus /etc/apt/sources.list mais rien ne s'est passé.
Odi1215
5

Essayez d’éditer votre sources.listfichier en déposant sudo gedit /etc/apt/sources.listun terminal (votre mot de passe peut être demandé), après quoi vous aurez la possibilité d’activer «Numéros de ligne» dans le menu Édition / Préférences de gEdit et en cochant la case «Afficher les numéros de ligne», puis allez manuellement à la ligne dans votre erreur, par exemple 91 ou en utilisant "Rechercher / Aller à la ligne" (Ctrl + I fait le tour)

entrez la description de l'image ici

Au début de la ligne 91, déposez deux # symboles ( ##) pour commenter cette ligne et, ainsi, supprimez-la du processus de mise à jour (vous pouvez également supprimer cette ligne à vos risques et périls, je vous suggère une sauvegarde).

Lorsque vous avez terminé, enregistrez le fichier et fermez-le. Puis ouvrez un terminal et lancez-vous sudo apt-get updatepour voir si l'erreur persiste. Sinon, ouvrez votre gestionnaire de mise à jour.

D'une manière ou d'une autre, il semble que le texte de la ligne 91 de votre sources.listfichier soit corrompu ou qu'il y ait une sorte d'erreur, ce qui signifie que certains logiciels ne peuvent pas être installés / mis à jour / mis à niveau.

En commentant / supprimant la ligne erronée, le logiciel ne sera pas installé (si ce n'est déjà fait) ou ne sera pas mis à jour / mis à niveau si c'est ce que vous essayez. Dont je vous suggère de vérifier d'où vient cette ligne (quel logiciel l'exige) et de faire les modifications nécessaires pour que tout fonctionne correctement.

Geppettvs D'Constanzo
la source
4

Si vous rencontrez une erreur de ligne mal formée comme ci-dessous, je vous recommande fortement de commenter (en ajoutant #avant la ligne ) la ligne plutôt que de la supprimer dans un /etc/apt/sources.listfichier.

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

De l'erreur ci-dessus, le numéro de ligne 91dans le /etc/apt/sources.listfichier est corrompu. Pour commenter la ligne numéro 91, vous devez exécuter la commande ci-dessous sur le terminal.

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

91dans le code ci-dessus représente le numéro de ligne. Remplacez le numéro 91 dans le code ci-dessus par le votre si vous avez une erreur de ligne mal formée.

Dans certains cas, une erreur de ligne mal formée se produira également dans un fichier de liste présent dans le /etc/apt/sources.list.drépertoire. Par exemple,

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

Dans ce cas, je vous recommande fortement de supprimer le google.listfichier en cours d'exécution sudo rm /etc/apt/sources.list.d/google.list, puis d'ajouter à nouveau le PPA correspondant.

Enfin, mettez à jour tous les référentiels en exécutant la sudo apt-get updatecommande sur le terminal. Maintenant l'erreur n'apparaîtra pas.

Avinash Raj
la source
3

Vous devez supprimer la dernière ligne de ce fichier (pas le fichier lui-même, bien sûr):

 /etc/apt/sources.list

Votre sources.listfichier doit ressembler à quelque chose comme ça:

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

Bien sûr, le simple fait de remplacer votre sources.listfichier par ce texte peut être une très mauvaise chose, surtout si cela semblait très différent auparavant. Le point clé est que chaque ligne commence par debou deb-src(à l'exception des commentaires, qui commencent par #).

Malika Queen
la source
1
@ Malika Bonjour, je suis heureux que cela a résolu le problème. Mais s'il vous plaît, essayez de répondre aux questions non seulement pour le demandeur, mais également pour les personnes qui Google pour cette question et ont de légères variations du problème du demandeur. Cela nécessite probablement un peu plus d'explications pour en faire une bonne réponse "générale". :)
Jjed
@JacobJohanEdwards Je ne peux pas être d'accord avec vous, car nous ne pouvons vraiment pas aider les personnes qui exécutent des commandes avant de lire la question, IMO
Anwar
2
@Anwar À mon avis, il est de la responsabilité du répondant de (a) ne pas répondre d'une manière qui aide uniquement le demandeur d'origine [qui est trop localisé], (b) ne met pas en garde de manière appropriée les effets secondaires potentiels d'un commander. Un disclaimer aide.
Jjed
1

Ouvrez un terminal à l'aide de CTRL+ Alt+ Tet exécutez la commande ci-dessous pour supprimer la ligne 6, qui n'est pas la forme correcte de la ligne source du référentiel, ce qui peut vous donner une erreur concernant la ligne mal formée.

AVERTISSEMENT: N'exécutez pas cette commande sans lire la question au préalable, cette commande supprimera la ligne 68 du /etc/apt/sources.listfichier. Vérifiez si votre problème est similaire et, même si c'est le cas, remplacez-le 68par le numéro de la ligne à supprimer .

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

Cette commande supprimera la ligne utilisant sedin place. Il fait une sauvegarde appelée /etc/apt/sources.list.old. Si vous ne voulez pas la sauvegarde, vous pouvez utiliser brut -iau lieu de -i.old.

Alternativement, vous pouvez supprimer manuellement la ligne avec Gedit.

  • Appuyez sur Alt+ F2et tapez gksu gedit /etc/apt/sources.list.
    (Si vous ne possédez pas, gksuvous pouvez utiliser sudo -H gedit.)
  • Trouvez le corrompu /etc/apt/sources.listet retirez-le.
  • Enregistrez et quittez Gedit.

Forme correcte de la ligne source du référentiel:

Le format correct de la ligne source du référentiel est le suivant:

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

Par exemple:

  deb http://archive.ubuntu.com/ubuntu precise main
  • Type: deb correspond au type de référentiel, il indique qu'il s'agit d'un référentiel binaire, et non d'un référentiel source, de type deb-scr.
  • Location: http://archive.ubuntu.com/ubuntu emplacement du référentiel
  • Dist-name: precise est le nom de la distribution de la version Ubuntu. pour Ubuntu 12.04, il est precise, 11.10 estoneiric

  • Composant: main indique le composant du référentiel. Le référentiel Ubuntu est divisé en quatre parties.

    1. Main - Qui contient un logiciel libre et open source, officiellement pris en charge
    2. Univers - Ces logiciels ne sont pas supportés par Canonical, mais ils sont maintenus par la communauté.
    3. Restricted - Ces logiciels sont pris en charge par Canonical mais ne sont pas gratuits. Ceux-ci sont pris en charge pour fournir certains pilotes essentiels
    4. Multiverse - Il s’agit également de logiciels non libres, non pris en charge par Canonical.

Voir cette page pour plus d'informations.

Vous pouvez maintenant comprendre que ce /etc/apt/sources.listn'est pas une ligne source de référentiel et donc vous en apt-getplaindre.


Anwar
la source
1
Bonjour Anwar, c’est une bonne réponse, mais c’est très risqué d’avoir une sudo sedcommande en haut. Beaucoup de gens avec le même problème (mais dans des circonstances légèrement différentes) verront cette réponse et s’en serviront, bon gré mal gré, et risqueront d’être détruits sources.list. Dans ce cas, une approche plus générale (avec un éditeur de texte) pourrait être appropriée.
Jjed