Como removo uma linha malformada do meu sources.list?

68

Desinstalei e reinstalei o Ubuntu Software Center conforme as informações que encontrei em um tópico semelhante e obtive a mesma resposta sobre a linha 91 ou algo parecido.

Eu apenas tentei fazer upload de uma captura de tela, mas como sou novo, não me permitirá. Também não consigo descobrir como recortar e colar nada, então tenho que digitar manualmente o que a tela de erro diz, tanto quando tento abrir o centro de software quanto nada acontece, quando tento inserir comandos no terminal para desinstalar, reinstalar , qualquer que seja o seguinte:

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.

Como relato erros? O que pode ser feito sobre isso. Eu pesquisei e tudo o que todos dizem fazer me leva de volta à mesma mensagem de erro de linha.

Então, não sei como chegar à linha 91 na lista de fontes; para lhe dizer o que diz. Desculpe, sou muito novo nisso. É disso que preciso é descobrir como chegar lá e consertar o que diz. Eu realmente gostaria de NÃO ter que re-particionar meu disco rígido e começar do zero, por isso estou realmente ansioso para resolver esse problema. Eu preciso ser capaz de instalar um novo software.

eminencejae
fonte
8
Você pode adicionar o conteúdo do seu /etc/apt/sources.listentre as linhas 67 e 69 ???
Bruno Pereira
2
Edite sua pergunta para incluir a saída do comando cat /etc/apt/sources.list. E não, você não precisa acabar com tudo. É muito fácil problema ( da minha experiência )
Anwar
Você não precisa de pontos de repetição para postar a saída. No entanto, você precisa formatar a saída como código ou isso não permitirá que você publique a saída, porque você não possui pontos de repetição suficientes para postar vários links. Edite a pergunta e cole a saída e destaque a saída e pressione CTRL + K para formatar a saída como código e salve as alterações.
mchid 6/02

Respostas:

55

Algumas linhas estão quebradas no seu sources.listarquivo (ou em outro *.listarquivo sources.list.d/).

Edite o arquivo mencionado no erro para corrigir as linhas quebradas.

  1. Para fazer isso, execute este comando (pressione Ctrl+ Alt+ Tpara abrir um terminal):

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

    Ou, em vez do Gedit (que nem todos os sistemas Ubuntu possuem), você pode preferir abrir o arquivo em um editor de texto baseado em terminal:

    sudoedit /etc/apt/sources.list
    

    Se necessário, substitua /etc/apt/sources.listpor outro nome de arquivo, ou seja, o caminho para algum arquivo interno /etc/apt/sources.list.d/.

  2. Encontre as linhas que estão formatadas incorretamente (consulte o erro para obter um número de linha e, em seguida, verifique esse ponto). Estes são exemplos de linhas formatadas corretamente:

    # 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
    

    O URL distributione os componentes serão diferentes. Não precisa necessariamente ter 3 componentes.

    Tudo o que não se encaixa nesse formato está incorreto.

  3. Salve o arquivo e feche o editor de texto. Em seguida, execute este comando em uma janela do Terminal:

    sudo apt-get update
    

Supondo que não haja erros, o problema está resolvido. Você deve conseguir executar o Sofware Center.

No entanto, enquanto alguns problemas com o Centro de Software podem ser resolvidos com a reinstalação do software-centerpacote, a maioria não pode, portanto é possível que o problema original permaneça. Se for esse o caso, você pode postar uma nova pergunta para obter ajuda.

Eliah Kagan
fonte
Eu acho que às vezes para distros baseadas no Debian que você precisa ./no final da linha como neste exemplo
user10089632
27

Método Rápido

Uma solução alternativa para esse problema pode estar criando a sources.listentrada do 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
  • Copie o conteúdo acima (na caixa cinza) e abra o sources.listarquivo como raiz.

    Digitar sudo -H gedit /etc/apt/sources.listisso em um terminal e pressionar Enterfará o trabalho.

  • Em seguida, cole o conteúdo copiado na sources.list- nota que você provavelmente precisará substituir precisepelo codinome que representa sua versão do Ubuntu - por exemplo, trustypara 14.04. Salve e feche o gedit.

  • Então faça sudo apt-get updatee você verá que a lista de repositórios é atualizada.

