Как исправить «W: Дублировать запись sources.list»?

188

Я всегда получаю это предупреждение, когда пытаюсь запустить 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

Ниже представлен файл /etc/apt/sources.list :

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

Как это исправить?

    
задан hsinxh 10.04.2012 в 06:31
источник

25 ответов

226

В ваших источниках.list действительно есть повторяющиеся записи.

Сначала Посмотрим правильную форму строки или исходной строки репозитория:

Правильный формат исходной строки репозитория

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

Например, строка репо может быть похожа на эту

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

Здесь это означает, что репозиторий предназначен для двоичных пакетов, размещенных в Ссылка , и этот репозиторий предназначен для Ubuntu exact (12.04), и этот репозиторий содержит основное (программное обеспечение, которое официально поддерживается компонентом Canonical).

  • Тип: Тип может быть deb и deb-src . deb означает двоичный репозиторий, где deb-src означает исходный репозиторий

  • Местоположение: http://archive.ubuntu.com/ubuntu местоположения репозитория.

  • Dist-name: . Имя распространения выпуска Ubuntu. Для Ubuntu 12.04 это precise , для 11.10 это oneiric .
    Вы можете посетить Ubuntu Wiki, чтобы просмотреть обновленный список выпусков Ubuntu и их кодовые имена .

  • Компонент: Он может быть main , universe , multiverse и restricted . Эти слова указывают уровень поддержки пакетов и статус лицензирования.

Подробнее см. эту страницу .

Обратите внимание, что вы можете добавить один или несколько компонентов в строку, поэтому «main», «universe», «limited» и «multiverse» могут находиться в одной строке. Также обратите внимание: хотя вы добавляете несколько компонентов в одну строку, система APT рассматривает их как отдельную строку, содержащую только один компонент.

Итак, если ваш sources.list имеет строку, подобную этой

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

Тогда у него не может быть другой строки, как показано ниже (что у ваших файлов)

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

, что эквивалентно этим двум линиям

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

Потому что вы дублируете юниверс дважды, поэтому для этого дубликата будет ошибка. Для каждого найденного дубликата будет указана ошибка.

Решение:

После анализа вашего файла sources.list я обнаружил, что он является базовым, который по умолчанию предоставляется Ubuntu. Вы можете создать файл по умолчанию, следуя процедуре:

  1. Откройте терминал и сначала переименуйте существующий файл sources.list в файл sources.list.bak . (мы можем безопасно удалить это, но осторожность хорошая).

     sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
    
  2. Затем откройте software-properties-gtk , чтобы построить новый. Введите команду ниже в терминале или в командной строке с нажатием Alt + F2

    software-properties-gtk
    

    Примечание. Для Ubuntu версии 11.10 или более ранней версии вы должны использовать gksu перед командой software-properties-gtk

  3. После того, как окно открыто,

    • Выберите все четыре категории в вкладке Ubuntu Software
    • Выберите точная защита , точные обновления и точная обратная связь на вкладке Обновления .
    • Выберите категорию Канонический партнер и Независимый на вкладке Другие программы .

Вот и все. У вас есть файл sources.list по умолчанию без ошибок. Сравните этот файл с предыдущим, если хотите.

Обновление для работы с файлами sources.list.d dir

Иногда дублирующаяся запись может быть в файле в каталоге /etc/apt/sources.list.d , который также используется APT. Итак, вы должны посмотреть на этот каталог и посмотреть, есть ли в этих файлах дубликат. Не обязательно, чтобы дубликаты находились в одном файле.

Пример:

У пользователя появилось это сообщение об ошибке при выполнении 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

Но в файле http://dl.google.com не было записи с /etc/apt/sources.list . Посмотрев в каталоге /etc/apt/sources.list.d/ , мы нашли эти файлы:

вывод 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

Файлы google-chrome.list и google.list были хорошими кандидатами для хранения дубликатов. Таким образом, необходимо было проверить содержимое обоих файлов.

Результат cat /etc/apt/sources.list.d/google-chrome.list :

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

и cat /etc/apt/sources.list.d/google.list

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

Итак, в источниках Apt были дубликаты записей. Поскольку google-chrome.list содержит только одну apt-строку, и она также указана в файле google.list , мы можем безопасно удалить этот файл с помощью команды

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

