Como corrigir "W: Entrada duplicada sources.list"?

190

Continuo recebendo esse aviso sempre que tento executar sudo apt-get update.

W: Duplicate sources.list entry http://archive.ubuntu.com/ubuntu/ precise-updates/main i386 Packages (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_precise-updates_main_binary-i386_Packages)
W: You may want to run apt-get update to correct these problems

Abaixo está a saída do /etc/apt/sources.listarquivo:

deb http://archive.ubuntu.com/ubuntu precise main restricted
deb-src http://archive.ubuntu.com/ubuntu precise main restricted

deb http://archive.ubuntu.com/ubuntu precise-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu precise-updates main restricted

deb http://archive.ubuntu.com/ubuntu precise universe
deb-src http://archive.ubuntu.com/ubuntu precise universe
deb http://archive.ubuntu.com/ubuntu precise-updates universe
deb-src http://archive.ubuntu.com/ubuntu precise-updates universe

deb http://archive.ubuntu.com/ubuntu precise multiverse
deb-src http://archive.ubuntu.com/ubuntu precise multiverse
deb http://archive.ubuntu.com/ubuntu precise-updates multiverse
deb-src http://archive.ubuntu.com/ubuntu precise-updates multiverse

deb http://archive.ubuntu.com/ubuntu precise-security main restricted
deb-src http://archive.ubuntu.com/ubuntu precise-security main restricted
deb http://archive.ubuntu.com/ubuntu precise-security universe
deb-src http://archive.ubuntu.com/ubuntu precise-security universe
deb http://archive.ubuntu.com/ubuntu precise-security multiverse
deb-src http://archive.ubuntu.com/ubuntu precise-security multiverse

Como faço para corrigir isso?

hsinxh
fonte

Respostas:

229

Seu sources.list realmente tem entradas duplicadas.

Primeiro, vamos ver a forma correta de uma linha de repositório ou de origem:

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

<type of repository>  <location>  <dist-name> <components> 

Por exemplo, uma linha de recompra pode ser como esta

  deb http://archive.ubuntu.com/ubuntu precise main

Aqui, isso significa que o repositório é para pacotes binários, hospedados em http://archive.ubuntu.com/ubuntu e esse repositório é para o Ubuntu preciso (12.04) e esse repositório contém o principal (software oficialmente suportado pelo Componente canônico).

  • Tipo: O tipo pode ser debe deb-src. debsignifica um repositório binário em que deb-srcsignifica um repositório de origem

  • Localização: http://archive.ubuntu.com/ubuntu localização do repositório.

  • Dist-name: o nome da distribuição da versão do Ubuntu. Para o Ubuntu 12.04, é precisepara o 11.10 oneiric.
    Você pode visitar o Wiki do Ubuntu para visualizar uma lista atualizada de versões do Ubuntu e seus nomes de código .

  • Componente: Pode ser main, universe, multiversee restricted. Essas palavras indicam o nível de suporte para os pacotes e o status de licenciamento.

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

Observe que você pode adicionar um ou mais componentes em uma linha, para que "principal", "universo", "restrito" e "multiverso" possam estar em uma única linha. Observe também, embora você adicione mais de um componente em uma única linha, o sistema APT os considera como linha separada contendo apenas um componente.

Então, se você sources.listtem uma linha como esta

deb http://archive.ubuntu.com/ubuntu precise universe

Então não pode ter outra linha como a abaixo (que seus arquivos possuem)

deb http://archive.ubuntu.com/ubuntu precise main universe

o que é equivalente a essas duas linhas

deb http://archive.ubuntu.com/ubuntu precise main
deb http://archive.ubuntu.com/ubuntu precise universe

Como você está duplicando o universo duas vezes, haverá um erro para essa duplicata. Um erro será fornecido para cada duplicata encontrada.

Solução:

Depois de analisar o seu sources.listarquivo, descobri que, é um arquivo básico que é fornecido pelo Ubuntu por padrão. Você pode criar um arquivo padrão seguindo o procedimento:

  1. Abra um terminal e primeiro renomeie o sources.listarquivo existente para sources.list.bakarquivo. (podemos removê-lo com segurança, mas cuidado é bom).

     sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
    
  2. Em seguida, abra software-properties-gtkpara criar um novo. Digite o comando abaixo em um terminal ou no prompt de comando do dash pressionando Alt+F2

    software-properties-gtk
    

    Observe que, para o Ubuntu versão 11.10 ou anterior, você precisa usar gksuantes do software-properties-gtkcomando

  3. Depois que a janela é aberta,

    • Selecione todas as quatro categorias na guia Software Ubuntu
    • Selecione a segurança precisa , precisas atualizações e precisas-backports categoria em Updates guia.
    • Selecione Parceiro Canonical e categoria Independente na guia Outro software .

É isso aí. Agora você tem um sources.listarquivo padrão sem erros. Compare este arquivo com o anterior, se desejar.


Atualização para lidar com sources.list.dos arquivos de dir

Às vezes, uma entrada duplicada pode estar em um arquivo no /etc/apt/sources.list.ddiretório, que também é usado pelo APT. Portanto, você deve olhar para esse diretório e ver se há alguma duplicata nesses arquivos. Não é necessário que duplicatas estejam no mesmo arquivo.

Exemplo de caso:

Um usuário recebeu essa mensagem de erro enquanto fazia isso sudo apt-get update.

W: Duplicate sources.list entry http://dl.google.com/linux/chrome/deb/ stable/main amd64 Packages (/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_main_binary-amd64_Packages)
W: Duplicate sources.list entry http://dl.google.com/linux/chrome/deb/ stable/main i386 Packages (/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_main_binary-i386_Packages)
W: You may want to run apt-get update to correct these problems

Mas não havia entrada http://dl.google.comno /etc/apt/sources.listarquivo principal . Observando o /etc/apt/sources.list.d/diretório, encontramos esses arquivos:

saída de ls /etc/apt/sources.list.d/:

aims-sagemath-precise.list
aims-sagemath-precise.list.save
dropbox.list
dropbox.list.save
fossfreedom-packagefixes-precise.list
fossfreedom-packagefixes-precise.list.save
google-chrome.list
google-chrome.list.save
google.list
google.list.save
sagemath-monolithic-precise.list
sagemath-monolithic-precise.list.save

Os arquivos google-chrome.liste google.listeram bons candidatos para conter duplicatas. Portanto, era necessário verificar o conteúdo dos dois arquivos.

Saída de cat /etc/apt/sources.list.d/google-chrome.list:

deb http://dl.google.com/linux/chrome/deb/ stable main  

e de cat /etc/apt/sources.list.d/google.list

deb http://dl.google.com/linux/chrome/deb/ stable main

Portanto, houve uma entrada duplicada nas fontes do Apt. Como google-chrome.listcontém apenas uma única linha apt e também foi listada no google.listarquivo, podemos removê-lo com segurança com o comando

sudo rm /etc/apt/sources.list.d/google-chrome.list

Então o problema foi resolvido.

Anwar
fonte
5
O que eu fiz para ter entradas duplicadas no meu sources.list.d?
Seanny123
@ Seanny123 Isso é difícil de dizer.
Anwar
11
Muito obrigado. Fiquei pensando horas como duplicatas ocorreram. Por fim, você mostrou o sources.list.d
Isura Manchanayake
11
Resposta agradável e completa. Na sua Atualização para lidar com os arquivos do sources.list.d dir, você explica quais são os arquivos / linhas que fornecem as duplicatas. Você poderia explicar da mesma forma quais são os 6 pares de linhas (já que você diz "seu arquivo tem 6 duplicatas lá") no OP que fornece duplicatas?
Sancho.s
11
A dica para ir verificar meu sources.list.d foi o que me ajudou a resolver isso.
Lcarsos #
80

Para o Ubuntu 12.04

Graficamente:

Pressione Alt+ F2e cole software-properties-gtk(ou você pode abrir "Software Center" e depois ir em "Editar"> "Fontes de software"). Vá para a aba "Outro software", escolha a entrada duplicada e pressione o botão "Remover".