Explicação: Aqui estamos substituindo completamente o conteúdo por outro arquivo sources.list pela entrada do repositório do Servidor Principal. Se você deseja usar o servidor local para sources.listver o método abaixo.

Método recomendado

Vá para o site gerador de lista de fontes do Ubuntu .

  • Escolha o seu país.
  • Selecione os ramos desejados, como Principal, Restrito, Multiverso, Universo.
  • Selecione a lista de atualização desejada, -
  • Selecione qualquer lista de repositórios de terceiros, se desejar.
  • Clique em Gerar lista na parte inferior da página, você receberá uma lista com repositórios.
  • Copie essa lista e substitua pelo sources.listarquivo que você possui.

Você terminou. (Espero que isso ajude.)

Anwar
fonte
5
Estranho que isso não foi aceito !! Uma solução rápida, comente a linha problemática /etc/apt/sources.listadicionando ##como primeiros caracteres na linha. Então tente sudo apt-get update.
688 Noble P. Abraham
3
Talvez não tenha sido aceito porque o usuário pode ter outros repositórios ativados e os perderia se fizesse isso. Por exemplo, a maioria dos usuários do VirtualBox o obtém do repo da Oracle. Além disso, a Oracle usa nomes de pacotes diferentes nos repositórios do que o Ubuntu deles. Portanto, se eu instalasse o VirtualBox com o repo da Oracle e seguisse este guia, ficaria sentado na mesma versão do VirtualBox o tempo todo e nunca obteria uma atualização. Nunca.
John Scott
@FuzzyToothpaste eles não os perderão se fizerem isso. Ele remove apenas as entradas duplicadas. Seu exemplo de cenário não tem nada a ver com este problema
Anwar
Ao usar o site gerador de lista de fontes do Ubuntu para gerar novo arquivo sources.list, não se esqueça de atualizar as chaves GPG. Caso contrário problema pode persistir
Tushar Goswami
6

Como você pode ver no erro, ele diz que seu arquivo sources.list tem uma entrada incorreta. Não foi possível analisar esta entrada incorreta. Este erro não está relacionado ao Software Center como tal, mas principalmente ao apt (O gerenciador de pacotes)

A maneira de resolver isso seria corrigir a 91entrada de linha malformada .

Se você não consegue entender o que há de errado com a linha 91, poste a linha 91 e eu o ajudarei

Manish Sinha
fonte
6

Cole o arquivo /etc/apt/sources.listpara que possamos solucionar esse problema para você. Veja esta breve resposta tutorial para saber como fazer isso:

Como posso compartilhar facilmente a saída de um comando ou arquivo de texto com outras pessoas?


Às vezes, isso pode ser uma correção muito fácil, mas você deve fazer o backup sources.list primeiro, pois é um arquivo crítico.

  1. Abra o terminal com Ctrl+ Alt+ T.
  2. Digite / cole: sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup(isso cria uma cópia de backup)
  3. sudo sed -i -e '68d' /etc/apt/sources.list (isso exclui a linha problemática)
  4. sudo apt-get update (isso atualiza o banco de dados com o arquivo corrigido)

Se você não vir nenhum erro ao tentar a etapa 4, espero que o problema seja resolvido. Você pode sair do terminal e voltar ao Software Center / Update Manager e ele deve funcionar.

Se ainda houver algum problema, você poderá restaurar o arquivo original do terminal com sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list. Nesse caso, cole as linhas problemáticas ou mesmo o arquivo inteiro em uma pasta de pasta e, em seguida, podemos ajudar ainda mais.

ish
fonte
3
Excluir a linha incorreta pode não ser uma boa ideia (mas parabéns pelo conselho de fazer backup das coisas antes de fazer isso). E se for um repositório que o usuário precise? Além disso, se uma linha longa foi dividida de alguma forma em duas linhas, você terá duas linhas malformadas (e o procedimento deverá ser repetido). man sources.listpossui uma seção com exemplos e pode ser útil pedir ao usuário para comparar suas linhas com os exemplos; talvez ele possa determinar o que está errado e consertar ele mesmo. Pessoalmente, eu esperaria até que ele publicasse seu arquivo sources.list.
roadmr
@roadmr: Obrigado, concordo totalmente com todos os cenários que você postula. Eu apenas senti que os novatos talvez nem saibam como postar um arquivo, muito menos linhas específicas desse arquivo, a menos que seja informado como. Isso me inspirou a escrever este auto-QA-howto :-)
ish
@roadmr Eu acredito que você receberia uma mensagem de erro sobre duas linhas malformadas se uma linha longa fosse dividida em duas linhas.
Mchid 03/09/2015
Observe que se -i.backupfor passado para em sedvez de apenas -i, sedfará o próprio arquivo de backup.
Eliah Kagan 6/09/17
5

