Собираем свой arch linux

Сборка дистрибутивов инструкция для чайников

Да, если вы вдруг не знакомы со сборкой пакетов , то надо срочно познакомиться : Wiki_makepkg
Если не потребовались какие-либо сборочные зависимости ( если потребовались, то нужно будет доустановить соответствующие пакеты )
идем в ~/packages и видим там собранный пакет, и при этом он не установлен в вашей системе Радость то какая 🙂 . Но не спешите
радоваться все эти пакеты ( хочется надеяться что вы их собрали из Aur-а не один , а может и своих каких-нибудь пакетиков добавили ), надо еще
скормить вашей сборочнице.
4)Теперь результат ваших трудов в вашу локальную репу ( про локальные репы ссылка была выше , если возникли какие либо проблемы — спрашивайте )
Идем внутрь ее и делаем :

$ repo-add /home/user/local-repo/x86_64/local-repo.db.tar.gz /home/user/local-repo/x86_64/*.pkg.tar.xz

Естественно вместо user-а должен быть ваш логин ( можно наверное и ~ подсунуть вместо /home/user, ну и репа может называться как-нибудь по-другому , но
для простоты оставим все как есть ) теперь ваши пакеты проиндексированы, но сборочнмца все равно ничего о них не знает.
5) Сейчас мы это исправим. Небольшое лирическое отступление про сборочницу. Поскольку собирать вы все равно будете под root-ом или с правами root-а,
то сильно не рекомендую делать это в своем хомяке. Лучше вынести все это на отдельный раздел ( у меня выделен на это целый раздел винта ) , кстати виртуальные
диски VirtualBox я тоже запихал в этот раздел ( но в другую папку с правами своего пользователя ), теперь хомяк не будет распухать от этих не очень здоровых
экспериментов. Итак , идем в вашу сборочницу ( я надеюсь что вы сделали правильный выбор и скопировали туда профиль releng ) , открываем файл pacman.conf
и дописываем в него :

 [local-repo] SigLevel = Never Server = file:///home/user/$repo/$arch 

Естественно , вместо user , должен быть ваш логин.
Сохраняем изменения , теперь из вашей репы можно тащить пакеты в сборку.
На сегодня хватит, а то уже пальцы устали, продолжение в следующем номере :
Чайники для заполнения паузы читают документацию , знающие люди думают чем бы дополнить эту писанину 🙂
Продолжение инструкции

xxeddus avatar

kostyalamer
Целью темы является увеличение количества пользователей , которые смогут самостоятельно делать собственные сборки на основе Arch Linux

xxeddus
kostyalamer
Целью темы является увеличение количества пользователей , которые смогут самостоятельно делать собственные сборки на основе Arch Linux
А цель какая у этих сборок?

Цель этих сборок учебная, задача не поймать за человека рыбу, а дать ему удочку ( и научить ею пользоваться ), а уж что он там наловит — пескарей
или леща это как у кого пойдет. Чем больше будет думающих людей в разделе «Разработка» , тем интересней тут будет ( надеюсь не только мне ) .

Читайте также:  Coding in linux example

Вот только бы пояснить поточнее — зачем, точнее, для чего нужна эта собственная сборка?
— для реанимации системы? Нет смысла — имеется установочный archiso, но в принципе и он редко нужен, намного проще иметь 2-ую OC Linux, из которой это делать намного удобнее (хотя это на любителя).
— для выполнения спецработ? Но там нужен совсем другой специализированный soft и другой подход.
— в качестве переносной системы, например, на флэшке? Хотя и там другой подход.
— для приобретения знаний? Сомнительно, лучше учиться на чем то конкретном, что интересно и, главное, необходимо. Например, загрузка archiso непосредственно с образа, размещенного к примеру в корне системы . или написание самописного grub.cfg и другое. Знаний приобретется намного больше, а главное полезных.

EDIT 1 — в части чайников — все мы в какой-то мере/области чайники — все знать не возможно, но стремиться, конечно, в меру, к этому нужно.

Угу , все это напоминает старый анекдот : » Давайте подарим товарищу прапорщику на день рождения книгу . Зачем, у него уже одна есть «
Зачем люди программы на си пишут , ведь их уже столько на все случаи жизни, выбирай любую . А вообще есть хороший принцип —
«Научился сам, научи другого ( пока сам не забыл 🙂 )»

Источник

Arch build system (Русский)

Состояние перевода: На этой странице представлен перевод статьи Arch build system. Дата последней синхронизации: 21 мая 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Система сборки Arch (Arch build system, ABS) — схожая с портами система сборки программных пакетов из исходного кода. В отличие от pacman, который является инструментом управления двоичными пакетами, система сборки Arch — набор утилит для компилирования исходников в устанавливаемые .pkg.tar.zst пакеты.

Порты используются в ОС семейства BSD для автоматизации процесса сборки программ из файлов с исходным кодом. Порты помогают загружать, распаковывать, патчить, компилировать и устанавливать программы. Сам по себе порт является небольшим каталогом на компьютере пользователя, название которого совпадает с названием устанавливаемой программы. Этот каталог содержит файлы с инструкциями по установке и сборке программ. Благодаря этому установка сильно упрощается: как правило, необходимо лишь выполнить команду make или make install clean в каталоге порта.

Концепция системы сборки Arch во многом похожа. Она включает в себя коллекцию git-репозиториев для каждого пакета, доступного в Arch Linux. Каждый репозиторий содержит файл PKGBUILD (и иногда некоторые другие файлы), но в них нет ни исходников, ни двоичных файлов программ. При выполнении команды makepkg внутри каталога исходники программы загружаются и компилируются в двоичные файлы, которые затем упаковываются в пакет. После этого можно воспользоваться pacman, чтобы установить данный пакет в систему.

Читайте также:  Создать ярлык linux centos

Инструменты

Система сборки Arch опирается на несколько компонентов и инструментов, которые используются в процессе создания пакетов:

Репозиторий Набор каталогов, в которых хранятся необходимые для сборки всех официальных пакетов файлы — но не сами пакеты и не файлы с исходным кодом программ. Он доступен в виде git-репозиториев на Gitlab. Подробнее в разделе #Структура репозитория. PKGBUILD Bash-скрипт, в котором находится URL для скачивания файлов с исходным кодом, а также инструкции по их компиляции в двоичный код и упаковке. makepkg Утилита командной строки, которая читает PKGBUILD, автоматически скачивает файлы с исходным кодом, компилирует их и создаёт пакет .pkg.tar* (какой конкретно суффикс будет у пакета, определяется параметром PKGEXT в файле makepkg.conf ). makepkg также можно использовать для создания пакетов из AUR или сторонних источников, подробнее см. Создание пакетов. pacman pacman является полностью отдельным проектом, но он вызывается (утилитой makepkg или вручную) каждый раз при установке или удалении собранных пакетов, а также для установки зависимостей. AUR Пользовательский репозиторий Arch (Arch User Repository, AUR) — отдельное от официальных репозиториев хранилище файлов PKGBUILD, но пакеты из AUR можно собирать теми же инструментами. В AUR находятся тысячи поддерживаемых пользователями файлов PKGBUILD для программ, которые не имеют официального пакета Arch. Если вам нужен пакет, которого нет в официальных репозиториях, стоит поискать его в AUR.

Важно: Официальные файлы PKGBUILD разрабатываются исходя из предположения, что пакеты будут собираться в чистом chroot-окружении. Грязная cборка может привести к непредсказуемому поведению программы во время исполнения. Это связано с тем, что при сборке зависимости определяются динамически, и итоговый список зависит от того, какие пакеты были доступны на машине в момент сборки.

Структура репозитория

Файлы PKGBUILD для пакетов из официальных репозиториев core, extra, core-testing и extra-testing хранятся на Arch Linux Gitlab.

Каждый пакет находится в отдельном git-репозитории в пространстве имён archlinux/packaging/packages . В каждом репозитории есть файл PKGBUILD и файлы, используемые в официальных сборках. Также там можно найти некоторые файлы, которые используются разработчиками для процесса сборки.

Например, дерево каталогов для acl выглядит следующим образом:

acl ├── keys │ └── pgp │ ├── 259B3792B3D6D319212CC4DCD5BF9FEB0313653A.asc │ ├── 600CD204FBCEA418BD2CA74F154343260542DF34.asc │ └── B902B5271325F892AC251AD441633B9FE837F581.asc └── PKGBUILD

Исходного кода пакета здесь нет. Вместо этого файл PKGBUILD содержит URL, из которого исходный код будет загружен во время сборки.

Способы применения

Система сборки Arch позволяет автоматизировать некоторые задачи, связанные с компиляцией из исходников. Например:

  • Компиляция или перекомпиляция пакета;
  • Сборка из исходных кодов и установка программ, для которых ещё нет официального пакета (см. Создание пакетов);
  • Изменение существующих пакетов под свои нужды (включение или отключение опций, внесение исправлений);
  • Перестройка всей системы с использованием новых флагов компиляции «à la FreeBSD»;
  • Чистая сборка и установка собственного ядра (см. Ядро#Компиляция);
  • Создание модулей для вашего собственного ядра;
  • Компиляция и установка новой/старой/beta/devel версии Arch-пакета с помощью редактирования номера версии в PKGBUILD.
Читайте также:  Linux tcp connect timeout

Использование

Получение PKGBUILD

Для получения файла PKGBUILD можно использовать инструмент pkgctl или напрямую Git.

С помощью pkgctl

Установите пакет devtools , который предоставляет команду pkgctl — инструмент для работы с исходными файлами пакетов Arch Linux с использованием Git.

Чтобы склонировать git-репозиторий с актуальными исходными файлами пакета с помощью pkgctl , выполните:

$ pkgctl repo clone название-пакета 

Фраза «исходные файлы пакета» означает файл PKGBUILD и, возможно, некоторые другие необходимые для сборки файлы, такие как ключи. То есть это основные файлы, которые требуются для системы сборки Arch. Исходники оригинальной программы, например файлы C или Python, сюда не относятся.

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

Для получения определённой версии пакета можно использовать примерно такую команду:

$ pkgctl repo clone --switch="2:1.19.5-1" go

Смотрите pkgctl-repo-clone(1) для более подробной информации.

С помощью git напрямую

Используйте такую команду:

$ git clone https://gitlab.archlinux.org/archlinux/packaging/packages/название-пакета.git

Например, для получения исходных файлов пакета apache :

$ git clone https://gitlab.archlinux.org/archlinux/packaging/packages/apache.git

Сборка пакета

Перед сборкой пакета из файла PKGBUILD настройте makepkg в соответствии с указаниями из раздела makepkg#Настройка.

Скопируйте каталог с файлом PKGBUILD в другое место, отредактируйте его, если необходимо, после чего соберите пакет и установите его в систему, как описано в разделе makepkg#Использование.

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

Сохранение изменённых пакетов

При первом же обновлении системы pacman заменит модифицированный вами пакет на стандартный пакет с таким же названием из официальных репозиториев. Ниже описано, как этого не допустить.

Добавьте параметр groups в PKGBUILD пакета и укажите в нём группу modified .

Добавьте эту группу в раздел IgnoreGroup файла /etc/pacman.conf .

Если в официальных репозиториях появится новая версия этого пакета, то во время обновления системы pacman напечатает замечание, что он пропускает пакет, поскольку тот находится в разделе IgnoreGroup . После этого необходимо вручную обновить и пересобрать модифицированную версию пакета, чтобы ваша система не оказалась «частично обновлённой».

Другие инструменты

  • pbget — получение файлов PKGBUILD для конкретных пакетов прямо из веб-интерфейса. Также работает для AUR.

Источник

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