Репозиторий не содержит файла release kali linux
Для любого сервера необходимо иметь возможность оперативно получить актуальное свежее программное обеспечение. Я расскажу, как настраивать список репозиториев в Debian - добавлять, удалять, редактировать разные repository в sources.list. Разберем внимательно эту тему, обратив внимание на различные нюансы, которые присутствуют, как и в любом другом деле.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .Данная статья является частью единого цикла статьей про сервер Debian.
Цели статьи
- Рассмотреть различные ветки официальных репозиториев.
- Подробно рассказать, как настраивать репозитории в debian.
- Показать на примере, как настроить локальный репозиторий.
- Составить список актуальных репозиториев для старых версий Debian.
Введение
В первую очередь расскажу, что такое репозиторий (repository) своими словами. В общем случае это место, где хранятся и поддерживаются какие-то данные. Применительно к операционным системам и конкретно к Debian, репозиторий - это файловый сервер, который хранит у себя пакеты для установки на операционную систему . Это могут быть как пакеты программ, так и обновлений для сервера в виде новых ядер, системных утилит и т.д.
Существуют repository не только для операционных систем, но и для программ. Там могут быть как уже скомпилированные и готовые к установке пакеты, так и исходные коды программных продуктов. Большинство репозиториев содержат готовые пакеты. Это относится и к стандартным репозиториям Debian.
Помимо официальных списков реп (транскрипция от сокращения repo), есть сторонние, которые поддерживают производители программ либо энтузиасты. Нужно внимательно относиться к сторонним репозиториям, не добавлять их бездумно. Там может располагаться любое ПО, в том числе не то, что заявлено изначально. Либо они могут быть взломаны для размещения вредоносных программ.
Управлением пакетами и работой с repository lists в Debian занимаются отдельные утилиты:
- apt
- apt-get
- synaptic
- aptitude и др.
В данной статье мы не будем рассматривать их отличия, так как это тема отдельного повествования. Все они работают со стандартным списком источников, который в общем случае располагается в /etc/apt/sources.list.
Если у вас еще не настроен сервер с Debian, рекомендую мои материалы на эту тему:
Список репозиториев в sources.list
Изначально, содержимое sources.list будет зависеть от того, какой источник для пакетов вы выбрали во время установки debian. К примеру, в моем случае для системы Debian 10 он выглядит следующим образом.
Для Debian 11 bullseye немного изменился формат записи для репозитория security. Теперь он выглядит так:
В общем случае файл sources.list имеет следующую структуру:
deb и deb-src | тип архива, бинарные пакеты (deb) или пакеты с исходным кодом (deb-src) |
http://site.example.com/debian | url репозитория |
distribution | псевдоним релиза (bullseye, buster, stretch и т.д.), либо класс релиза (stable, oldstable и т.д.) |
component | main, contrib или non-free набор пакетов |
Про псевдонимы релизов и наборы пакетов мы поговорим ниже более подробно в соответствующем разделе.
Помимо основного файла sources.list, репозитории могут располагаться в отдельных файлах в директории /etc/apt/sources.list.d. Формат файлов такой же, как и у основного. Обычно туда добавляют отдельно в каждый файл набор источников для какой-то определенной программы. Например, proxmox размещает в отдельном файле свой платный репозиторий.
Типы официальных репозиториев в Debian
Как я уже показал выше, в sources.list используются псевдонимы, либо классы релиза, а так же разные ветки наборов пакетов. С псевдонимами релизов все понятно. Они названы в честь персонажей мультфильма История игрушек (Toy story) - Wheezy, Jessie, Stretch, Buster, Bullseye и т.д. А вот насчет классов релизов поговорим отдельно. Существуют следующие официальные классы релизов Debian.
Stable
Стабильная ветка официального текущего релиза Debian. То есть это самая свежая и актуальная версия, которую рекомендуется использовать. Официальный репозиторий стабильной ветки содержит проверенный набор программ, зачастую не очень свежих версий. Это плата за надежность. В production рекомендуется использовать пакеты именно из репозитория stable.
В этом репозитории регулярно публикуются все актуальные обновления текущего релиза. Он формируется из ветки Testing, которая в момент релиза новой версии превращается в Stable.
Oldstable
Oldstable - кодовое имя предыдущего stable repository. Для этого репозитория выпускаются обновления безопасности. Ветка Oldstable формируется из Stable предыдущего релиза на момент публикации нового.
Testing
Testing содержит в себе текущее состояние разработки нового стабильного релиза. После его выхода, testing становится stable. Пакеты в testing попадают из репы unstable. В общем случае использовать репозиторий testing следует только для тестовых целей, чтобы посмотреть на новый релиз.
Для этого можно сделать чистую установку текущего релиза, затем изменить repo со stable на testing и обновиться. Вы получите свежую версию тестового релиза, который готовится к выпуску.
Unstable (sid)
Sid это repository с самым свежим программных обеспечением. Проблема только в том, что оно еще не протестировано достаточным образом для использования. Если вы точно уверены, что вам нужен новый софт и он не сломает вам систему, можете поставить его из unstable репозитория. Но в общем случае, делать это не рекомендуется.
Даже если софт из unstable не повредит работе системы, он может нарушить зависимости пакетов, так что потом может быть затруднительно вернуться на stable repo.
Experimental
Experimental repository содержит пакеты и утилиты, которые в данный момент только разрабатываются и находятся в состоянии alpha версии. Этот репозиторий предназначен только для разработчиков и тестировщиков. Если будете его использовать в рабочей системе, с большой долей вероятности, сломаете ее.
Backports
Backports repository выступает как некий компромисс между стабильностью основной ветки и свежим набором программ из ветки testing. Репозиторий backports содержит пакеты преимущественно из testing и немного из unstable (только для обновлений безопасности).
Пакеты из backports там, где это возможно, устанавливаются без новых библиотек, которых нет в стабильной версии. Это сделано, чтобы можно было с большей вероятностью опять вернутся на stable, в случае необходимости.
Если вам нужен софт из веток testing и unstable, лучше использовать backports. Репозиторий создан как раз для того, чтобы не прыгать между этими ветками.
Это все, что касается деления репозиториев по классам релизов. Есть еще небольшое разделение, которое явно нигде не описано и сразу не догадаешься, как оно работает и устроено.
Важное замечание. Я не рекомендую в качестве репозиториев указывать классы релизов - stable, oldstable и т.д. Всегда явно указывайте название релиза - bullseye, buster, stretch и т.д. Иначе в случае выхода нового релиза, вы при обычном обновлении получите обновление релиза, даже если не собирались его обновлять.Security updates
Существует отдельный репозиторий только для security updates. Добавить его можно следующим образом:
Смысл этого repo в том, что сюда попадают только обновления безопасности и ничего другого. Вы можете настроить автоматическую установку пакетов из этого репозитория и не переживать о том, что что-то сломается. обновления сюда попадают максимально быстро после выпуска исправлений.
Stable-updates
Еще один отдельный репозиторий для установки пакетов через механизм stable-updates. Добавить его можно следующим образом.
Через этот repository вы будете по мере выпуска получать обновления, которые готовятся к публикации в очередном обновлении релиза. Так называемые Point Releases - 10.1, 10.2 и т.д. Случаются они не часто, примерно раз в 2-3 месяца, но проверенные для них обновления можно получить ранее как раз с помощью stable-updates.
Ветки main, contrib, non-free
Каждый официальный репозиторий Debian имеет по 3 ветки:
- main состоит из DFSG-compliant пакетов, которым не требуется другое ПО из других источников. Эти пакеты считаются частью дистрибутива Debian. Они полностью свободны для любого использования.
- contrib пакеты так же содержат DFSG-compliant ПО, но их зависимости могут требовать дополнительное ПО, которое может быть в других источниках, например ветке non-free.
- non-free содержит все остальное ПО, которое не соответствует DFSG.
DFSG - Debian Free Software Guidelines, критерии Debian по определению свободного ПО. В любом случае, пакеты из всех трех веток main, contrib и non-free полностью протестированы и подготовлены для работы с дистрибутивом Debian.
Теперь, зная всю теорию по репозиториям в Debian, мы можем проанализировать файл sources.list, который мы получили после установки. В нем подключены 3 репозитория с ветками main.
Это stable repo текущего релиза. Далее идет security repository для установки свежих обновлений безопасности.
И в завершении stable-updates для получения стабильных обновлений до очередного Point Release текущего дистрибутива.
Признаюсь честно, я много лет администрировал сервера с Debian, а до конца не понимал, что у меня записано в sources.list. Разобрался полностью только сейчас, когда писал статью. До этого просто копировал по привычке конфиги с репами. Догадывался о чем там речь, но точно не знал. Теперь восполнил пробел и поделился с вами информацией.
Добавить новый repository в debian
Теперь от теории перейдем к практике. Давайте вручную добавим новый репозиторий в Debian. К примеру, нам нужно установить на сервер стабильную версию MariaDB. Для этого добавим ее репозиторий. Это можно сделать либо в файле sources.list, но лучше создать отдельный в sources.list.d. Назовем его MariaDB.list.
После подключения репозитория, надо добавить его gpg ключ.
Теперь обновим кэш пакетов. Это нужно делать каждый раз после подключения нового репозитория.
Можно выполнить поиск пакета, чтобы убедиться, что новый репозиторий подключен.
Как я уже говорил, для настройки нового репозитория, вы могли просто добавить эти же 2 строки с параметрами в sources.list напрямую. Разницы никакой нет.
Зеркало официального репозитория yandex mirror
Repository yandex mirror можно так же использовать для сетевой установки систем.
Sources List Generator (генератор списка репозиториев)
В интернете есть сервисы, которые автоматически формируют sources.list на основе ваших потребностей. Вы можете использовать как свой генератор, так и воспользоваться готовым.
Я не знаю, кто ведет подобные List Generator и можно ли им доверять. Всегда проверяйте список репозиториев, который будет сгенерирован для вас. По сути, это обычный текстовый файл, который вы скопируете себе.
К примеру, я указал в List Generator, что мне надо подготовить список репозиториев со следующими параметрами:
- Репозиторий Stable
- Ветка main (просто отключил ветки contrib и non-free)
- Mirror - Russia
- Включить репозитории Security и Updates
- Добавить repo для софта - Docker, MariaDB, Nginx, NodeJS, Php, Webmin
В итоге получил вот такой sources.list
К нему еще список gpg ключей для импорта. В принципе, к списку у меня претензий нет. Все по делу. Нужно только проверить php и mariadb repository. Мне предложенные не знакомы.
В целом, я бы не рекомендовал использовать такие сервисы по генерации готовых списков. Я не вижу проблем, чтобы вручную все сделать и проконтролировать процесс.
Локальный репозиторий
Есть несколько способов создать локальный репозиторий Debian. Из того, что я пробовал, самым простым и удобным мне показался apt-mirror, но у него есть один баг, если его использовать как зеркало официальных репозиториев. Он не качает переводы в формате .gz и.xz, только .bz2. В итоге, когда будете использовать локальный репозиторий в качестве зеркала официального, получите ошибку:
Дальше создаем каталог для локального репозитория и конфиг.
Конфиг делаем примерно следующего содержания.
Выполняем инициализацию репозитория.
Теперь можно добавлять пакеты в локальный репозиторий следующей командой.
Для того, чтобы подключить локально новый репозиторий, его нужно добавить в sources.list.
После этого выполняете обновление кэша пакетов и увидите в списке репозиториев свой локальный.
Архив репозиториев для старых версий
Ниже представляю готовые настройки репозиториев для прошлых версий.
Debian 9 stretch
Репозитории Debian 9 stretch пока еще находятся в основных репозиториях:
В скором времени они тоже переедут в архив. Случится это в июне 2022 года, когда кончится период длительной поддержки. Тогда их можно будет подключить по следующим адресам:
Debian 8 jessie
Репозитории Debian 8 jessie:
Debian 7 wheezy
Репозитории Debian 7 wheezy:
Debian 6 squeeze
Репозитории Debian 6 squeeze:
Возможные ошибки
Рассмотрим наиболее популярные ошибки, которые возникают при добавлении и обновлении репозиториев.
Репозиторий не содержит файла Release
Текст ошибки, по идее, дает готовый ответ. В репозитории нет обязательного файла Release. Но суть в том, что он скорее всего есть. Дело тут чаще всего в том, что вы добавили к себе репозиторий, который не содержит указанной вами ветки. К примеру, вы добавили репозиторий в дистрибутив Buster, а в репозитории нет поддержки этого дистрибутива. Предыдущие есть, а этого нет.
Ровно эту же ошибку вы получите, если будете использовать старую, снятую с поддержки версию Debian. В какой-то момент стандартные репозитории перестанут поддерживать вашу версию дистрибутива и вы получите ошибку. Вам надо будет либо обновляться до более свежей версии, либо использовать архивные репозитории.
Заключение
Постарался собрать весь материал, который касается настройки репозиториев в Debian в одном месте. Если есть какие-то ошибки или неточности, а так же дополнения, прошу сообщить в комментариях. Писал все сам, нигде не переводил у других и не копировал. Постарался раскрыть тему своими словами максимально понятно.
Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.
Довольно часто при использовании сторонних PPA репозиториев во время обновления списка пакетов можно получить ошибку репозиторий не содержит файла release Ubuntu. Обычно она не мешает работе других репозиториев, но репозитории, которые выдают эту ошибку чаще всего не обновляются.
В этой небольшой статье мы разберем что означает эта проблема, а также пути ее решения. Статья ориентированна, в основном, на Ubuntu, но подойдет для Debian и всех основанных на нем или Ubuntu систем.
Файл Release - один из самых важных файлов для работы репозитория в Ubuntu. Когда утилита apt обновляет список пакетов, она открывает адрес репозитория и пытается прочитать файл Release. В нем содержится основная информация о репозитории, а также адреса файлов packages.gz, в которых находятся списки пакетов, ссылки где их можно найти и контрольные суммы. Если этого файла нет, то репозиторий подключить невозможно.
Причин этому может быть несколько. Либо репозиторий заброшен и больше не развивается, либо вы его неправильно настроили. В терминале эти ошибки обычно не мешают, а вот при попытке обновления через графический интерфейс могут возникнуть проблемы.
1. Нет ветки репозитория для вашей версии Ubuntu
Сначала убедитесь, что вы используете правильные репозитории для своего дистрибутива. Например, утилита apt-add-repository при добавлении PPA репозитория добавляет к его адресу кодовое имя дистрибутива. У репозитория нет отдельной ветки для вашей системы, то он не сможет быть добавлен. Нужно вручную указать то, кодовое имя, для которого есть ветка.
Например, если вы пытаетесь добавить репозиторий ubuntu-audio-dev стандартным способом в Ubuntu, то получите ошибку:
Зайдите на страницу этого PPA репозитория на Launchpad и проверьте есть ли версия для вашего дистрибутива. Как видите, здесь версии для Ubuntu 18.04 Bionic нет, есть только для Ubuntu 13.04 Raring:
Конечно, такое использование репозиториев не очень безопасно, но если вам очень нужно его добавить, то можно найти файл репозитория в /etc/apt/sources.list.d/ и заменить в нем bionic на raring:
Теперь, репозиторий загружается нормально
sudo apt update
Система сообщает только что невозможно пройти проверку подлиности ключа, возможно, срок его действия уже истек. Чтобы игнорировать проверку подлинности репозитория по GPG добавить в строку конфигурации репозитория такой параметр:
2. Вы используете старую версию системы
sudo vi /etc/apt/sources.list
Только тогда нужные пакеты будут доступны. Это все касается не только Ubuntu, но и других дистрибутивов, только кодовые имена там будут другими.
3. Удаление не работающих репозиториев
Если таким способом ошибку устранить не удалось, остается только удалить проблемный репозиторий, чтобы он не выводил каждый раз ошибки и не мешал обновлению через графический интерфейс. Отключить репозиторий можно через графический интерфейс. Для этого откройте окно "Программы и обновления":
Затем перейдите на вкладку "Другое ПО":
Здесь нужно снять галочки с проблемных репозиториев для их отключения.
Также можно удалить полностью репозиторий через терминал, выполнив команду:
sudo apt-add-repository --remove ppa://имя_репозитория/ppa
sudo apt-add-repository --remove ppa://ubuntu-audio-dev/ppa
Или еще можно удалить файл настроек репозитория из /etc/apt/sources.list.d/, но этот вариант не такой надежный, так, как в системе все еще останется ключ репозитория.
Выводы
Одним из нескольких способов установки программного обеспечения в Ubuntu является использование PPA или добавление сторонних репозиториев. Несколько волшебных строк, набранных в терминале, дают вам легкий доступ к программному обеспечению или его более новой версии, которая по умолчанию недоступна в Ubuntu.
Все выглядит здорово и даже великолепно, вы привыкли добавлять дополнительные сторонние репозитории и делаете это с закрытыми глазами, но однажды при обновлении Ubuntu сталкиваетесь с такой ошибкой:
N: Обновление из такого репозитория не может быть сделано безопасно, и поэтому отключено по умолчанию.
N: Посетите страницу мануала apt-secure(8) для создания репозитория и деталей конфигурации пользователя.
Понимание сути ошибки «Репозиторий не имеет файла релиза»
Эта ошибка в основном говорит вам, что, хотя вы добавили сторонний репозиторий в список источников вашей системы, этот новый репозиторий недоступен для вашей текущей версии Ubuntu.
Почему так? Потому что, вероятно, вы используете новую версию Ubuntu, а разработчики еще не сделали программное обеспечение доступным для этой новой версии.
На этом этапе я настоятельно рекомендую прочитать мои подробные руководства по репозиториям PPA и Ubuntu. Эти две статьи дадут вам лучшее, более глубокое и детальное понимание темы. Поверь мне, дорогой читатель, ты не будешь разочарован.
Как узнать, доступен ли PPA или сторонний репозиторий для вашей версии Ubuntu [Опционально]
Сначала вы должны проверить версию Ubuntu и его кодовое имя с помощью команды «lsb_release -a»:
Следующий шаг, который нам стоит сделать – это посетить сайт соответствующего программного обеспечения.
Следующая часть объяснения возможно не самая доступная для понимания, но все получится стоит приложить чуть-чуть терпения и усилий.
На веб-странице PPA вы можете перейти к разделу «Обзор опубликованных пакетов» и отфильтровать его по кодовому имени вашей версии Ubuntu:
Для сторонних репозиториев, не относящихся к PPA, вам необходимо проверить официальный веб-сайт программного обеспечения и посмотреть, доступен ли репозиторий для вашей версии Ubuntu или нет.
Что делать, если репозиторий недоступен для вашей версии Ubuntu
Если указанный репозиторий недоступен для вашей версии Ubuntu, вот что вы можете сделать:
· Удалите проблемный репозиторий из списка репозиториев, чтобы вы не видели ошибку при каждом запуске обновления.
· Получить программное обеспечение из другого источника (если это возможно).
Чтобы удалить проблемный репозиторий, запустите инструмент Software & Updates:
Перейдите на вкладку «Другое программное обеспечение» и найдите нужный репозиторий. Выделите его и нажмите кнопку «Удалить», чтобы удалить его из вашей системы.
Это удалит PPA или репозиторий, о котором идет речь.
Следующим шагом является получение программного обеспечения из какого-то другого источника, и тут все абсолютно субъективно и вариативно. В некоторых случаях вы все равно можете загрузить файл DEB с веб-сайта PPA и использовать программное обеспечение (пошаговую инструкцию я даю в руководстве по PPA). Кроме того, вы можете проверить веб-сайт проекта, на предмет существования Snap / Flatpak или Python версий искомого программного обеспечения.
Этичный хакинг и тестирование на проникновение, информационная безопасность
Оригинальные источники приложений (репозитории) являются главным залогом здоровья вашей Kali Linux. Предупреждение о том, что изменение/добавление новых репозиториев, как правило, убивает систему есть на официальном сайте. Многочисленный опыт свидетельствует, что огромное количество проблем вызвано ошибками в источниках приложений. Если у вас не работают стандартные инструкции по Kali Linux, которые работают у большинства других пользователей, то 99% причиной этого являются изменённые репозитории.
Самое главное, чтобы в репозиториях была строка:
и не было сторонних источников приложений.
В Kali Linux источники приложений прописаны в файле /etc/apt/sources.list. Нормальным, дефолтным его содержимым для Kali Linux Rolling является следующее:
Вы можете проверить, в порядке ли ваши репозитории следующей командой, она так и напишет — всё в порядке или есть проблемы:
Если есть проблемы, то начните с создания резервной копии:
Следующая команда исправит возможные проблемы (обратите внимание, что ВСЕ сторонние репозитории будут удалены и будет указан только официальный источник пакетов):
Эта команда полностью затрёт файл /etc/apt/sources.list и добавит туда одну строчку (вы можете это сделать и вручную — без моих больших команд):
После обновления репозиториев наберите эту команду — она обновит данные о доступных в репозиториях пакетах:
Связанные статьи:
факультете информационной безопасности от GeekBrains? Комплексная годовая программа практического обучения с охватом всех основных тем, а также с дополнительными курсами в подарок. По итогам обучения выдаётся свидетельство установленного образца и сертификат. По этой ссылке специальная скидка на любые факультеты и курсы!
Рекомендуется Вам:
13 комментариев to Проверка / восстановление / очистка репозиториев (источников приложений) Kali Linux Rolling
Вы лучшие! СПАСИБО!
После произведения вышеуказанных изменений:
- съехала графика в плане темы ОСи и шрифтов;
- 867 пакета kali отказывается обновлять:
- выдал несколько предупреждений типа:
Устаревшая версия 9.4
│
│ PostgreSQL версии 9.4 устарел, но пакет сервера или клиента все ещё
│ установлен. Пожалуйста, установите последние пакеты (postgresql-9.6 и
│ postgresql-client-9.6), и обновите ваши существующие кластеры с помощью
│ pg_upgradecluster (см. man-страницу).
│
│ Учтите, что установка postgresql-9.6 автоматически создаст кластер по
│ умолчанию 9.6/main. Если вы желаете обновить кластер 9.4/main, то должны
│ удалить существующий кластер 9.6 с помощью pg_dropcluster --stop 9.6
│ main (см. man-страницу).
│
│ Старые пакеты сервера и клиента более не поддерживаются. После
│ обновления существующих кластеров, пакеты postgresql-9.4 и
│
│ <Ok>
- несколько раз спросил, обносить ли пакет или оставить прежним, было выбрано обновить.
В результате вопрос: что является нормой, а что проистекло от моих кривых ручек?
Комментарий попал в спам, поэтому отвечаю только сейчас.
А у вас точно Kali Linux Rolling? И точно не добавляли сторонние репозитории? («Предупреждение о том, что изменение/добавление новых репозиториев, как правило, убивает систему есть на официальном сайте»).
И если у вас Kali Linux Rolling, то вы её скачивали с оф.сайта?
Вот, восстановка пакетов, авось поможет:
sudo apt-get --fix-broken install
sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get autoremove
sudo dpkg --configure -a
sudo apt-get update
Добрй день! Вы решили свою проблему? Если да то каким образом?
на любую следующую команду мне выдает :
E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock - open (11: Ресурс временно недоступен)
E: Не удалось выполнить блокировку управляющего каталога (/var/lib/dpkg/); он уже используется другим процессом?
- система действительно обновляется или проверяет обновления в фоновом режиме. Если вы только загрузились, то подождите 5-10 минут и попробуйте снова
- предыдущее обновление было завершено некорректно (например, прервано перезагрузкой) и остались файлы блокировки, хотя никаких обновлений не ведётся.
Во втором случае просто удалите мешающие файлы:
После этого, если предыдущее обновление было прервано некорректно, то система напишет, что нужно сделать (какую команду выполнить).
Читайте также: