Подробный гайд по настройке sources.list в ALT Linux для работы apt-get build-dep
Сборка пакетов в ALT Linux имеет свою специфику, так как дистрибутив использует пакетный менеджер apt-rpm (а не классический Debian apt).
Главное правило для работы команды apt-get build-dep (или apt build-dep) в ALT Linux: чтобы система могла прочитать зависимости для сборки (BuildRequires), в sources.list обязательно должен быть подключен компонент исходных кодов — src.
Шаг 1. Понимание синтаксиса sources.list в ALT Linux
В отличие от Debian/Ubuntu, где исходники подключаются через deb-src, в ALT Linux используется единая строка rpm, в которой перечисляются архитектуры и компоненты. Чтобы подключить репозиторий исходников (SRPM), нужно просто добавить компонент src в конец строки.
Файл для редактирования: /etc/apt/sources.list (или файлы в /etc/apt/sources.list.d/).
Шаг 2. Настройка sources.list
Откройте файл от имени суперпользователя:
su -
nano /etc/apt/sources.list
Ниже приведены готовые примеры строк для разных веток ALT Linux. Обратите внимание на src в самом конце каждой строки.
Для стабильной ветки p10 (рекомендуется для продакшена):
rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/p10/ x86_64 classic i586 noarch src
Для стабильной ветки p11 (если вы используете новый релиз):
rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/p11/ x86_64 classic i586 noarch src
Для нестабильной ветки Sisyphus (rolling release):
rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/ x86_64 classic i586 noarch src
Важные нюансы синтаксиса:
x86_64— ваша основная архитектура.classic— основной компонент с пакетами.i586иnoarch— обязательно оставьте их, даже если у вас 64-битная система. Многие зависимости для сборки (особенно скрипты, документации или 32-битные библиотеки для multilib) лежат именно в этих компонентах. Без нихbuild-depможет выдать ошибку о нехватке пакетов.src— тот самый компонент, который содержит метаданные SRPM-пакетов, необходимые дляbuild-dep.
Если вы используете утилиту apt-repo для управления репозиториями, она генерирует файлы в /etc/apt/sources.list.d/apt-repo.list. Вы можете отредактировать этот файл, добавив src в нужные строки, либо просто прописать строки напрямую в /etc/apt/sources.list.
Шаг 3. Обновление кэша пакетов
После сохранения файла обновите списки пакетов. apt скачает индексы не только бинарных пакетов, но и индекс исходников (Sources для компонента src):
apt-get update
Если в выводе вы видите, что скачиваются данные для компонента src (обычно это видно по размеру или упоминанию src в логе), значит, всё настроено верно.
Шаг 4. Использование build-dep
Теперь, когда репозитории исходников подключены, вы можете установить все зависимости для сборки любого пакета.
Синтаксис:
apt-get build-dep <имя_пакета>
Пример:
Допустим, вы хотите пересобрать mc (Midnight Commander) или firefox.
apt-get build-dep mc
Команда найдет SRPM-пакет mc, прочитает теги BuildRequires: из его .spec файла и установит все необходимые бинарные пакеты (компиляторы, библиотеки для разработки, утилиты) из репозиториев classic, i586 и noarch.
Шаг 5. Полный цикл пересборки пакета (Бонус)
Поскольку build-dep — это только первый шаг, вот как выглядит стандартный workflow сборки пакета в ALT Linux после настройки репозиториев:
1. Устанавливаем зависимости:
apt-get build-dep mc
2. Скачиваем исходный код (SRPM) и распаковываем его:
В ALT Linux для работы с исходниками настоятельно рекомендуется использовать утилиту gear (входит в пакет gear).
apt-get source mc
Эта команда скачает .src.rpm и распакует его в текущую директорию (создастся папка с именем пакета, внутри которой будут .spec файл, патчи и архив с исходниками).
3. Переходим в директорию с исходниками:
cd mc-*
4. Собираем пакет:
В ALT Linux сборка выполняется через gear или rpmbuild.
gear build
Альтернатива (классический rpmbuild):
rpmbuild -bb mc.spec
5. Готовые RPM-пакеты появятся в директории RPMS/ (или x86_64/), а SRPM — в SRPMS/.
Возможные проблемы и их решение (Troubleshooting)
1. Ошибка E: Build-Depends dependency for <pkg> cannot be satisfied because no providers of "<dep>" are available
Причина:
В sources.list не указан компонент src, либо не указаны компоненты i586/noarch.
Решение:
Проверьте строки в sources.list по образцу из Шага 2 и выполните apt-get update.
2. Пакет не найден при apt-get source <pkg>
Причина:
Пакет находится не в компоненте classic, а, например, в extra, kernel или gnome.
Решение:
Добавьте нужный компонент в строку sources.list.
Например, для пакетов GNOME:
... x86_64 classic gnome i586 noarch src
3. Не хватает прав для сборки
- Убедитесь, что у вашего пользователя есть права на запись в директорию, где вы распаковываете исходники, и что установлены базовые инструменты:
rpm-build,gear,apt-repo.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.