O arquivo /etc/apt/sources.listcontém os URLs dos servidores da Web e o local de outras fontes (por exemplo, cds), a partir do qual você recupera o software e as atualizações. Basicamente, diz ao Ubuntu onde procurar novos softwares e atualizações para programas já instalados. A mensagem de erro recebida significa que, de alguma forma, o arquivo foi comprometido. Sem saber qual é o conteúdo do seu arquivo, é difícil saber exatamente o que há de errado com ele. Portanto, você deve postar a saída de sudo more /etc/apt/sources.listnós para ajudá-lo melhor.

Se o arquivo estiver bagunçado além do reparo, você pode usar o Ubuntu Source List Generator para gerar um sources.listnovo. Mas você deve fazer backup do seu antigo com antecedência. Além disso, isso fará com que você perca todas as alterações feitas nas fontes de software, por exemplo, no Sofware Center.

A melhor maneira de corrigir isso é deixar-nos ver o que há de errado com o seu sources.list

Edite depois de publicar seu sources.list:

Acredito que o arquivo que você postou deve ter a seguinte aparência (observe as últimas linhas e as ausentes /etc/apt/sources.listno final):

# /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
confundir
fonte
Vou tentar o gerador da lista de fontes depois de fazer backup dos meus arquivos, mas isso realmente levaria um tempo. Meu laptop ainda está no disco rígido, por isso não é tão rápido ainda. Eu adicionei meu source.list à mensagem acima.
Odi1215
É suficiente fazer backup apenas do arquivo chamado sources.list.
con-f-use
OK vai fazer. Então eu vou tentar o gerador da lista de fontes?
Odi1215
Positivo. Isso é um sim.
con-f-use
Digitei sudo more /etc/apt/sources.list, mas nada aconteceu.
Odi1215
5

Tente editar seu sources.listarquivo soltando sudo gedit /etc/apt/sources.listum terminal (sua senha pode ser solicitada), após o qual você terá as opções para ativar "Números de linha" no menu Editar / Preferências do gEdit e clicando na caixa de seleção "Exibir números de linha", em seguida, vá manualmente para a Linha com seu erro, por exemplo, 91 ou usando "Pesquisar / Ir para a linha" (Ctrl + I executa o truque).

insira a descrição da imagem aqui

No início da Linha 91, solte dois símbolos # ( ##) para comentar essa linha e, dessa forma, remova-a do processo de atualização (você também pode excluir essa linha por seu próprio risco, sugiro um backup).

Quando terminar, salve o arquivo e feche-o. Em seguida, abra um terminal e execute sudo apt-get updatee veja se o erro ainda aparece. Caso contrário, tente abrir o seu gerenciador de atualizações.

De alguma forma, parece que o texto na Linha 91 do seu sources.listarquivo está corrompido ou há algum tipo de erro, o que significa que alguns softwares não podem ser instalados / atualizados / atualizados.

Ao comentar / remover a linha incorreta, o software não será instalado (se já não estiver) ou não será atualizado / atualizado, se for o que você tentar. Das quais eu sugiro que você verifique de onde vem a linha (que software exige) e faça as modificações necessárias, conforme necessário, para que tudo corra bem.

Geppettvs D'Constanzo
fonte
4

