Как исправить ошибку "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