Alt linux установка из исходников

Краткое руководство по сборке пакета

Данное руководство поможет вам самостоятельно создать свой RPM-пакет в дистрибутивах ALT Linux. Больше информациx о тонкостях сборки пакетов и их сопровождению вы можете найти в разделах Руководства и Справочники.

Подготовка к сборке пакета

Помимо желания собрать пакет вам необходимы:

Исходный код

Исходный код для пакета вы можете скачать из Интернета. Предположим, вы скачали архив с исходным кодом foo-1.2.3.tar.gz

Доступ к репозиторию

Вам также потребуется доступ к репозиторию (для сборки необходимы зависимые пакеты). Идеальный вариант — копия Sisyphus или необходимого бранча. Однако можно использовать и удалённый репозиторий. Организация доступа к репозиторию будет рассмотрена ниже.

Сборочная среда

1. Установите программы для сборки пакетов:

apt-get install rpm-build gear

Возможно, понадобятся: hasher, rpm-build-licenses и rpm-utils

2. Подготовьте место на жёстком диске. Минимум 2 Гб. Крайне рекомендуется производить сборку на файловой системе tmpfs — скорость сборки может вырасти в несколько раз! Для использования этого варианта начинайте с size=2300m.

Создайте в домашнем каталоге файл .rpmmacros (обязательна точка в начале) примерно такого содержания:

%_packager Vassily Poupkine

В этом файле также можно указать ключи подписи пакетов (если вы собираетесь выкладывать пакеты в репозитории), макросы сборки и прочие полезные параметры.

Репозиторий Gear

Подготовьте репозиторий gear (являющийся частным случаем git-репозитория). Это необходимое условие для правки уже существующих пакетов и просто удобный инструмент для хранения ваших изменений:

Новый пакет

Если вы создаёте новый пакет «с нуля», выполните следующие команды для подготовки git-репозитория:

mkdir foo cd foo git init

В директории foo, в поддиректории .gear создайте файл .gear/rules со следующим содержимым:

Распакуйте архив с исходным кодом:

gear-update -c /path/to/foo-1.2.3.tar.gz foo

Напишите .spec-файл (спек). Спек-файл — текстовый файл с набором инструкций по сборке пакета RPM.

Документация по написанию спека

Существующий пакет

Для изменения существующего пакета необходимо получить его исходный код. Исходный код находится в одном из двух мест:

  • в gear-репозитории майнтайнера на git.alt, если майнтайнер пользуется gear
  • в архиве репозиториев сизифа, если майнтайнер gear не пользуется.

gear-репозиторий майнтайнера

Найдите на packages.altlinux.org интересующий вас пакет и посмотрите на репозитории на вкладке Gear. Их может быть больше одного, если над пакетом работает несколько человек. При отсутствии информации о том, кто сейчас ведёт разработку пакета, стоит взять репозиторий того, кто собирал его в последний раз. URL для клонирования репозитория указан в web-интерфейсе. К примеру, для keyjnote:

Читайте также:  Get file owner linux

Архив репозиториев сизифа

Если gear-репозитория у майнтайнера нет, то придётся воспользоваться архивом Sisyphus. Для этого в браузере откройте http://git.altlinux.org/archive/ и найдите нужный вам пакет (к примеру, пакет kmymoney2 располагается в http://git.altlinux.org/archive/k/kmymoney2.git). URL для клонирования пакета указан в web-интерфейсе репозитория. Скажем, для kmymoney2:

Обновление исходного кода

Обновите исходный код из скачанного архива (команда выполняется в gear-репозитории):

gear-update /path/to/kmymoney2-0.9.2.tar.bz2 kmymoney2

Обновите версию и changelog в .spec-файле (вручную, в разделе %changelog или с помощью утилиты add_changelog).

Фиксирование изменений

Чтобы зафиксировать все ваши изменения, выполните:

Появится окно редактора (по умолчанию — vi, вызываемый редактор определяется переменной окружения EDITOR, многие начинающие предпочитают export EDITOR=mcedit) с версией и текстом последней записи changelog. Если нужно, поправьте текст, сохраните изменения и выйдите из редактора. Строки, начинающиеся с символа #, будут проигнорированы. Если выйти без сохранения, то изменения зафиксированы не будут.

Примечание: Changlelog вносится через редактор Vim. Чтобы в Vim сохранить изменения и выйти нужно ввести :wq и нажать Enter

Сборка

