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

185

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 è riportato l'output da /etc/apt/sources.list file:

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 posso risolvere il problema?

    
posta hsinxh 10.04.2012 - 08:31
fonte

25 risposte

223

il tuo sources.list ha davvero voci duplicate.

Per prima cosa vediamo la forma corretta di una linea di deposito o di una linea di origine:

Il formato corretto della linea 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 i pacchetti binari, che sono ospitati nel link e questo repository è per Ubuntu preciso (12.04) e questo repository contiene il componente principale (software ufficialmente supportato da Canonical).

  • Tipo: il tipo può essere deb e deb-src . deb indica un repository binario in cui deb-src indica 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 è precise , per 11.10 è oneiric .
    Puoi visitare il Wiki di Ubuntu per visualizzare un elenco delle versioni di Ubuntu e dei loro nomi in codice .

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

Vedi questa pagina per ulteriori informazioni.

Tieni presente che puoi aggiungere uno o più componenti in una riga, quindi "principale", "universo", "limitato" e "multiverso" possono essere in una singola riga. Nota anche che, sebbene tu aggiunga più di un componente in una singola riga, il sistema APT li considera come una riga separata contenente un solo componente.

Quindi, se il tuo sources.list ha una riga come questa

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

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

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

che è l'equivalente di queste due linee

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

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

Soluzione:

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

  1. Apri un terminale e rinomina il file sources.list esistente in sources.list.bak file. (possiamo tranquillamente rimuoverlo, ma attenzione è buona).

     sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
    
  2. Quindi apri software-properties-gtk per costruirne uno nuovo. Digita il comando seguente in un terminale o nel prompt dei comandi di dash premendo Alt + F2

    software-properties-gtk
    

    Nota, per Ubuntu versione 11.10 o precedente devi usare gksu prima del comando software-properties-gtk

  3. Dopo che la finestra è aperta,

    • Seleziona tutte e quattro le categorie nella scheda Software Ubuntu
    • Seleziona la categoria sicurezza precisa , aggiornamenti precisi e precisi-backports nella scheda Aggiornamenti .
    • Seleziona la categoria partner canonico e indipendente dalla scheda altro software .

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

Aggiornamento per gestire i file di sources.list.d dir

A volte una voce duplicata può trovarsi in un file nella directory /etc/apt/sources.list.d , che viene anche utilizzata 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 esemplificativo:

Un utente ha visualizzato questo messaggio di errore mentre eseguiva 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 una voce con http://dl.google.com nel file /etc/apt/sources.list principale. Guardando la directory /etc/apt/sources.list.d/ abbiamo trovato questi file:

output 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.list e google.list erano buoni candidati per contenere i duplicati. Quindi, era necessario controllare il contenuto di entrambi i file.

Output 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, ci sono state voci duplicate nelle fonti di Apt. Poiché google-chrome.list contiene solo una singola riga apt ed è stata anche elencata in google.list file possiamo tranquillamente rimuovere questo file con il comando

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

Quindi il problema è stato risolto.

    
risposta data Anwar 05.09.2012 - 19:33
fonte
77

Per Ubuntu 12.04

Graficamente:

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

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

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:

cat legge il file e passa il contenuto a perl che rimuove le linee duplicate. Il risultato viene quindi salvato > in un file temporaneo che viene quindi spostato per sostituire il file /etc/apt/sources.list originale.

    
risposta data desgua 05.05.2012 - 00:27
fonte
22

Quanto sono negative le voci duplicate in sources.list?

Non so quanto sia grave, ma non mi piace sudo apt-get update mostrandomi voci duplicate.

Dal suo punto di vista non è così male, mostra solo che hai voci duplicate.

SourcesList

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

È proprio come l'aggiornamento di Windows

  

Puoi rimuovere le 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

Apri y-ppa-manager modulo Dash

  

Inserisci la password amministratore

  

Fai doppio clic su Avanzate

  

Scansione e amp; Rimuovi duplicati PPA e amp; Fai clic su Ok

  

Ci vorrà un po 'di tempo (1 o 2 minuti) per scansionare & amp; Rimuovi i PPA duplicati

    
risposta data Qasim 08.05.2013 - 07:36
fonte
16

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

Rimuovi i file "partner precisi" poiché il repository partner è già presente in sources.list .

sudo rm /etc/apt/sources.list.d/precise-partner.*
    
risposta data Eric Carvalho 01.09.2012 - 21:20
fonte
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
    
risposta data wojox 04.07.2012 - 07:16
fonte
8

