Come risolvere "W: Duplicate sources.list entry"?


190

Continuo a ricevere questo avviso ogni volta che provo a eseguire 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

Di seguito è l'output dal /etc/apt/sources.listfile:

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

Come lo aggiusto?

Risposte:


229

Il tuo sources.list ha davvero voci duplicate.

Innanzitutto vediamo la forma corretta di una riga del repository o di una riga di origine:

Il formato corretto della riga di origine del repository è

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

Ad esempio, una linea di pronti contro termine può essere come questa

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

Qui, significa che il repository è per pacchetti binari, che sono ospitati in http://archive.ubuntu.com/ubuntu e questo repository è per Ubuntu preciso (12.04) e questo repository contiene il principale (software che è ufficialmente supportato da Componente canonico).

  • Tipo: il tipo può essere debe deb-src. debindica un repository binario dove deb-srcsignifica un repository di origine

  • Posizione: http://archive.ubuntu.com/ubuntu posizione del repository.

  • Dist-name: il nome di distribuzione della versione di Ubuntu. Per Ubuntu 12.04 lo è precise, per 11.10 lo è oneiric.
    Puoi visitare il wiki di Ubuntu per visualizzare un elenco aggiornato delle versioni di Ubuntu e dei loro nomi in codice .

  • Componente: Può essere main, universe, multiversee restricted. Queste parole indicano il livello di supporto per i pacchetti e lo stato delle licenze.

Vedi questa pagina per maggiori informazioni.

Si noti che è possibile aggiungere uno o più componenti in una riga, quindi "principale", "universo", "limitato" e "multiverso" possono trovarsi in una singola riga. Inoltre, sebbene si aggiunga più di un componente in una singola riga, il sistema APT li considera come una riga separata contenente un solo componente.

Quindi, se sources.listhai una linea come questa

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

Quindi non può avere un'altra linea come la seguente (che i tuoi file hanno)

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

che equivale a queste due linee

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

Perché stai duplicando l' universo due volte, quindi ci sarà un errore per quel duplicato. Verrà fornito un errore per ogni duplicato trovato.

Soluzione:

Dopo aver analizzato il tuo sources.listfile, ho scoperto che è di base che viene fornito da Ubuntu per impostazione predefinita. È possibile creare un file predefinito seguendo la procedura:

  1. Apri un terminale e prima rinomina il sources.listfile esistente in sources.list.bakfile. (possiamo rimuoverlo in sicurezza, ma attenzione è buona).

     sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
    
  2. Quindi aprire software-properties-gtkper costruirne uno nuovo. Digitare il comando seguente in un terminale o nel prompt dei comandi trattino premendo Alt+F2

    software-properties-gtk
    

    Nota, per Ubuntu versione 11.10 o precedente devi usare gksuprima del software-properties-gtkcomando

  3. Dopo che la finestra è aperta,

    • Seleziona tutte e quattro le categorie nella scheda Software Ubuntu
    • Selezionare precisa-sicurezza , precisi-updates e precisi-backports categoria in Aggiornamenti scheda.
    • Seleziona Partner canonico e categoria Indipendente dalla scheda Altro software .

Questo è tutto. Ora hai un sources.listfile predefinito senza errori. Confronta questo file con quello precedente, se lo desideri.


Aggiornamento per gestire sources.list.di file di dir

A volte una voce duplicata può trovarsi in un file nella /etc/apt/sources.list.ddirectory, che viene utilizzata anche da APT. Quindi, dovresti guardare quella directory e vedere se c'è qualche duplicato in quei file. Non è necessario che i duplicati si trovino nello stesso file.

Caso di esempio:

Un utente ha visualizzato questo messaggio di errore durante l'operazione 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

Ma non c'era alcuna voce http://dl.google.comnel /etc/apt/sources.listfile principale . Guardando la /etc/apt/sources.list.d/directory abbiamo trovato questi file:

uscita di 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

I file google-chrome.liste google.listsono stati buoni candidati per contenere duplicati. Quindi, era necessario controllare il contenuto di entrambi i file.

