Как исправить ошибку "W: Duplicate sources.list entry"?

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

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

25 ответов

Ваш 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
    • Выберите категорию " точная безопасность", " точные обновления" и " точные обратные порты " на вкладке " Обновления ".
    • Выберите Canonical partner и Независимую категорию на вкладке Другое программное обеспечение.

Вот и все. У вас сейчас по умолчанию 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 содержат только одну подходящую строку, и она также была указана в google.list файл мы можем безопасно удалить этот файл с помощью команды

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

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

Для 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 файл.

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

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

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

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

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

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

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

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

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

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

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

10.10 и ранее

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

ИЛИ ЖЕ

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

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

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

Для 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" и нажмите "ОК".

Я искал такой инструмент, но я не нашел ни одного...
Таким образом, я закончил кодировать один сам с 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

Похоже, у вас есть две одинаковые строки в вашем /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 файл.

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

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

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

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

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

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

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

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

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

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

sudo nano /etc/apt/sources.list

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

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

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

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

sudo apt-get update

Повеселись!

Нет, нет единой командной строки для поиска и удаления дублированных записей в /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 Само по себе их исправление - это подсказка, что вам действительно не нужно беспокоиться об этом сообщении об ошибке.

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

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

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

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

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

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

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

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

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

В случае 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 остатки

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

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

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

cat /etc/apt/sources.list | perl -ne '$H{$_}++ or print' > /tmp/sources.list && sudo mv /tmp/sources.list /etc/apt/sources.list  
Другие вопросы по тегам