insira a descrição da imagem aqui


Se você precisar de uma opção de linha de comando, aqui está:

cat /etc/apt/sources.list | perl -ne '$H{$_}++ or print' > /tmp/sources.list && sudo mv /tmp/sources.list /etc/apt/sources.list  

O comando faz isso:

catlê o arquivo e passa o conteúdo ao perlqual remove as linhas duplicadas. O resultado é salvo >em um arquivo temporário que é movido para substituir o /etc/apt/sources.listarquivo original .

desgua
fonte
2
Como corrigi-lo, sem confusão e com todos os detalhes profundos. Obrigado!
Peter M.
Na verdade, funcionou! Por algum motivo, também não foi possível instalar o git no 12.04. Em vez de remover, verifiquei apenas os "parceiros canônicos" aparentemente duplicados.
Davidkonrad 15/10/14
3
Eu executei o one-liner, mas sudo apt-get updateainda reclama de entradas duplicadas como se nada tivesse mudado. Se isso importa, estou no 12.04 (especificamente, elementar OS Luna).
waldyrious
A caté inútil e impede que você usesudo perl -i
tripleee
24

Quão ruim são as entradas duplicadas no sources.list?

Não sei o quão ruim é, mas não gosto do sudo apt-get update mostrando-me entradas duplicadas.

A propósito, não é tão ruim, está apenas mostrando que você tem entradas duplicadas.

SourcesList

O arquivo sources.list é um fator chave na adição ou atualização de aplicativos para a instalação do Ubuntu. Isso também é usado pelo seu sistema para atualizações do sistema. O arquivo é basicamente o roteiro para o seu sistema saber onde pode baixar programas para instalação ou atualização.

É como a atualização do Windows

Você pode remover entradas duplicadas em algumas etapas fáceis com o Y PPA Manager

 sudo add-apt-repository ppa:webupd8team/y-ppa-manager -y
 sudo apt-get update
 sudo apt-get install y-ppa-manager -y

Abra o formulário y-ppa-manager Dash

Digite sua senha de administrador

insira a descrição da imagem aqui

Clique duas vezes em Avançado

insira a descrição da imagem aqui

Digitalize e remova PPAs duplicados e clique em Ok

insira a descrição da imagem aqui

Levará algum tempo (1 ou 2 minutos) para digitalizar e remover PPAs duplicados

Qasim
fonte
2
No meu caso, o Y PPA continuou dizendo que não foram encontradas duplicatas. Fiz um backup do source.list eo removi e executei o sudo apt-get update para recriar a lista de fontes (ubuntu 12.04). Isso funcionou para mim.
Michel.iamit
11
Trabalhou para mim na Casa da Moeda 17, obrigado cara!
precisa saber é o seguinte
Funcionou para mim no ubuntu 14.04..Obrigado amigo .. :)
Rahul Singh
11
funcionou como um encanto
vector
11
No meu caso, no dia 14.04, ele continua dizendo que não há duplicatas encontradas
Muhammad Omer Aslam
16

O repositório do parceiro é duplicado dentro /etc/apt/sources.liste /etc/apt/sources.list.d/precise-partner.list.

Apenas remova esses arquivos "parceiro preciso", pois o repositório parceiro já está presente sources.list.