Uscita di cat /etc/apt/sources.list.d/google-chrome.list:

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

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

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

Quindi, c'erano voci duplicate nelle fonti di Apt. Dato google-chrome.listche contiene solo una singola riga apt ed è stato anche elencato nel google.listfile, possiamo rimuovere questo file in sicurezza con il comando

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

Quindi il problema è stato risolto.


5
Che cosa ho fatto per farmi avere voci duplicate nel mio sources.list.d?
Seanny123,

@ Seanny123 È difficile da dire.
Anwar,

1
Grazie mille. Mi stavo chiedendo ore come si sono verificati i duplicati. Alla fine hai mostrato sources.list.d
Isura Manchanayake il

1
Risposta piacevole e completa. Nel tuo aggiornamento per gestire i file dir di sources.list.d spieghi quali sono i file / le linee che danno i duplicati. Potresti spiegare allo stesso modo quali sono le 6 coppie di linee (dal momento che dici "il tuo file ha 6 duplicati lì") nell'OP che danno duplicati?
sancho.s,

1
Il suggerimento per andare a consultare il mio sources.list.d è stato ciò che mi ha aiutato a risolvere questo problema.
lcarsos,

80

Per Ubuntu 12.04

Graficamente:

Premi Alt+ F2e incolla software-properties-gtk(oppure puoi aprire "Software Center", quindi vai su "Modifica"> "Sorgenti software"). Vai alla scheda "Altro software", scegli la voce duplicata e premi il pulsante "Rimuovi".

inserisci qui la descrizione dell'immagine


Se hai bisogno di un'opzione da riga di comando, eccola qui:

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

Il comando fa questo:

catlegge il file e passa il contenuto a perlcui rimuove le righe duplicate. Il risultato viene quindi salvato >in un file temporaneo che viene quindi spostato per sostituire il /etc/apt/sources.listfile originale .


2
Proprio come risolverlo, senza confusione e tutti i dettagli troppo profondi. Grazie!
Peter M.,

In realtà ha funzionato! Non è possibile, per qualche motivo, installare git su un 12.04. Invece di rimuovere, ho appena verificato i duplicati apparenti "partner canonici".
davidkonrad,

3
Ho gestito il one-liner, ma mi sudo apt-get updatelamento ancora di voci duplicate come se nulla fosse cambiato. Se è importante, sono su 12.04 (in particolare, OS Luna elementare).
waldyrious

Il catè inutile e vi impedisce di usaresudo perl -i
tripleee

24

Quanto sono cattive le voci duplicate in sources.list?

Non so quanto sia male, ma non mi piace sudo apt-get update che mi mostra voci duplicate.

A proposito non è poi così male, ti sta solo mostrando che hai voci duplicate.

SourcesList

Il file sources.list è un fattore chiave per l'aggiunta o l'aggiornamento di applicazioni all'installazione di Ubuntu. Viene utilizzato anche dal sistema per gli aggiornamenti di sistema. Il file è sostanzialmente la tabella di marcia per il tuo sistema per sapere dove può scaricare i programmi per l'installazione o l'aggiornamento.

È proprio come l'aggiornamento di Windows

È possibile rimuovere voci duplicate in pochi semplici passaggi con 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

Aperto y-ppa-manager modulo Dash

Inserisci la tua password amministratore

inserisci qui la descrizione dell'immagine

Fare doppio clic su Avanzate

inserisci qui la descrizione dell'immagine

Scansiona e rimuovi PPA duplicati e fai clic su OK

inserisci qui la descrizione dell'immagine

Ci vorrà del tempo (1 o 2 minuti) per scansionare e rimuovere duplicati di PPA


2
Nel mio caso, Y PPA ha continuato a dire che non sono stati trovati duplicati. Ho fatto un backup di source.list rimosso e ho eseguito sudo apt-get update per ricreare l'elenco dei sorgenti (ubuntu 12.04). Questo ha funzionato per me.
michel.iamit,

1
Ha funzionato per me su Mint 17, grazie amico!
spences10