Среда сборки попытается собрать пакет в изолированной среде hasher. Если в процессе сборки возникнут ошибки — исправьте их и обязательно зафиксируйте изменения. В случае удачной сборки будут созданы пакеты:

  • в каталоге $TMP/repo/SRPMS.hasher/ — исходные пакеты .src.rpm
  • в каталоге $TMP/repo/i586/RPMS.hasher/ — собранные бинарные пакеты

Примечание: архитектура (i586) может отличаться названием в зависимости от настроек Hasher и сборочного компьютера.

Внимание! При перезагрузке tmpfs очищается, поэтому скопируйте пакеты в безопасное место.

Источник

Сборка пакета с РЕАЛЬНОГО НУЛЯ

0. Лезем за исходниками — либо в тарболле, либо напрямик с гита:

git clone wget или же скачиваем снапшот с того же sourceforge
tar xvzf ИмяАрхива.tar.gz / xz

0.1. Приводим название каталога с исходниками к виду «ИмяПакета»

1. Переходим в созданный репозиторий

2. Инициализируем локальный репозиторий:

3. Создаём каталог для файла правил gear:

4. Создаём файл с правилами для gear:

5. Заполняем созданный файл согласно полиси

Самый простой вариант tar.gz: . - исходники упаковываются со сжатием copy: *.patch - скопировать в выходной тарболл патчи (по тому же принципу копируем и файлы локализации и пр.)

6. Создаём или кладём к исходникам спек-файл

cp ИмяПакета.spec ИмяПакета/ИмяПакета.spec
Source: %name-%version.tar.gz %setup -n %name-%version

7. Говорим git’у, что нужные файлы добавлены:

Читайте также:  Проверить нагрузку процессора linux

8. Зовём gear записать изменения

9. В открывшемся текстовом редакторе, в самом начале, пишем описание коммита:

A. Создаём удалённый репозиторий:

ssh git.alt init-db ИмяПакета

B. Пробуем связаться с удалённым сервером (и получаем по лбу, ибо доступа пока что нету 🙂 )

git remote add origin git.alt:packages/ИмяПакета.git

C. На удалённый репозиторий добавляется всё, что у нас есть, и закрепляется:

C.0. ВНИМАНИЕ! Перед добавлением подписанного тэга стоит проверить, собирается ли пакет вообще. Для этого попробуем собрать пакет локально и без отправки в Сизиф (ключей-то нету. ):

gear --hasher -- hsh --no-sisyphus-check

Не собралось? Не беда, исправляем ошибку и запускаем сборку, но уже без необходимости собирать песочницу заново:

gear --hasher -- hsh-rebuild --no-sisyphus-check

D. Создаём подписанный тэг

git tag -s -m "ИмяПакета-0.1-alt1" ИмяПакета-0.1-alt1

Источник

Руководство по сборке RPM-пакетов для дистрибутивов Альт

Мы хотим обратить Ваше внимание на то, что для успешного прохождения руководства необходимо внимательно читать текст и уделять внимание деталям. Каждый раздел содержит информацию, которая поможет Вам понять процесс сборки пакетов и улучшить свои навыки в этой области.

В тексте документации присутствуют ссылки на дополнительную информацию. Мы настоятельно рекомендуем Вам переходить по этим ссылкам и ознакомляться с материалами более подробно. Это поможет Вам лучше понимать темы, раскрытые в руководстве, и получить полезную дополнительную информацию.

PDF Версия

Структура документации

Перед тем, как приступить к сборке, нужно создать структуру каталогов, необходимую RPM, находящуюся в Вашем «домашнем» каталоге:

$ tree ~/RPM/ /home/user/RPM/ |-- BUILD |-- BUILDROOT |-- RPMS | |-- i586 | |-- x86_64 | `-- noarch |-- SOURCES |-- SPECS `-- SRPMS
Name: bello Version: Release: alt1 Summary:
  • — команды без административных привилегий будут начинаться с символа “$”
  • — команды с административными привилегиями будут начинаться с символа “#”
# control sudowheel enabled

Вклад в руководство

Вы можете внести свой вклад в это руководство, отправив запрос на принятие изменений (Pull Request) в репозиторий.

Установка необходимых пакетов для процесса сборки

Чтобы следовать данному руководству, Вам потребуется установить следующие пакеты:

