Восстановите стандартные репозитории apt в sources.list из командной строки

17

Я ищу лучший способ восстановить /etc/apt/sources.listнастройки по умолчанию из командной строки.

Нет ли способа ссылаться на исходный код пакета, который генерирует этот файл или что-то в этом роде? Я хочу надежный и независимый от версии способ восстановления этого файла.

Решения исключены

Прежде чем отметить это как дубликат, обратите внимание, что я уже рассмотрел этот вопрос . Это применимо, только если у вас есть графический интерфейс Ubuntu. Этот вопрос специфичен для командной строки.

Я также рассмотрел этот вопрос, где принятое решение - кто-то вставил содержимое своего sources.listфайла. Это неправильный способ восстановления файла, поскольку намерения лица, предоставляющего содержимое файла, невозможно проверить, и файл может быть изменен в новых выпусках.

Я проверил генератор на simplelinux.ch , но он также не из Ubuntu, поэтому я не планирую его использовать.

Райан Бернетт
источник

Ответы:

19

Я не уверен, что вы хотите, но:

  • Родительский репозиторий всегда http://archive.ubuntu.com/ubuntu - все остальное является отражением этого. Все остальные первичные зеркала имеют домен в форме <cctld>.archive.ubuntu.com, где двухсимвольный короткий код - это домен верхнего уровня с кодом страны . Вы можете найти дополнительные зеркала с их статусом на Launchpad .
  • Кодовое название распределения является частью канала (третий термин). Вы можете использовать это, lsb_release -scчтобы узнать это, и это первое слово в названии релиза в нижнем регистре (например, trustyдля Trusty Tahr).
  • Есть пять каналов: <codename>, <codename>-security, <codename>-updates, <codename>-backportsи <codename>-proposed. Первый необходим, поскольку он является базовым, второй настоятельно рекомендуется, поскольку он содержит исправления безопасности, четвертый - только если вам нужен какой-либо пакет, перенесенный из более новой версии, и пятый - только если разработчик просит вас включить его для тестирования возможных фикс.
  • Есть четыре хранилища разделов: main, multiverse, universeи restricted( В чем разница между мультивселенной, вселенной, ограниченной и главный? )

Таким образом, вы всегда можете создать сейф, sources.listкоторый содержит только:

deb http://archive.ubuntu.com/ubuntu <codename> main multiverse universe restricted
deb http://archive.ubuntu.com/ubuntu <codename>-security main multiverse universe restricted

Если вы хотите, чтобы команда сделала это:

printf 'deb http://archive.ubuntu.com/ubuntu %s main multiverse universe restricted\n' $(lsb_release -sc){,-security} > /etc/apt/sources.list

В дополнение к списку Launchpad, список, предоставленный программой Software Sources /usr/share/python-apt/templates/Ubuntu.mirrors, взят из python-apt-commonпакета. Этот пакет является только косвенной зависимостью Предлагаетapt , поэтому он не может быть установлен по умолчанию на сервере.

Мур
источник
Это именно то, что я хотел уточнить. Спасибо!
Райан Бернетт
это идеально подходит для обоих постов (один связан и этот)
Брайан Томас
Но вам все равно придется подтвердить этот ответ документацией на веб-сайте Ubuntu, поскольку вы не можете проверить намерения лица, предоставляющего этот ответ?
Герберт Ван-Влит
7

Если вы понимаете, что означает каждая строка /etc/apt/sources.list, вы можете создать свой собственный список. Например, строка в моем sources.list,

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

Имеет 4 раздела:

  • Раздел 1: Первый раздел находится debздесь, что означает, что он является хранилищем всех бинарных пакетов. Единственное другое возможное значение - deb-srcэто хранилище исходных кодов.
  • Раздел 2: Этот раздел содержит URI хранилища ( в данном случае http://us.archive.ubuntu.com/ubuntu/ ). URI может отличаться для зеркал, например, если вы хотите использовать официальное зеркало США, тогда URI будет http://us.archive.ubuntu.com/ubuntu/ .
  • Раздел 3: содержит кодовое имя (и название канала) используемой вами версии, в данном случае trustyэто кодовое имя моей версии Ubuntu (14.04 LTS). Вы можете найти свой по lsb_release -sc. Например, если вы используете 12.04, кодовое имя будет «точным». Теперь, чтобы объявить другие каналы, например, чтобы объявить канал безопасности, вам нужно использовать trusty-security.

  • Раздел 4: Этот раздел содержит «имена разделов» хранилища. Есть , как правило , 4 названия разделов используются: main, restricted, universe, multiverse. Вы можете поместить все имена разделов в одну строку объявления репозитория или использовать разные строки для каждого раздела, но не должно быть повторяющихся записей. Если вы прочитаете /etc/apt/sources.list, то увидите описание пакетов, которые содержит каждый из этих разделов.

heemayl
источник