How can i fix a duplicate source list?
I keep getting this warning whenever I try to run 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
Below is the output from /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
What should i do to fix this problem?
Your sources.list really has duplicate entries.
Let's first see the correct form of a source line or repository line
The correct format of repository source line is
<type of repository> <location> <dist-name> <components>
For example, a repo line can be like this one
deb http://archive.ubuntu.com/ubuntu precise main
Here, it means, the repository is for binary packages, which are hosted in http://archive.ubuntu.com/ubuntu and this repository is for Ubuntu precise (12.04) and this repository contains the main (software which are officially supported by Canonical) component.
Type: The type can be
deb
anddeb-src
.deb
means a binary repository wheredeb-src
means a source repositoryLocation:
http://archive.ubuntu.com/ubuntu
location of the repository.Dist-name: The distribution name of Ubuntu release. For Ubuntu 12.04 it is
precise
, for 11.10 it isoneiric
.
You can visit the Ubuntu Wiki to view an updated list of Ubuntu releases and their code names.Component: It can be
main
,universe
,multiverse
andrestricted
. These words indicate the level of supports for the packages and the status of the licensing
See this page for more information.
Please take note that, you can add one or more component in a line, so "main", "universe", "restricted" and "multiverse" can be in a single line. Also note, Though you add more than one component in a single line, APT system considers them as separate line containing only one component.
So, If your sources.list
have a line like this
deb http://archive.ubuntu.com/ubuntu precise universe
Then it can't have another line like the below (which your files have)
deb http://archive.ubuntu.com/ubuntu precise main universe
which is equivalent of these two lines
deb http://archive.ubuntu.com/ubuntu precise main
deb http://archive.ubuntu.com/ubuntu precise universe
Because, you are duplicating universe twice, so there will be an error for that duplicate. For every duplicate found an error will be given
Solution:
After analyzing your sources.list
file, I found that, It is a basic one which is supplied by Ubuntu by default. You can build a default file following the procedure
Open a terminal and first rename the existing
sources.list
file tosources.list.bak
file. (we can safely remove that, but caution is good).sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
Then open
software-properties-gtk
to build a new one. Type the below command in a terminal or in dash command prompt with pressing Alt+F2software-properties-gtk
Note, for Ubuntu version 11.10 or earlier you have to use
gksu
before thesoftware-properties-gtk
commandAfter the window is open,
- Select all four categories in Ubuntu Software tab
- Select precise-security , precise-updates and precise-backports category in Updates tab.
- Select Canonical partner and Independent category from Other software tab.
That's it You have now a default sources.list
file without error. Compare this file with the previous one if you want
Update to deal with sources.list.d
dir's files
Sometimes a duplicate entry can be in a file in the /etc/apt/sources.list.d
directory, which is also used by APT. So you should look at the directory and see if there is any duplicate in these files It's not necessary to put duplicates in the same file
Example case:
A user had this error message showing while doing 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
But there was no entry with http://dl.google.com
in the main /etc/apt/sources.list
file. Looking at the /etc/apt/sources.list.d/
directory we found these files.
output of 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
The files google-chrome.list
and google.list
were good candidates for containing duplicates. So checking the contents of both files was required
Output of cat /etc/apt/sources.list.d/google-chrome.list
.
deb http://dl.google.com/linux/chrome/deb/ stable main
and of cat /etc/apt/sources.list.d/google.list
deb http://dl.google.com/linux/chrome/deb/ stable main
So there were duplicate entries in the sources of apt Since google-chrome.list
only contain a single apt line and it was also listed in google.list
file we can safely remove this file with the command
sudo rm /etc/apt/sources.list.d/google-chrome.list
Then the problem was solved