Ho avuto lo stesso problema, open source del software. deselezionato "Partner canonici". Il conflitto è tra "Partner canonici" e "Partner canonici aggiunti dal Centro software"

    
risposta data Amjed 11.04.2012 - 07:11
fonte
7

Se non riesci a capirlo nel tuo source.list , procedi nel seguente modo:

  1. Fai clic con il tasto sinistro sull'icona delle impostazioni (nell'angolo in alto a sinistra dello schermo) e seleziona Impostazioni di sistema.
  2. Fai clic su Sorgenti software e passa a Altro software.
  3. Deseleziona uno dei 'Canonical Partners (codice sorgente) -software confezionato da Canonical per i file dei loro partner e uno dei' Canonical Partners -software confezionati da Canonical per i file dei loro partner 'e fai clic su Chiudi per uscire.
  4. Premere simultaneamente i tasti CTRL + ALT + T per aprire il terminale e digitare sudo apt-get update .
risposta data all4naija 11.04.2012 - 08:15
fonte
5

Per Ubuntu 9.10 - 12.04

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

Puoi installarlo in questo modo da un terminale:

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

Dopodiché, avvia l'applicazione e vai al menu Avanzate.

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

    
risposta data rearlight 06.05.2012 - 15:25
fonte
5

10.10 e precedenti

Applicazioni & gt; Ubuntu Software Center & gt; Modifica & gt; Sorgenti software & gt; Altro software

OR

Sistema & gt; Amministrazione & gt; Synaptic Packet Manager & gt; Impostazioni & gt; Repository

Seleziona e Rimuovi voci duplicate.

    
risposta data Sid 18.11.2010 - 16:43
fonte
4

Sembra che tu abbia due righe identiche nel tuo file /etc/apt/sources.list .

Vai al terminale e inserisci sudo editor /etc/apt/sources.list , quindi cerca le linee identiche in quel file e, se li trovi, eliminali. Dopo averlo fatto, salva ed esci, quindi esegui sudo apt-get update e questo dovrebbe risolvere il tuo problema.

Se ciò non risolve il tuo problema, dovrai utilizzare un approccio basato su tentativi ed errori. Innanzitutto, crea un backup del tuo file sources.list , quindi passa al file attuale e commenta o elimina ogni riga, salva e apt-get update -ing dopo che ogni riga è stata commentata o eliminata. Passando attraverso questo file riga per riga commentando diverse linee alla fine ti dirò quale linea è superflua. Non dimenticare di decommentare le righe che hai commentato se apt-get update mostra ancora lo stesso prompt, altrimenti rimarrai senza fonti nel tuo file sources.list .

    
risposta data Jeff Welling 10.04.2012 - 17:01
fonte
4

Ho cercato uno strumento del genere, ma non ne ho trovato nessuno ...
Quindi, ho finito per programmarne uno con PHP .

Ci scusiamo per il codice sorgente non organizzato sporco.

chkdup - Screenshot:

Autore

Mubarak Alrashidi (DeaDSouL)

Requisiti:

  1. PHP.
  2. sudo.

Installazione:

  1. Apri il terminale.
  2. Per installare PHP se non ce l'hai, digita: sudo apt-get install php5 php5-cli .
  3. Scarica il chkdup .
  4. Estrai il file ovunque preferisci.
  5. Tipo: sudo sh install.sh .

Disinstalla:

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

Come si usa:

Apri il terminale e digita sudo chkdup .

FAQs:

Che cosa fa install.sh?

  • Il programma di installazione sposta chkdup.php in /opt/ , quindi creerà un collegamento simbolico in /usr/bin/ .

Che cos'è il uninstall.sh?

  • Il programma di disinstallazione rimuoverà i seguenti file:

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

È sicuro usare chkdup?

  • Sì, poiché richiede un backup del file sources.list corrente prima di tentare di fare qualsiasi cosa. Ma non sono responsabile se qualcosa è successo. La piena responsabilità sarà tua.

Licenza

Licenza pubblica generale GNU

    
risposta data DeaDSouL 17.03.2011 - 01:19
fonte
3

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

    
risposta data koni_raid 11.04.2012 - 13:41
fonte
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

    
risposta data karthick87 18.11.2010 - 16:43
fonte
1

No, non esiste una singola riga di comando per trovare ed eliminare voci duplicate nel file /etc/apt/sources.list .

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