Тогда проблема была решена.

    
ответ дан Anwar 05.09.2012 в 17:33
78

Для Ubuntu 12.04

Графически:

Нажмите Alt + F2 и вставьте software-properties-gtk (или вы можете открыть «Центр программного обеспечения», затем перейдите в «Редактировать» > «Источники программного обеспечения»). Перейдите на вкладку «Другое программное обеспечение», выберите дублируемую запись и нажмите кнопку «Удалить».

Если вам нужна опция командной строки, вот что:

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

Команда выполняет следующее:

cat читает файл и передает контент perl , который удаляет повторяющиеся строки. Затем результат сохраняется > во временном файле, который затем перемещается, чтобы заменить исходный файл /etc/apt/sources.list .

    
ответ дан desgua 04.05.2012 в 22:27
22

Насколько плохи повторяющиеся записи в sources.list?

Я не знаю, насколько это плохо, но мне не нравится sudo apt-get update , показывающий мне повторяющиеся записи.

Кстати, это не так уж плохо, просто показывая вам, что у вас есть повторяющиеся записи.

SourcesList

Файл sources.list является ключевым фактором при добавлении или обновлении приложений к вашей установке Ubuntu. Это также используется вашей системой для обновления системы. Файл в основном является дорожной картой для вашей системы, чтобы знать, где она может загружать программы для установки или обновления.

Его так же, как обновление Windows

You can remove duplicate entries in few easy steps with 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

Откройте формула y-ppa-manager Dash

Enter You Admin Password

DoubleClickOnAdvanced

Scan & Remove Duplicate PPA's & Click Ok

It will take some time ( 1 or 2 Mints ) To Scan & Remove Duplicate PPA's

    
ответ дан Qasim 08.05.2013 в 05:36
16

Репозиторий-партнер дублируется внутри /etc/apt/sources.list и /etc/apt/sources.list.d/precise-partner.list .

Просто удалите эти файлы с точным партнером, поскольку репозиторий-партнер уже присутствует в sources.list .

sudo rm /etc/apt/sources.list.d/precise-partner.*
    
ответ дан Eric Carvalho 01.09.2012 в 19:20
10

Сделайте резервную копию своих источников.list:

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

Теперь удалите оригинал и обновите:

sudo rm /etc/apt/sources.list && sudo apt-get update
    
ответ дан wojox 04.07.2012 в 05:16
8

У меня была та же проблема, открытые источники программного обеспечения. неконтролируемые «Канонические партнеры». Конфликт между «Канонические партнеры» и «Канонические партнеры, добавленные программным центром»

    
ответ дан Amjed 11.04.2012 в 05:11
7

Если вы не смогли понять это в своем source.list , сделайте следующее:

  1. Щелкните левой кнопкой мыши по значку настроек (в крайнем верхнем углу экрана) и выберите «Системные настройки».
  2. Нажмите «Источники программного обеспечения» и перейдите в «Другое программное обеспечение».
  3. Снимите флажок с одного из «Канонических партнеров (исходный код)», поставляемого Canonical для файлов своих партнеров, и одного из «Канонических партнеров» - программного обеспечения, упакованного Canonical для файлов их партнеров, и нажмите «Закрыть», чтобы выйти.
  4. Одновременно нажмите клавиши CTRL + ALT + T , чтобы открыть терминал, и введите sudo apt-get update .
ответ дан all4naija 11.04.2012 в 06:15
5

Для Ubuntu 9.10 - 12.04

Существует приложение под названием Y-PPA-Manager, которое может сделать это и многое другое.

Вы можете установить его так же из терминала:

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

После этого просто запустите приложение и перейдите в меню «Дополнительно».

Затемвыберите«СканироватьиудалитьдубликатыPPA»инажмите«ОК».

    
ответ дан rearlight 06.05.2012 в 13:25
5

10.10 и раньше

Приложения > Ubuntu Software Center > Изменить > Источники программного обеспечения > Другое программное обеспечение

ИЛИ

Система > Администрирование > Synaptic Packet Manager > Настройки > Хранилища

Выберите и удалите повторяющиеся записи.

    
ответ дан Sid 18.11.2010 в 15:43
4

