Вопрос или проблема
Я только что установил Ubuntu Gnome 16.04. Я указал системе сохранить мои документы – это сработало. Некоторое программное обеспечение пришлось переустановить. Теперь, когда я запускаю sudo apt-get update
, я вижу следующее:
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (main/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (main/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (main/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (main/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (main/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (restricted/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (restricted/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (restricted/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (restricted/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (multiverse/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (multiverse/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (multiverse/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (multiverse/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Репозиторий 'http://extras.ubuntu.com/ubuntu xenial Release' не имеет файла Release.
N: Данные из такого репозитория не могут быть проверены и, следовательно, их использование может быть потенциально опасным.
N: См. руководство apt-secure(8) для получения информации о создании репозитория и настройке пользователя.
W: http://dl.google.com/linux/chrome/deb/dists/stable/Release.gpg: Подпись ключом 4CCA1EAF950CEE4AB83976DCA040830F7FAC5991 использует слабый алгоритм дайджеста (SHA1)
W: http://repo.sinew.in/dists/stable/InRelease: Подпись ключом B6DA722E2E65721AF54B93966F7565879798C2FC использует слабый алгоритм дайджеста (SHA1)
E: Не удалось получить http://extras.ubuntu.com/ubuntu/dists/xenial/main/source/Sources 404 Not Found [IP: 91.189.92.152 80]
E: Не удалось получить http://extras.ubuntu.com/ubuntu/dists/xenial/main/binary-amd64/Packages 404 Not Found [IP: 91.189.92.152 80]
E: Не удалось получить http://extras.ubuntu.com/ubuntu/dists/xenial/main/binary-i386/Packages 404 Not Found [IP: 91.189.92.152 80]
E: Некоторые файлы индекса не удалось загрузить. Их игнорировали, или вместо них использовали старые версии.
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (main/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (main/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (main/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (main/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (main/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (restricted/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (restricted/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (restricted/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (restricted/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (multiverse/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (multiverse/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (multiverse/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (multiverse/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
Есть ли автоматический способ исправить это?
Недавнее, актуальное решение
Я написал скрипт на Python для автоматизации этой задачи. Вы можете найти самую последнюю версию здесь.
Установка:
-
Установите необходимые пакеты:
sudo apt install python3-apt
-
Скачайте PYZ сборку (
aptsources-cleanup.pyz
) с последнего релиза. -
Отметьте PYZ сборку как исполняемую:
chmod a+x aptsources-cleanup.pyz
Использование:
-
Из папки загрузки PYZ сборки (см. шаг 2 выше) выполните:
sudo ./aptsources-cleanup.pyz
-
Следуйте инструкциям на экране.
Если вы хотите сообщить о проблеме, оставить комментарий или форкнуть исходный код, пожалуйста, сделайте это на GitHub.
Историческое, устаревшее решение
Это старая, более короткая и простая версия, более подходящая для цитирования:
#!/usr/bin/python3
"""
Обнаруживает и интерактивно отключает дубликаты записей источников Apt.
Использование: sudo python3 apt-remove-duplicate-source-entries.py
"""
from __future__ import print_function
import aptsources.sourceslist
EMPTY_COMPONENT_LIST = (None,)
def get_duplicates(sourceslist):
"""
Обнаруживает и возвращает дубликаты записей источников Apt.
"""
sentry_map = dict()
duplicates = list()
for se in sourceslist.list:
if not se.invalid and not se.disabled:
for c in (se.comps or EMPTY_COMPONENT_LIST):
key = (se.type, se.uri, se.dist, c)
previous_se = sentry_map.setdefault(key, se)
if previous_se is not se:
duplicates.append((se, previous_se))
break
return duplicates
if __name__ == '__main__':
try:
input = raw_input
except NameError:
pass
sourceslist = aptsources.sourceslist.SourcesList(False)
duplicates = get_duplicates(sourceslist)
if duplicates:
for dupe, orig in duplicates:
print(
'Пересекающиеся исходные записи:\n'
' 1. {0}: {1}\n'
' 2. {2}: {3}\n'
'Я отключил последнюю запись.'.format(
orig.file, orig, dupe.file, dupe),
end='\n\n')
dupe.disabled = True
print('\n{0} исходных записей были отключены:'.format(len(duplicates)),
*[dupe for dupe, orig in duplicates], sep='\n ', end='\n\n')
if input('Вы хотите сохранить эти изменения? (y/N) ').upper() == 'Y':
sourceslist.save()
else:
print('Дубликаты записей не найдены.')
Он не принимает параметров и работает со всеми /etc/apt/sources.list*
с помощью пакета python3-apt
. Строки не обязательно должны быть точными дубликатами (даже после нормализации), достаточно, если тип, URI, набор и хотя бы один компонент пересекаются.
Я не уверен, что тесты на равенство правильны во всех крайних случаях (например, различные строки «option»).
Для меня (16.04 LTS) переход в
Системные настройки >> Программы и обновления >> Программное обеспечение и удаление каждого повторяющегося пункта из списка сработало нормально.
Сбросьте свои репозитории, как это:
- ВАЖНО: Сначала убедитесь, что у вас установлено
software-properties-gtk
(вы можете запуститьsoftware-properties-gtk -h
, чтобы убедиться, что получаете справочную информацию) sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
sudo software-properties-gtk
- Выберите свои параметры
- Сохраните
Когда все заработает, вы можете удалить вашу резервную копию с помощью sudo rm -rf /etc/apt/sources.list.bak
.
Поскольку ошибки сообщают вам, где находится проблема, и все проблемы вызваны одной дублирующейся строкой, вы можете легко исправить это вручную с помощью текстового редактора, такого как vim, nano и т. д. Одно из преимуществ такого способа в том, что вы можете видеть, в чем проблема, и что вы делаете, чтобы ее исправить.
В вашем случае с правами sudo или root откройте /etc/apt/sources.list в текстовом редакторе. Удалите строку 33 или строку 87. Вы можете визуально проверить, что они дубликаты.
Если вам нравится vim…
$ sudo vim /etc/apt/sources.list
33 [Shift]+g # перейти к строке 33
87 [Shift]+g # перейти к строке 87, не нужен дубликат строки 33
dd # удалить строку, на которой вы находитесь
:wq # сохранить файл и выйти
Или, чтобы выйти, если вы ошиблись…
:q! # выйти без сохранения изменений
Для систем на основе Ubuntu с Linux mint, перейдите в Источники программного обеспечения > Обслуживание > Удалить дубликаты пакетов
Похоже на другие ответы, НО …
Мне пришлось заглянуть в /etc/apt/sources.list.d. Два списка файлов в этом каталоге пытались ссылаться на одни и те же вещи.
Я оставил файл списка, который ссылался на большее количество вещей. Проблема решена.
Ручное редактирование /etc/apt/sources.list и удаление дублирующихся строк.
Я не думаю, что это полезный совет для вашей проблемы с установщиком Ubuntu, которую вы не можете контролировать. Однако, если у вас просто возникла эта ошибка после написания некоторых команд установки самостоятельно, это может помочь:
В Dockerfile для проекта python2 ROS и большого количества установленных apt-get
пакетов до ошибки я сначала получил другую ошибку: /bin/sh: 1: python-matplotlib: не найдено
, хотя это известный пакет в apt-get
. Затем я переключился на python -m pip install -y matplotlib sympy
, что вызвало ошибку вопроса: #13 3.422 W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list.d/ros-latest.list:1 and /etc/apt/sources.list.d/ros1-latest.list:1
. На этом этапе вы можете рассмотреть возможность тестирования python2.7 -m pip install -y matplotlib sympy
в соответствии с этим. Затем я вернулся к
apt-get install -y python-matplotlib python-sympy
и я также оставил эту строку отдельно от других установок apt-get
.
Возможно, не все шаги необходимы, я просто не хотел исключать их, потому что могу только догадываться о причинах. Небольшая часть окончательно работающего Dockerfile:
RUN apt-get install --upgrade python-pip -y && \
python -m pip install --upgrade pip
# Я видел, что во время установки из-за дефолта некоторые пакеты устанавливались с Python3.7:
RUN apt-get install -y MANY_PYTHON2_PACKAGES_PERHAPS_INSTALLED_WITH_PYTHON3.7_DEFAULT
# Эти пакеты, возможно, нуждаются в другой версии Python, чем предыдущие?
RUN apt-get install -y python-matplotlib python-sympy
RUN python -m pip install MANY_PYTHON2_PACKAGES_NOT_IN_APT-GET
ОБНОВЛЕНИЕ: У меня снова возникла ошибка, когда update
запустился. Я просто пропустил обновление. Это сработало, потому что оно запустилось за несколько строк до этого в любом случае:
От:
RUN apt-get -o Acquire::Check-Valid-Until=false update && \
apt-get install -y ...
к
RUN apt-get install -y ...
.
Ответ или решение
Для решения ошибки "W: Target Packages … is configured multiple times" в Ubuntu Gnome 16.04 при выполнении команды sudo apt-get update
, необходимо понять причину такой ситуации и предложить методы для её устранения. Ошибка свидетельствует о существовании дублирующих строк в конфигурации репозиториев APT, что может вызвать неполадки при обновлении пакетов.
Теория
В Ubuntu система управления пакетами apt
использует файлы конфигурации для определения источников программного обеспечения. Основным файлом для хранения таких источников является /etc/apt/sources.list
, также используются файлы в директории /etc/apt/sources.list.d/
. Дублирование записей может происходить из-за ручного редактирования этих файлов или ошибок при установке/обновлении программного обеспечения.
Пример
В приведенном вами примере, сообщения об ошибке указывают, что определенные записи в /etc/apt/sources.list
повторяются на строках 33 и 87. Это создаёт конфликт, затрудняющий корректное выполнение команд обновления пакетов.
Применение
Есть несколько подходов для устранения данной проблемы:
-
Редактирование файла
/etc/apt/sources.list
вручную:- Откройте файл
/etc/apt/sources.list
с помощью текстового редактора, например, Vim или Nano:sudo nano /etc/apt/sources.list
- Найдите и удалите одну из дублирующихся строк (либо 33, либо 87), убедившись, что они действительно идентичны.
- Сохраните изменения и выйдите из редактора.
- Откройте файл
-
Использование графического интерфейса:
- Перейдите в "Системные настройки" > "Программы и обновления" > "Другое программное обеспечение" и удалите дублирующие записи из списка.
-
Автоматизация с помощью скрипта:
- Существуют скрипты, которые могут автоматизировать поиск и удаление дублирующихся записей, как, например,
aptsources-cleanup.pyz
, который можно загрузить с GitHub. - Установите необходимые зависимости:
sudo apt install python3-apt
- Скачайте скрипт и задайте ему права на выполнение:
chmod a+x aptsources-cleanup.pyz
- Запустите скрипт:
sudo ./aptsources-cleanup.pyz
- Следуйте инструкциям на экране.
- Существуют скрипты, которые могут автоматизировать поиск и удаление дублирующихся записей, как, например,
-
Использование утилиты
software-properties-gtk
для обновления репозиториев:- Переименуйте текущий файл конфигурации:
sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
- Запустите
software-properties-gtk
, выберите нужные источники и сохраните изменения:sudo software-properties-gtk
- Переименуйте текущий файл конфигурации:
-
Проверка директорий:
- Проверьте файлы в
/etc/apt/sources.list.d/
на наличие пересекающихся записей между разными файлами. Удалите или объедините дубликаты.
- Проверьте файлы в
После выполнения одного из методов, выполните sudo apt-get update
, чтобы убедиться в отсутствии ошибок. Эти шаги помогут вам восстановить корректную работу системы управления пакетами, минимизировать возможность возникновения аналогичных проблем в будущем и гарантировать безопасное обновление программного обеспечения на вашем устройстве.