# apt-get update Получено: 1 http://ftp.altlinux.org p10/branch/x86_64 release [4223B] Получено: 2 http://ftp.altlinux.org p10/branch/x86_64-i586 release [1665B] Получено: 3 http://ftp.altlinux.org p10/branch/noarch release [2844B] Получено 8732B за 0s (81,8kB/s). Найдено http://ftp.altlinux.org p10/branch/x86_64/classic pkglist Найдено http://ftp.altlinux.org p10/branch/x86_64/classic release Найдено http://ftp.altlinux.org p10/branch/x86_64/gostcrypto pkglist Найдено http://ftp.altlinux.org p10/branch/x86_64/gostcrypto release Найдено http://ftp.altlinux.org p10/branch/x86_64-i586/classic pkglist Найдено http://ftp.altlinux.org p10/branch/x86_64-i586/classic release Найдено http://ftp.altlinux.org p10/branch/noarch/classic pkglist Найдено http://ftp.altlinux.org p10/branch/noarch/classic release Чтение списков пакетов. Завершено Построение дерева зависимостей. Завершено # apt-get install gcc rpm-build rpmlint make python gear hasher patch rpmdevtools

Введение в пакетные менеджеры

RPM — это семейство пакетных менеджеров, применяемых в различных дистрибутивах GNU/Linux, в том числе и в проекте Сизиф и в дистрибутивах Альт. Практически каждый крупный проект, использующий RPM, имеет свою версию пакетного менеджера, отличающуюся от остальных.

  • наборе макросов, используемых в .spec-файлах,
  • различном поведении RPM при сборке «по умолчанию» — при отсутствии каких-либо указаний в .spec-файлах,
  • формате строк зависимостей,
  • мелких отличиях в семантике операций (например, в операциях сравнения версий пакетов),
  • мелких отличиях в формате файлов.
Читайте также:  Linux занято все дисковое пространство

Для пользователя различия чаще всего заключаются в невозможности поставить «неродной» пакет из-за проблем с зависимостями или из-за формата пакета.

RPM в проекте Сизиф также не является исключением. Основные отличия RPM в Альт и Сизиф от RPM других крупных проектов заключаются в следующем:

  • обширный набор макросов для сборки различных типов пакетов,
  • отличающееся поведение «по умолчанию» для уменьшения количества шаблонного кода в .spec-файлах,
  • наличие механизмов для автоматического поиска межпакетных зависимостей,
  • наличие так называемых set-version зависимостей (начиная с 4.0.4-alt98.46 ), обеспечивающих дополнительный контроль за изменением ABI библиотек,
  • до p8 и выпусков 8.x включительно — очень древняя версия «базового» RPM (4.0.4), от которого началось развитие ветки RPM в Sisyphus (в Sisyphus и p9 осуществлён частичный переход на rpm 4.13 ).

Основные команды RPM

Для ознакомления с данным разделом потребуется пакет. В качестве примера мы будем использовать пакет Yodl-docs.

После скачивания пакета можно посмотреть данные о нём перед установкой. Для этого используется -qip, (Query|Install|Package)чтобы вывести информацию о пакете.

$ rpm -qip yodl-docs-4.03.00-alt2.noarch.rpm
Name : yodl-docs Epoch : 1 Version : 4.03.00 Release : alt2 DistTag : sisyphus+271589.100.1.2 Architecture: noarch Install Date: (not installed) Group : Documentation Size : 3701571 License : GPL Signature : DSA/SHA1, Чт 13 мая 2021 05:44:49, Key ID 95c584d5ae4ae412 Source RPM : yodl-4.03.00-alt2.src.rpm Build Date : Чт 13 мая 2021 05:44:44 Build Host : darktemplar-sisyphus.hasher.altlinux.org Relocations : (not relocatable) Packager : Aleksei Nikiforov Vendor : ALT Linux Team URL : https://gitlab.com/fbb-git/yodl Summary : Documentation for Yodl Description : Yodl is a package that implements a pre-document language and tools to process it. The idea of Yodl is that you write up a document in a pre-language, then use the tools (eg. yodl2html) to convert it to some final document language. Current converters are for HTML, ms, man, LaTeX SGML and texinfo, plus a poor-man's text converter. Main document types are "article", "report", "book" and "manpage". The Yodl document language is designed to be easy to use and extensible. This package contais documentation for Yodl.

Для установки используется параметр -ivh (Install|Verbose|Hash).

$ rpm -ivh yodl-docs-4.03.00-alt2.noarch.rpm

Источник

Оцените статью
Adblock
detector