Ha funzionato per me su Ubuntu 14.04..Grazie amico .. :)
Rahul Singh

1
ha funzionato come un incantesimo
vector il

1
Nel mio caso del 14.04 continua a dire che non sono stati trovati duplicati
Muhammad Omer Aslam,

16

Il repository partner è duplicato all'interno /etc/apt/sources.liste /etc/apt/sources.list.d/precise-partner.list.

Basta rimuovere quei file "partner precisi" poiché il repository partner è già presente in sources.list.

sudo rm /etc/apt/sources.list.d/precise-partner.*

Ricevorm: cannot remove '/etc/apt/sources.list.d/precise-partner.*': No such file or directory
Dennis il

1
Prova sudo rm /etc/apt/sources.list.d/*partner*. Controlla anche la tua /etc/apt/sources.list, cerca righe duplicate.
Eric Carvalho,

Nessuna fortuna, non ho alcun file con "partner" nel nome in quella directory. E /etc/apt/sources.listnon contiene duplicati secondo uniq.
Dennis,

10

Crea una copia di backup del tuo sources.list:

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

Ora rimuovi l'originale e aggiorna:

sudo rm /etc/apt/sources.list && sudo apt-get update

Come può aggiornare senza sources.listfile?
Anwar,

Ripopolerà. =)
Wojox il

il mio non si ripopolò
conman253

Ripristina quello di cui hai eseguito il backup
Wojox,

Come posso tornare all'elenco di backup? la rimozione ha rimosso molte cose importanti ... questo non è assolutamente sicuro ..
alvas

8

Ho avuto lo stesso problema, fonti di software aperte. non selezionato "Partner canonici". Il conflitto è tra "partner canonici" e "partner canonici aggiunti dal centro software"


7

Se non riesci a capirlo nel tuo source.list, allora fai questo:

  1. Fai clic con il pulsante sinistro del mouse sull'icona delle impostazioni (nell'angolo superiore estremo dello schermo) e seleziona Impostazioni di sistema.
  2. Fai clic su Sorgenti software e passa a Altro software.
  3. Deseleziona uno dei software "Partner Canonical (codice sorgente) impacchettato da Canonical per i file dei loro partner" e uno dei software "Partner Canonical" impacchettato da Canonical per i file dei loro partner e fai clic su Chiudi per uscire.
  4. Premere contemporaneamente i tasti CTRL+ ALT+ Tper aprire il terminale e digitare sudo apt-get update.

Ho seguito i tuoi suggerimenti, ma continuo a ricevere questo errore.
hsinxh,

Per favore, pubblica l'immagine delle tue "Sorgenti software" qui per conoscere il colpevole.
all4naija,

Pubblica qui l'immagine del tuo "Altro software".
all4naija,

6

10.10 e precedenti

Applicazioni> Ubuntu Software Center> Modifica> Origini software> Altro software

O

Sistema> Amministrazione> Synaptic Packet Manager> Impostazioni> Archivi

Finestra di configurazione Sorgenti software

Seleziona e rimuovi voci duplicate.


5

Per Ubuntu 9.10 - 12.04

Esiste un'app chiamata Y-PPA-Manager che può farlo e molto altro.

Puoi installarlo così da un Terminale:

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

Successivamente, basta avviare l'applicazione e andare al menu Avanzato.

inserisci qui la descrizione dell'immagine

Quindi seleziona "Scansiona e rimuovi PPA duplicati" e premi OK.

inserisci qui la descrizione dell'immagine


È uno strumento interessante ma non risolve il problema. Ho fatto questa scelta e dopo ho gli stessi avvertimenti.
nazar_art,

4

Sembra che tu abbia due linee identiche nel tuo /etc/apt/sources.listfile.

Vai al terminale e inserisci sudo editor /etc/apt/sources.list, quindi cerca eventuali linee identiche in quel file e, se le trovi, cancellale. Al termine, salva ed esci, quindi esegui sudo apt-get updatee ciò dovrebbe risolvere il tuo problema.

Se ciò non risolve il problema, dovrai utilizzare un approccio di prova ed errore. Innanzitutto, crea un backup del tuo sources.listfile, quindi nel file effettivo passa e commenta o elimina ogni riga, salvando e apt-get update-ing dopo che ciascuna riga è stata commentata o eliminata. Passare attraverso questo file riga per riga commentando diverse righe alla fine ti dirà quale riga è quella superflua. Non dimenticare di rimuovere il commento dalle righe che hai commentato se apt-get updatemostra ancora lo stesso prompt, altrimenti rimarrai senza fonti nel tuo sources.listfile.


4

Ho cercato un tale strumento, ma non ho trovato alcun ...
Quindi, ho finito per codificarne uno da solo PHP.

Ci scusiamo per il codice sorgente non organizzato sporco.

chkdup - Screenshot:

inserisci qui la descrizione dell'immagine

Autore

Mubarak Alrashidi (DeaDSouL)

Requisiti:

  1. PHP.
  2. sudo.

Installazione:

  1. Apri il terminale
  2. Per installare PHP se non lo avete, tipo: sudo apt-get install php5 php5-cli.
  3. Scarica il chkdup .
  4. Estrai il file dove preferisci.
  5. Tipo: sudo sh install.sh.

Disinstallare:

  1. Apri il terminale
  2. Vai al percorso in cui hai estratto lo strumento.
  3. Tipo: sudo sh uninstall.sh.

Come usarlo:

Basta aprire il terminale e digitare sudo chkdup.

FAQs:

Cosa fa install.sh?

  • Il programma di installazione sposterà il chkdup.phpto /opt/quindi creerà un collegamento simbolico in /usr/bin/.

Che dire di uninstall.sh?

  • Il programma di disinstallazione rimuoverà i seguenti file:

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

È sicuro usare chkdup?

  • Sì, poiché richiede un backup dell'attuale source.list prima di tentare di fare qualsiasi cosa. Ma non sono responsabile se è successo qualcosa. La piena responsabilità sarà tua.

Licenza

Licenza GNU General Public


appena provato, bello e semplice :-) bello :-)
bmbaker

3

Hai controllato ls /etc/apt/sources.list.d/? Forse hai dei repository "extra" lì dentro?


2

Installa ubuntu-tweak e rimuovi le voci duplicate da lì.

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

testo alternativo


Questo non dice come farlo.
RolandiXor

1

No, non esiste un'unica riga di comando per trovare ed eliminare voci duplicate nel /etc/apt/sources.listfile.

Questo perché le righe di comando suggerite, che semplicemente duplicano la funzione del uniqcomando incorporato molto più semplice , funzioneranno solo su un file SORTED e rimuoveranno solo le righe ADJACENT. Inoltre, tali comandi rimuoveranno solo le righe costituite da una stringa identica di caratteri .

Voci duplicate riportati da apt-get updateconsisteranno duplice funzione voci, come un archivio essendo inclusi in entrambe le sue i386e amd64varianti. Il modo semplice ed efficace per rimuoverli è annotare quali archivi sono riportati come duplicati dall'aggiornamento apt-get e rimuoverli tramite il Software Center . Aprilo e scegli Modifica -> Origini software -> scheda Altro software . Basta cercare le voci duplicate e deselezionarle. (Questa è anche un'opportunità per rimuovere tutti i source-coderepository se non stai compilando i pacchetti).

Tuttavia, va notato che apt-get updatenon solo trova voci duplicate tramite sources.list, ma include file di repository situati in /var/lib/apt/lists/. L'eliminazione di voci duplicate da lì rimuoverà temporaneamente i apt-get updatemessaggi di errore solo se Ubuntu ritiene di averne bisogno, poiché i file verranno reinstallati automaticamente. Il fatto che apt-get updatesegnalerà alcuni repository come duplicati e quindi suggerisca di eseguirsi apt-get updateper ripararli, è un indizio del fatto che non è necessario preoccuparsi di quel messaggio di errore.


1

Nel mio caso i duplicati erano nel prerequists-sources.listfile. Sono stato in grado di continuare l'aggiornamento eseguendo i seguenti comandi nel Terminale:

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

Quindi vai su Update Managere installa gli aggiornamenti.


Il passaggio a / tmp non è necessario. .listÈ sufficiente rinominare qualcosa che non finisce con
Daniel Alder,

1

Bene, ho risolto me stesso il problema della voce duplicata rinominando /etc/apt/sources.d(come root) in qualcos'altro e correndo sudo apt-get updateper ristabilire la directory e il suo contenuto.


1

Passato /etc/apt/sources.listmanualmente sudo nano /etc/apt/sources.liste rimosso i duplicati. Dopo apt-get update, il problema è stato risolto.


1

In /etc/apt/sources.listè necessario commentare (aggiungere #all'inizio della riga) la voce del repository duplicato e salvare le modifiche. Dopo quella ripetizione sudo apt-get update.


1

Usa il generatore dell'elenco delle fonti di Ubuntu .

  • Esegui sudo -H nautilusnel terminale
  • Trova /etc/apt/sources.list
  • Fare clic con il tasto destro e aprire il file con un editor di testo (se si fa clic su di esso, si aprirà la GUI delle fonti software)
  • Basta copiare e incollare in sources.liste salvare.
  • Esci dal terminale e il gioco è fatto.

Google sembra avere un problema, quindi suggerirei di lasciarlo fuori. L'ho fatto su Ubuntu 12.10 (versione Studio con desktop Ubuntu aggiunto e Unity per un altro desktop accedi).


1

Basta modificare il file /etc/apt/sources.list(ad esempio utilizzare sudo -H gedit /etc/apt/sources.list) e rimuovere la riga duplicata o inserire un #all'inizio della riga.


1

Cerco di completare le possibilità offerte da altri utenti utilizzando il terminale, poiché è quello che hai chiesto, principalmente:

accedi se stai usando un'installazione testuale o premi Alt+ F2e digita gnome-terminal se stai usando la GUI

Quindi digitare

sudo nano /etc/apt/sources.list

(Per capire meglio: nella directory /etcpuoi trovare (quasi) tutti i file di configurazione del tuo computer e nella aptdirectory trovi il souces.listfile che contiene tutti i repository che APT usa per aggiornare o installare e aggiornare il software)

Modifica il file rimuovendo o commentando #all'inizio della riga eventuali righe duplicate.

Premi Ctrl+ Xper uscire e premi yper salvare il file (o nper uscire senza salvare).

Quindi aggiorna per vedere se lo hai risolto:

sudo apt-get update

Divertiti!


Penso anche che un editor di testo evoluto come vim possa trovare automaticamente i duplicati ma non so come fare che qualsiasi tipo di informazione sarebbe 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

* Interruzioni di riga inserite per leggibilità.


2
Spiegare la risposta o il rischio di averla rimossa.
jokerdino

Benvenuti in Ask Ubuntu! Come jokerdino come indicato, questa risposta trarrebbe notevoli benefici, se dovessi modificarlo per aggiungere qualche spiegazione (o almeno per dire all'utente esattamente cosa fare con queste righe).
Eliah Kagan,

Questa risposta è errata perché può rimuovere voci duplicate ma non rimuove voci di origine duplicate . vedere qui per una spiegazione
Anwar,

0

Eseguire quanto segue per rimuovere i duplicati

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

maggiori informazioni su questo per favore

0

In caso di 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)

Aperto: sources.list.d

rm google.list

quindi google-chrome.listrimane solo


0

È un lavoro appropriato per il uniqquale omette le linee duplicate e stampa solo voci univoche, quindi possiamo prendere l'output uniqe sostituire il vecchio file con uniql'output:

 sort /etc/apt/sources.list | uniq > /tmp/sources && sudo mv /tmp/sources  /etc/apt/sources.list

1
uniqnecessita di input ordinati.
muru,

sort -ufa lo stesso lavoro =)
AB
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.