Похоже, у вас две идентичные строки в файле /etc/apt/sources.list .

Перейдите в терминал и введите sudo editor /etc/apt/sources.list , затем найдите любые идентичные строки в этом файле, и если вы их найдете, удалите их. После завершения, сохранения и выхода, а затем выполните sudo apt-get update , и это должно решить вашу проблему.

Если это не решит вашу проблему, вам придется использовать метод проб и ошибок. Во-первых, создайте резервную копию вашего файла sources.list , затем в фактическом файле пройдите и закомментируйте или удалите каждую строку, сохраните и apt-get update -ing после того, как каждая строка будет прокомментирована или удалена. Прохождение этой строки по строкам, комментируя разные строки, в конечном итоге скажет вам, какая строка является лишней. Не забудьте раскомментировать любые строки, которые вы прокомментировали, если apt-get update все еще показывает одно и то же приглашение, иначе вы не будете иметь никаких источников в файле sources.list .

    
ответ дан Jeff Welling 10.04.2012 в 15:01
4

Я искал такой инструмент, но я не нашел ... Итак, я закончил тем, что сам кодировал PHP .

Извините за грязный неорганизованный исходный код.

chkdup - Скриншот:

Автор

МубаракАлрашиди(DeaDSouL)

Требования:

  1. PHP.
  2. Судо.

Установка:

  1. Откройтетерминал.
  2. ЧтобыустановитьPHP,еслиувасегонет,введите:sudoapt-getinstallphp5php5-cli.
  3. Загрузите chkdup .
  4. Извлеките файл в любом месте.
  5. Тип: sudo sh install.sh .

Удалить

  1. Откройте терминал.
  2. Перейдите к пути, в который вы извлекли инструмент.
  3. Тип: sudo sh uninstall.sh .

Как использовать его:

Просто откройте терминал и введите sudo chkdup .

Вопросы и ответы:

Что делает install.sh?

  • Установщик переместит chkdup.php в /opt/ , а затем создаст символическую ссылку в /usr/bin/ .

Как насчет uninstall.sh?

  • Установщик удалит следующие файлы:

    1. install.sh
    2. /opt/chkdup.php
    3. /usr/bin/chkdup
    4. сам uninstall.sh

Безопасно ли использовать chkdup?

  • Да, это так, потому что перед попыткой сделать что-то требуется резервная копия текущего sources.list. Но я не несу ответственности, если что-нибудь случится. Полная ответственность будет за вами.

Лицензия

Общая общедоступная лицензия GNU

    
ответ дан DeaDSouL 17.03.2011 в 00:19
3

Вы проверили ls /etc/apt/sources.list.d/ ? Может быть, у вас есть «дополнительные» хранилища?

    
ответ дан koni_raid 11.04.2012 в 11:41
2

Установите ubuntu-tweak и удалите из него повторяющиеся записи.

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

    
ответ дан karthick87 18.11.2010 в 15:43
1

Нет, нет одной командной строки для поиска и удаления дублированных записей в файле /etc/apt/sources.list .

Это связано с тем, что предлагаемые командные строки, которые просто дублируют функцию гораздо более простой встроенной команды uniq , будут работать только в файле SORTED и будут удалять только строки ADJACENT. Кроме того, эти команды будут удалять только строки, состоящие из идентичной строки символов .

Повторяющиеся записи, сообщенные apt-get update , будут состоять из двух элементов function , таких как репозиторий, включаемый в оба варианта i386 и amd64 . Легкий и эффективный способ их удаления - отметить, какие репозитории сообщаются как дубликаты с помощью apt-get update и удалять их с помощью Software Center . Откройте его и выберите Изменить - > Источники программного обеспечения - > вкладка «Прочее программное обеспечение» . Просто найдите дубликаты записей и снимите их. (Это также возможность удалить любые репозитории source-code , если вы не компилируете пакеты).

Однако следует отметить, что apt-get update не только находит повторяющиеся записи через sources.list , но и содержит файлы репозитория, расположенные в /var/lib/apt/lists/ . Удаление дублирующих записей оттуда будет временно удалять сообщения об ошибках apt-get update , если Ubuntu считает, что он им нужен, поскольку файлы будут автоматически переустановлены. Тот факт, что apt-get update сообщит о некоторых репозиториях как дубликаты, а затем предположим, что вы запустили apt-get update для их ремонта, это ключ, который вам действительно не нужно беспокоиться об этом сообщении об ошибке.

    
ответ дан Smarteralec 07.05.2012 в 22:00
1

