Как исправить «W: Duplicate sources.list entry»?

190

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

Ответы:

229

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

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

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

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

Например, линия репо может быть такой

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

Здесь это означает, что репозиторий предназначен для бинарных пакетов, которые размещены на http://archive.ubuntu.com/ubuntu, и этот репозиторий предназначен только для Ubuntu (12.04), и этот репозиторий содержит основной (программное обеспечение, которое официально поддерживается Канонический) компонент.

  • Тип: Тип может быть 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. Эти слова указывают на уровень поддержки пакетов и статус лицензирования.

Смотрите эту страницу для получения дополнительной информации.

Обратите внимание, что вы можете добавить один или несколько компонентов в строку, поэтому «основной», «юниверс», «ограниченный» и «мультиверс» могут быть в одной строке. Также обратите внимание: хотя вы добавляете более одного компонента в одну строку, система 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чтобы построить новый. Введите указанную ниже команду в терминале или в командной строке dash, нажав 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

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

Анвар
источник
5
Что я сделал, чтобы у меня были дубликаты в файле sources.list.d?
Seanny123
@ Seanny123 Сложно сказать.
Анвар
1
Большое спасибо. Мне было интересно часами, как произошли дубликаты. Наконец вы показали sources.list.d
Исура Манчанаяке
1
Хороший и тщательный ответ. В вашем Обновлении для работы с файлами dir sources.list.d вы объясняете, какие файлы / строки содержат дубликаты. Не могли бы вы так же объяснить, какие 6 пар линий (так как вы говорите «в вашем файле 6 дубликатов») в ОП, которые дают дубликаты?
sancho.s
1
Намек на то, чтобы проверить мои sources.list.d, помог мне решить эту проблему.
lcarsos
80

Для 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
источник
2
Просто как это исправить, без путаницы и слишком глубоких деталей. Спасибо!
Питер М.
Это действительно сработало! По какой-то причине не удалось установить git на 12.04. Вместо удаления я просто проверил кажущиеся дублированные «Канонические партнеры».
Давидконрад
3
Я запускал однострочник, но sudo apt-get updateвсе еще жалуется на дубликаты записей, как будто ничего не изменилось. Если это имеет значение, я на 12.04 (конкретно, на элементарной ОС Luna).
Waldyrious
Это catбесполезно и не позволяет вам использоватьsudo perl -i
tripleee
24

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

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

Кстати, это не так уж плохо, просто показывает, что у вас есть дубликаты записей.

SourcesList

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

Это как обновление Windows

Вы можете удалить повторяющиеся записи в несколько простых шагов с 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

Введите пароль администратора

введите описание изображения здесь

Двойной клик на Дополнительно

введите описание изображения здесь

Сканирование и удаление дубликатов PPA и нажмите Ok

введите описание изображения здесь

Для сканирования и удаления дубликатов PPA потребуется некоторое время (1 или 2 минуты)

Касим
источник
2
В моем случае Y PPA повторял, что дубликатов не найдено. Я сделал резервную копию source.list, удалил ее и запустил sudo apt-get update для воссоздания списка источников (ubuntu 12.04). Это сработало для меня.
michel.iamit
1
Работал для меня на монетном дворе 17, спасибо человек!
spences10
Работал для меня на Ubuntu 14.04 .. Спасибо, приятель .. :)
Рахул Сингх
1
работал как шарм
вектор
1
В моем случае 14.04 он продолжает говорить, что Дубликаты не найдены
Мухаммед Омер Аслам
16

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

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

sudo rm /etc/apt/sources.list.d/precise-partner.*
Эрик Карвалью
источник
Я получаюrm: cannot remove '/etc/apt/sources.list.d/precise-partner.*': No such file or directory
Деннис
1
Попробуй sudo rm /etc/apt/sources.list.d/*partner*. Также проверьте ваш /etc/apt/sources.list, поищите дубликаты строк.
Эрик Карвалью
Не повезло, у меня нет файлов с именем "partner" в этом каталоге. И /etc/apt/sources.listне содержит дубликатов в соответствии с uniq.
Деннис
10

Сделайте резервную копию вашего sources.list:

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

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

sudo rm /etc/apt/sources.list && sudo apt-get update
wojox
источник
Как он может обновить без sources.listфайла?
Анвар
Это будет заселять. =)
wojox
мой не заселил
conman253
Вернитесь к тому, что вы скопировали
wojox
Как вернуться к списку резервных копий? удаление удалило много важных вещей ... это совершенно не безопасно ..
alvas
8

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

Амджед
источник
7

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

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

10.10 и ранее

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

ИЛИ ЖЕ

Система> Администрирование> Synaptic Packet Manager> Настройки> Репозитории

Окно конфигурации источников программного обеспечения

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

Sid
источник
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» и нажмите «ОК».

введите описание изображения здесь

задние фары
источник
Это классный инструмент, но он не решает проблему. Я сделал этот выбор и после этого получил те же предупреждения.
nazar_art
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файле.

Джефф Веллинг
источник
4

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

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

chkdup - скриншот:

введите описание изображения здесь

автор

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

Требования:

  1. PHP.
  2. Судо.

Монтаж:

  1. Откройте терминал.
  2. Для установки PHP , если вы не имеете его, типа: sudo apt-get install php5 php5-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 General Public License

Мертвая душа
источник
только что попробовал, красиво и просто :-) приятно :-)
bmbaker
3

Вы проверяли ls /etc/apt/sources.list.d/? Может быть, у вас есть какие-то "дополнительные" репозитории?

koni_raid
источник
2

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

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

альтернативный текст

karthick87
источник
Это не говорит, как это сделать.
RolandiXor
1

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

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

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

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

Smarteralec
источник
1

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

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

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

Матийс Стерк
источник
Переход к / tmp не требуется. Переименования во что-то, что не заканчивается, .listдостаточно
Даниэль Олдер
1

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

Шонн
источник
1

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

Anderverhaal
источник
1

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

Снорри
источник
1

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

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

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

studiofreak
источник
1

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

Миха
источник
1

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

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

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

sudo nano /etc/apt/sources.list

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

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

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

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

sudo apt-get update

Веселиться!

Pitto
источник
Я также думаю, что развитый текстовый редактор, такой как vim, может автоматически находить дубликаты, но я не знаю, как сделать так, чтобы любая информация была интересной
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

* Разрывы строк вставлены для удобства чтения.

Тони Саратонев
источник
2
Пожалуйста, объясните ответ или рискуете его удалить.
Джокердино
Добро пожаловать в Спросите Ubuntu! Как указано в jokerdino, этот ответ значительно выиграл бы, если бы вы отредактировали его, добавив какое-то объяснение (или, по крайней мере, чтобы сообщить пользователю, что делать с этими строками).
Элия ​​Каган
Этот ответ неверен, потому что он может удалить дубликаты записей, но он не удалит дубликаты исходных записей . смотрите здесь для объяснения
Анвар
0

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

cat /etc/apt/sources.list | perl -ne '$H{$_}++ or print' > /tmp/sources.list && sudo mv /tmp/sources.list /etc/apt/sources.list  
Stormvirux
источник
больше информации об этом, пожалуйста
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остается только

Стиви Джи
источник
0

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

 sort /etc/apt/sources.list | uniq > /tmp/sources && sudo mv /tmp/sources  /etc/apt/sources.list
Сергей Колодяжный
источник
1
uniqнужен отсортированный ввод.
Муру
sort -uвыполняет ту же работу =)
AB