sudo rm /etc/apt/sources.list.d/precise-partner.*
Eric Carvalho
fonte
Estou recebendorm: cannot remove '/etc/apt/sources.list.d/precise-partner.*': No such file or directory
Dennis
11
Tente sudo rm /etc/apt/sources.list.d/*partner*. Verifique também o seu /etc/apt/sources.list, procure linhas duplicadas.
Eric Carvalho
Sem sorte, não tenho nenhum arquivo com "partner" no nome desse diretório. E /etc/apt/sources.listnão contém duplicatas de acordo com uniq.
Dennis
10

Faça uma cópia de backup do seu sources.list:

sudo cp /etc/apt/sources.list{,.backup}

Agora remova o original e atualize:

sudo rm /etc/apt/sources.list && sudo apt-get update
wojox
fonte
Como ele pode atualizar sem sources.listarquivo?
Anwar
Repovoará. =)
wojox 04/07/2012
o meu não repovoar
conman253
Reverter para o que você backup
wojox
Como reverto para a lista de backups? a remoção removido um monte de coisa importante ... isso não é totalmente seguro ..
alvas
8

Eu tive o mesmo problema, fontes de software abertas. desmarcada "Parceiros canônicos". O conflito está entre "Parceiros Canonônicos" e "Parceiros Canonônicos Adicionados pelo Centro de Software"

Amjed
fonte
7

Se você não conseguiu descobrir isso no seu source.list, faça o seguinte:

  1. Clique com o botão esquerdo no ícone de configurações (no canto superior esquerdo da tela) e selecione Configurações do sistema.
  2. Clique em Fontes de software e vá para Outro software.
  3. Desmarque também um dos softwares 'Canonical Partners (Código-Fonte) empacotados pela Canonical para seus parceiros' e um dos 'Canonical Partners-software empacotado pela Canonical para os arquivos de seus parceiros' e clique em Fechar para sair.
  4. Pressione simultaneamente as teclas CTRL+ ALT+ Tpara abrir o terminal e digite sudo apt-get update.
all4naija
fonte
Segui suas sugestões, mas ainda estou recebendo esse erro.
hsinxh
Poste aqui a imagem das suas 'Fontes de software' para conhecer o culpado.
all4naija
Poste aqui a imagem do seu 'Outro Software'.
all4naija
6

10.10 e anteriores

Aplicativos> Ubuntu Software Center> Editar> Fontes de Software> Outro Software

OU

Sistema> Administração> Synaptic Packet Manager> Configurações> Repositórios

Janela de configuração de fontes de software

Selecione e remova entradas duplicadas.

Sid
fonte
5

Para Ubuntu 9.10 - 12.04

Existe um aplicativo chamado Y-PPA-Manager que pode fazer isso e muito mais.

Você pode instalá-lo assim em um terminal:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get upgrade
sudo apt-get install y-ppa-manager

Depois disso, basta iniciar o aplicativo e ir para o menu Avançado.

insira a descrição da imagem aqui

Em seguida, selecione "Digitalizar e remover PPAs duplicados" e pressione OK.

insira a descrição da imagem aqui

luz traseira
fonte
É uma ferramenta legal, mas não resolve o problema. Eu fiz essa escolha e depois disso tenho os mesmos avisos.
Nazar_art 25/07
4

Parece que você tem duas linhas idênticas no seu /etc/apt/sources.listarquivo.

Vá para o terminal e digite sudo editor /etc/apt/sources.list, procure por linhas idênticas nesse arquivo e, se você as encontrar, exclua-as. Após concluir, salve e saia e, em seguida, faça sudo apt-get updatee isso deve resolver seu problema.

Se isso não resolver o seu problema, você precisará usar uma abordagem de tentativa e erro. Primeiro, crie um backup do seu sources.listarquivo e, em seguida, no arquivo real, apt-get updateanalise ou exclua cada linha, salvando e -ing após cada linha ter sido comentada ou excluída. Passar por esse arquivo linha por linha comentando linhas diferentes acabará por lhe dizer qual é a linha supérflua. Não se esqueça de descomentar todas as linhas que você comentou se apt-get updateainda mostrar o mesmo prompt, caso contrário você não terá fontes no sources.listarquivo.

Jeff Welling
fonte
4

Eu procurei por essa ferramenta, mas não encontrei nenhuma ...
Então, acabei codificando uma PHP.

Desculpe pelo código-fonte desorganizado e sujo.

chkdup - Captura de tela:

insira a descrição da imagem aqui

Autor

Mubarak Alrashidi (DeaDSouL)

Requisitos:

  1. PHP.
  2. sudo.

Instalação:

  1. Abra o terminal.
  2. Para instalar o PHP se você não tem isso, digite: sudo apt-get install php5 php5-cli.
  3. Faça o download do chkdup .
  4. Extraia o arquivo para onde quiser.
  5. Tipo: sudo sh install.sh.

Desinstalar:

  1. Abra o terminal.
  2. Vá para o caminho em que você extraiu a ferramenta.
  3. Tipo: sudo sh uninstall.sh.

Como usá-lo:

Basta abrir o terminal e digite sudo chkdup.

Perguntas frequentes:

O que o install.sh faz?

  • O instalador moverá o arquivo chkdup.phppara /opt/então criará um link simbólico /usr/bin/.

E o uninstall.sh?

  • O desinstalador removerá os seguintes arquivos:

    1. install.sh
    2. /opt/chkdup.php
    3. /usr/bin/chkdup
    4. em si uninstall.sh

É seguro usar o chkdup?

  • Sim, pois ele faz um backup do sources.list atual antes de tentar fazer qualquer coisa. Mas não sou responsável se algo acontecer. A responsabilidade total será sua.

Licença

Licença Pública Geral GNU

Alma morta
fonte
apenas tentei sair, agradável e simples :-) :-) agradável
bmbaker
3

Você checou ls /etc/apt/sources.list.d/? Talvez você tenha alguns repositórios "extras" lá?

koni_raid
fonte
2

Instale o ubuntu-tweak e remova as entradas duplicadas de lá.

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

texto alternativo

karthick87
fonte
Isso não diz como fazê-lo.
RolandiXor
1

Não, não há uma única linha de comando para localizar e excluir entradas duplicadas no /etc/apt/sources.listarquivo.

Isso ocorre porque as linhas de comando sugeridas, que meramente duplicam a função do uniqcomando interno muito mais simples , funcionarão apenas em um arquivo SORTED e removerão apenas as linhas ADJACENT. Além disso, esses comandos removerão apenas linhas que consistem em uma sequência idêntica de caracteres .

As entradas duplicadas relatadas por apt-get updateconsistirão em entradas de funções duplicadas , como um repositório sendo incluído em suas variantes i386e amd64. A maneira fácil e eficaz de removê-los é observar quais repositórios são relatados como duplicados pelo apt-get update e removê-los através do Software Center . Abra-o e escolha Editar -> Fontes de Software -> Outro Software . Basta procurar as entradas duplicadas e desmarcá-las. (Essa também é uma oportunidade para remover todos os source-coderepositórios, se você não estiver compilando os pacotes).

No entanto, deve-se notar que apt-get updatenão apenas encontra entradas duplicadas via sources.list, mas inclui arquivos de repositório localizados em /var/lib/apt/lists/. Excluir entradas duplicadas de lá removerá temporariamente as apt-get updatemensagens de erro se o Ubuntu achar que precisa delas, pois os arquivos serão reinstalados automaticamente. O fato de apt-get updaterelatar alguns repositórios como duplicados e sugerir que você execute apt-get update-o para repará-los é uma pista de que você realmente não precisa se preocupar com essa mensagem de erro.

Smarteralec
fonte
1

No meu caso, as duplicatas estavam no prerequists-sources.listarquivo. Consegui continuar a atualização executando os seguintes comandos no Terminal:

sudo mv /etc/apt/sources.list.d/prerequists-sources.list /tmp
sudo apt-get update

Em seguida, vá para Update Managere instale as atualizações.

Mathijs Sterk
fonte
Mover para / tmp não é necessário. Renomear a algo que não termina com .listé suficiente
Daniel Alder
1

Bem, resolvi o problema da entrada duplicada renomeando /etc/apt/sources.d(como root) para outra coisa e executando sudo apt-get updatepara restabelecer o diretório e seu conteúdo.

Seann
fonte
1

Passou /etc/apt/sources.listmanualmente sudo nano /etc/apt/sources.liste removeu as duplicatas. Depois apt-get update, o problema foi resolvido.

Anderverhaal
fonte
1

Em /etc/apt/sources.listvocê deve comentar (adicionar #no início da linha) a entrada repositório duplicado e salvar as alterações. Depois dessa repetição sudo apt-get update.

Snorri
fonte
1

Use o gerador de lista de fontes do Ubuntu .

  • Executar sudo -H nautilusno terminal
  • Encontrar /etc/apt/sources.list
  • Clique com o botão direito do mouse e abra o arquivo com um editor de texto (se você clicar nele, abrirá a GUI das fontes de software)
  • Simplesmente copie e cole no sources.liste salve.
  • Saia do terminal e pronto.

O Google parece ter um problema, então eu sugiro deixar isso de fora. Eu fiz isso no Ubuntu 12.10 (versão Studio com a área de trabalho Ubuntu adicionada e o Unity para outra entrada na área de trabalho).

studiofreak
fonte
1

Apenas edite o arquivo /etc/apt/sources.list(por exemplo, use sudo -H gedit /etc/apt/sources.list) e remova a linha duplicada ou coloque uma #no início da linha.

Micha
fonte
1

Eu tento completar as possibilidades oferecidas por outros usuários usando o terminal, já que foi o que você perguntou, principalmente:

efetue login se estiver usando uma instalação baseada em texto ou pressione Alt+ F2e digite gnome-terminal se estiver usando GUI

Então digite

sudo nano /etc/apt/sources.list

(Para entender melhor: no diretório /etcvocê pode encontrar (quase) todos os arquivos de configuração do seu computador e no aptdiretório você encontra o souces.listarquivo que contém todos os repositórios que o APT usa para atualizar ou instalar e atualizar o software)

Edite o arquivo removendo ou comentando com #no início da linha quaisquer linhas duplicadas.

Pressione Ctrl+ Xpara sair e pressione ypara salvar o arquivo (ou npara sair sem salvar).

Atualize para ver se você o corrigiu:

sudo apt-get update

Diverta-se!

Pitto
fonte
Eu também acho que editor de texto evoluída como vim pode automaticamente encontrar duplicatas, mas eu não sei como fazer isso qualquer tipo de informação seria interessante
Pitto
0
S="/etc/apt/sources.list" ;
S2="$S ${S}.d/*.list" ;
grep -b "^deb\`cat $S2 |
    grep -i "^deb[[:space:]]http" |
    sort |
    uniq -dc |
    sed -e 's;[[:space:]]\\+[[:digit:]]\\+[[:space:]]\\+deb\\(.\\+$\\);\\1;g'\`$" $S2

* Quebras de linha inseridas para facilitar a leitura.

Tony Saratonev
fonte
2
Por favor, explique a resposta ou o risco de removê-la.
jokerdino
Bem-vindo ao Ask Ubuntu! Como jokerdino, como indicado, esta resposta se beneficiaria substancialmente se você a editasse para adicionar alguma explicação (ou pelo menos para informar ao usuário exatamente o que fazer com essas linhas).
Elias Kagan
Esta resposta está errada porque pode remover entradas duplicadas, mas não remove entradas de origem duplicadas . veja aqui uma explicação
Anwar
0

Execute o seguinte para remover as duplicatas

cat /etc/apt/sources.list | perl -ne '$H{$_}++ or print' > /tmp/sources.list && sudo mv /tmp/sources.list /etc/apt/sources.list  
Stormvirux
fonte
obter mais informações sobre isso, por favor
0

No caso de W: Duplicate sources.list entry http://dl.google.com/linux/chrome/deb/ stable/main amd64 Packages (/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_main_binary-amd64_Packages)

Abrir: sources.list.d

rm google.list

então só google-chrome.listresta

Stevie G
fonte
0

É um trabalho apropriado para o uniqqual omite linhas duplicadas e imprima apenas entradas únicas; assim, podemos obter uniqe substituir o arquivo antigo pela uniqsaída de:

 sort /etc/apt/sources.list | uniq > /tmp/sources && sudo mv /tmp/sources  /etc/apt/sources.list
Sergiy Kolodyazhnyy
fonte
11
uniqprecisa de entrada classificada.
Muru
sort -ufaz o mesmo trabalho =)
AB