В моем случае дубликаты были в файле prerequists-sources.list . Я смог продолжить обновление, выполнив следующие команды в терминале:

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

Затем перейдите к Update Manager и установите обновления.

    
ответ дан Mathijs Sterk 15.06.2012 в 08:18
1

Ну, я решил проблему Duplicate Entry самостоятельно, переименовав /etc/apt/sources.d (как root) на что-то еще и запустив sudo apt-get update , чтобы восстановить каталог и его содержимое.

    
ответ дан Seann 25.04.2013 в 19:36
1

Прошел через /etc/apt/sources.list вручную sudo nano /etc/apt/sources.list и удалил дубликаты. После apt-get update проблема была решена.     

ответ дан Anderverhaal 03.09.2013 в 12:01
1

В /etc/apt/sources.list вы должны прокомментировать (добавить # в начале строки) запись дубликата репозитория и сохранить изменения. После этого повторите sudo apt-get update .

    
ответ дан Snorri 28.05.2013 в 09:07
1

Используйте Генератор списков источников Ubuntu .

  • Запустить sudo -H nautilus в терминале
  • Найти /etc/apt/sources.list
  • Щелкните правой кнопкой мыши и откройте файл с помощью текстового редактора (если вы нажмете на него, он откроет графический интерфейс источников программного обеспечения)
  • Просто скопируйте и вставьте в sources.list и сохраните.
  • Выйдите из терминала, и все готово.

У Google, похоже, есть проблема, поэтому я предлагаю оставить это. Я сделал это на Ubuntu 12.10 (версия Studio с добавленным рабочим столом Ubuntu и Unity для входа на другой рабочий стол).

    
ответ дан studiofreak 05.01.2013 в 14:29
1

Просто отредактируйте файл /etc/apt/sources.list (например, используйте sudo -H gedit /etc/apt/sources.list ) и удалите дублируемую строку или поместите # в начале строки.

    
ответ дан Micha 14.12.2012 в 18:41
1

Я пытаюсь завершить возможности, предлагаемые другими пользователями с помощью терминала, так как это вы спросили, в основном:

войдите в систему, если вы используете текстовую установку или нажмите Alt + F2 и введите gnome-terminal, если вы используете графический интерфейс

Затем введите

sudo nano /etc/apt/sources.list

(Чтобы лучше понять: в каталоге /etc вы можете найти (почти) все файлы конфигурации вашего компьютера, а в каталоге apt находится файл souces.list , содержащий все репозитории, которые APT использует для обновления или установить и обновить программное обеспечение)

Отредактируйте удаление файла или комментирование с помощью # в начале строки для любых дублированных строк.

Нажмите Ctrl + X для выхода и нажмите y , чтобы сохранить файл (или n ), чтобы выйти без сохранение).

Затем обновите, чтобы убедиться, что вы его исправили:

sudo apt-get update

Удачи!

    
ответ дан Pitto 18.11.2010 в 17:12
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

* Линейные разрывы вставлены для удобочитаемости.

    
ответ дан Tony Saratonev 03.07.2012 в 23:59
0

Выполните следующее, чтобы удалить дубликаты

cat /etc/apt/sources.list | perl -ne '$H{$_}++ or print' > /tmp/sources.list && sudo mv /tmp/sources.list /etc/apt/sources.list  
    
ответ дан Stormvirux 14.09.2013 в 10:46
0

В случае 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)

Открыть: sources.list.d

rm google.list

, так что только google-chrome.list остается

    
ответ дан Stevie G 25.05.2015 в 08:38
0

Это подходящая работа для uniq , которая опускает повторяющиеся строки и печатает только уникальные записи, поэтому мы можем вывести результат uniq и заменить старый файл на выход uniq :

 sort /etc/apt/sources.list | uniq > /tmp/sources && sudo mv /tmp/sources  /etc/apt/sources.list
    
ответ дан Sergiy Kolodyazhnyy 24.11.2015 в 00:38

Ознакомьтесь с другими вопросами по меткам