Se você enfrentar algum erro de linha malformado, como abaixo, eu recomendo que você comente ( adicionando #antes da linha ) a linha, em vez de excluí-la no /etc/apt/sources.listarquivo.

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

Pelo erro acima, o número da linha 91no /etc/apt/sources.listarquivo está corrompido. Para comentar a linha número 91, você deve executar o comando abaixo no terminal.

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

91no código acima representa o número da linha. Substitua o número 91 no código acima pelo seu se houver algum erro de linha malformado.

Em alguns casos, erros de linha malformados também ocorrerão em um arquivo de lista que estava realmente presente no /etc/apt/sources.list.ddiretório. Por exemplo,

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

Nesse caso, recomendo fortemente que você exclua o google.listarquivo executando sudo rm /etc/apt/sources.list.d/google.liste adicione o PPA correspondente novamente.

Por fim, atualize todos os repositórios executando o sudo apt-get updatecomando no terminal. Agora o erro não será exibido.

Avinash Raj
fonte
3

Você precisa excluir a última linha deste arquivo (não o arquivo em si, é claro):

 /etc/apt/sources.list

Seu sources.listarquivo deve ter algo parecido com isto:

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

Obviamente, apenas substituir seu sources.listarquivo por esse texto pode ser uma coisa muito ruim, especialmente se antes parecia bem diferente. O ponto principal é que cada linha começa com debou deb-src(exceto para comentários, que começam com #).

Malika Queen
fonte
11
@ Malika Olá, estou feliz que isso resolveu o problema. Mas tente responder a perguntas não apenas para o solicitante, mas também para as pessoas que pesquisam no Google e têm pequenas variações do problema do solicitante. Isso provavelmente precisa de um pouco mais de explicação para torná-la uma boa resposta "geral". :)
Jjed 01/09/12
@JacobJohanEdwards Não posso concordar com você, porque realmente não podemos ajudar as pessoas que executam comandos antes de lerem a pergunta, IMO
Anwar
2
@Anwar Na minha opinião, é responsabilidade do respondente (a) não responder de uma maneira que ajude apenas o solicitante original [que é muito localizado], (b) não avise adequadamente os possíveis efeitos colaterais de um comando. Um aviso ajuda.
Jjed
1

Abra um terminal usando CTRL+ Alt+ Te execute o comando abaixo para remover a linha 6, que não é a forma correta da linha de origem do repositório, assim, dando a você um erro sobre a linha malformada.

AVISO: Não execute este comando sem ler a pergunta primeiro, esse comando excluirá a linha 68 do /etc/apt/sources.listarquivo. Verifique se o seu problema é semelhante e, mesmo que seja, substitua 68pelo número da linha que você precisa excluir .

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

Este comando excluirá a linha usando sedno lugar. Faz um backup chamado /etc/apt/sources.list.old. Se você não deseja o backup, pode usar simples em -ivez de -i.old.

Como alternativa, você pode excluir manualmente a linha com o Gedit.

  • Pressione Alt+ F2e digite gksu gedit /etc/apt/sources.list.
    (Se você não tiver, gksupode usar sudo -H gedit.)
  • Encontre o corrompido /etc/apt/sources.liste remova-o.
  • Salve e saia do Gedit.

Forma correta da linha de origem do repositório:

O formato correto da linha de origem do repositório é:

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

Por exemplo:

  deb http://archive.ubuntu.com/ubuntu precise main
  • Tipo: deb é o tipo de repositório, indica que é um repositório binário, não um repositório de origem, que possui o tipo deb-scr.
  • Localização: http://archive.ubuntu.com/ubuntu localização do repositório
  • Dist-name: precise é o nome da distribuição do Ubuntu. para o Ubuntu 12.04 é precise11.10 éoneiric

  • Componente: main está indicando o componente do repositório. O repositório Ubuntu é dividido em quatro partes.

    1. Principal - que contém software livre e de código aberto, oficialmente suportado
    2. Universo - Esses softwares não são suportados pela Canonical, mas são mantidos pela comunidade.
    3. Restrito - Esses softwares são suportados pela Canonical, mas não são gratuitos. Estes são suportados para fornecer alguns drivers essenciais
    4. Multiverso - Esses também são softwares não-livres e não são suportados pela Canonical.

Veja esta página para mais informações.

Agora você pode entender que /etc/apt/sources.listnão é uma linha de origem do repositório e, portanto, apt-getreclamando disso.


Anwar
fonte
11
Olá, Anwar, esta é uma boa resposta, mas é muito arriscado ter apenas um sudo sedcomando no topo. Muitas pessoas com o mesmo problema (mas com circunstâncias um pouco diferentes) verão essa resposta e a executarão, quer ou não, e potencialmente a destruirão sources.list. Nesse caso, uma abordagem mais geral (com um editor de texto) pode estar em ordem.
Jjed