Le voci duplicate riportate da apt-get update saranno costituite da voci di funzione duplicate, come un repository incluso in entrambe le varianti i386 e amd64 . Il modo semplice ed efficace per rimuoverli è quello di rilevare quali repository sono segnalati come duplicati da apt-get update e rimuoverli tramite il Centro Software . Aprilo e scegli Modifica - & gt; Sorgenti software - & gt; scheda Altro software . Basta cercare le voci duplicate e deselezionarle. (Questa è anche un'opportunità per rimuovere qualsiasi repository source-code se non stai compilando i pacchetti).

Tuttavia, va notato che apt-get update non trova solo voci duplicate tramite sources.list , ma include file di repository situati in /var/lib/apt/lists/ . L'eliminazione di voci duplicate da lì rimuoverà solo temporaneamente i messaggi di errore apt-get update se Ubuntu pensa che ne abbia bisogno, poiché i file verranno reinstallati automaticamente. Il fatto che apt-get update segnalerà alcuni repository come duplicati e quindi ti suggerirà di eseguire apt-get update per ripararli, è un indizio del fatto che non devi preoccuparti di quel messaggio di errore.

    
risposta data Smarteralec 08.05.2012 - 00:00
fonte
1

Nel mio caso i duplicati erano nel file prerequists-sources.list . 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 a Update Manager e installa gli aggiornamenti.

    
risposta data Mathijs Sterk 15.06.2012 - 10:18
fonte
1

Bene, ho risolto io stesso il problema della Duplicate Entry rinominando /etc/apt/sources.d (come root) in qualcos'altro ed eseguendo sudo apt-get update per ristabilire la directory e il suo contenuto.

    
risposta data Seann 25.04.2013 - 21:36
fonte
1

Vai a /etc/apt/sources.list manualmente sudo nano /etc/apt/sources.list e rimuovi i duplicati. Dopo apt-get update , il problema è stato risolto.

    
risposta data Anderverhaal 03.09.2013 - 14:01
fonte
1

In /etc/apt/sources.list devi commentare (aggiungi # all'inizio della riga) la voce duplicata dell'archivio e salvare le modifiche. Dopodiché ripeti sudo apt-get update .

    
risposta data Snorri 28.05.2013 - 11:07
fonte
1

Utilizza il generatore di elenchi di origini di Ubuntu .

  • Esegui sudo -H nautilus nel terminale
  • Trova /etc/apt/sources.list
  • Fai clic con il tasto destro e apri il file con un editor di testo (se fai clic su di esso, si aprirà la GUI delle sorgenti del software)
  • Basta copiare e incollare sources.list e salvare.
  • Esci dal terminale e il gioco è fatto.

Google sembra avere un problema, quindi suggerirei di lasciarlo fuori. Ho fatto questo su Ubuntu 12.10 (versione Studio con desktop Ubuntu aggiunto e Unity per un altro accesso desktop).

    
risposta data studiofreak 05.01.2013 - 15:29
fonte
1

Modifica il file /etc/apt/sources.list (ad esempio usa sudo -H gedit /etc/apt/sources.list ) e rimuovi la riga duplicata o metti un # all'inizio della riga.

    
risposta data Micha 14.12.2012 - 19:41
fonte
1

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

accedi se stai usando un'installazione basata su testo o premi Alt + F2 e digita gnome-terminal se stai usando GUI

Quindi scrivi

sudo nano /etc/apt/sources.list

(Per capire meglio: nella directory /etc puoi trovare (quasi) tutti i file di configurazione del tuo computer e nella directory apt trovi il file souces.list che contiene tutti i repository che APT usa per aggiornare oppure installa e aggiorna il software)

Modifica il file rimuovendo o commentando con # all'inizio della riga qualsiasi riga duplicata.

Premi Ctrl + X per uscire e premi y per salvare il file (o n per uscire senza risparmio).

Quindi aggiorna per vedere se lo hai risolto:

sudo apt-get update

Buon divertimento

    
risposta data Pitto 18.11.2010 - 18:12
fonte
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 la leggibilità.

    
risposta data Tony Saratonev 04.07.2012 - 01:59
fonte
0

Esegui la seguente procedura 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  
    
risposta data Stormvirux 14.09.2013 - 12:46
fonte
0

Nel 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)

Apri: sources.list.d

rm google.list

quindi rimane solo google-chrome.list

    
risposta data Stevie G 25.05.2015 - 10:38
fonte
0

È un lavoro appropriato per uniq che omette le righe duplicate e stampa solo voci univoche, quindi possiamo prendere l'output di uniq e sostituire il vecchio file con l'output di uniq :

 sort /etc/apt/sources.list | uniq > /tmp/sources && sudo mv /tmp/sources  /etc/apt/sources.list
    
risposta data Sergiy Kolodyazhnyy 24.11.2015 - 01:38
fonte

Leggi altre domande sui tag