Как исправить ошибку "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 по умолчанию. Вы можете создать файл по умолчанию, следуя процедуре:
Откройте терминал и сначала переименуйте существующий
sources.listподать вsources.list.bakфайл. (мы можем безопасно удалить это, но осторожность это хорошо).sudo mv /etc/apt/sources.list /etc/apt/sources.list.bakТогда открой
software-properties-gtkпостроить новый. Введите указанную ниже команду в терминале или в командной строке dash, нажав Alt + F2.software-properties-gtkОбратите внимание, что для Ubuntu версии 11.10 или более ранней вы должны использовать
gksuпередsoftware-properties-gtkкомандаПосле того, как окно открыто,
- Выберите все четыре категории на вкладке 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затем сделайте это:
- Щелкните левой кнопкой мыши значок настроек (в крайнем верхнем углу экрана) и выберите "Настройки системы".
- Нажмите на "Источники программного обеспечения" и перейдите к "Другое программное обеспечение".
- Снимите флажок с одной из программ "Канонические партнеры (исходный код)", упакованной Canonical для своих партнеров, и с одной из программ "Канонические партнеры, упакованной Canonical для своих партнеров", и нажмите "Закрыть", чтобы выйти.
- Одновременно нажмите клавиши 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)
Требования:
- PHP.
- Судо.
Монтаж:
- Откройте терминал.
- Чтобы установить PHP, если у вас его нет, введите:
sudo apt-get install php5 php5-cli, - Загрузите chkdup.
- Извлеките файл где угодно.
- Тип:
sudo sh install.sh,
Удаление:
- Откройте терминал.
- Идите по пути, по которому вы извлекли инструмент.
- Тип:
sudo sh uninstall.sh,
Как это использовать:
Просто откройте терминал и введите sudo chkdup,
Вопросы и ответы:
Что делает install.sh?
- Установщик переместит
chkdup.phpв/opt/затем создаст символическую ссылку в/usr/bin/,
Что насчет uninstall.sh?
Деинсталлятор удалит следующие файлы:
install.sh/opt/chkdup.php/usr/bin/chkdup- сам
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
