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

Пакет Devtools изначально был создан для доверенных пользователей, чтобы правильно создавать пакеты для официальных репозиториев. Тем не менее, он может использоваться как обычными пользователями, так и для создания пакетов AUR или даже модифицированных официальных пакетов.

Обратитесь к этому руководству для понимания и использования AUR в целом, включая получение PKGBUILD. Этот документ показывает только шаги, специфичные для Devtools, если это метод, который вы выбрали для компиляции пакета.

Devtools поддерживает отдельную чистую установку Arch, расположенную в /var/lib/archbuild/<TARGET>/root, которая содержит только группы пакетов baseи base-devel. Если эта чистая установка не существует, она автоматически создает ее. Если он существует, он автоматически обновляет все пакеты в нем. Когда Devtools используется для сборки пакета, он запускается с копии этой чистой установки, устанавливает необходимые пакеты только в копию, копирует в нее исходный код, выполняет в нем компиляцию и упаковку и только копирует полученный пакет, в том же виде, что и в официальных репозиториях.

У Devtools есть свои преимущества перед makepkgнепосредственным запуском . Одним из преимуществ является то, что base-develи другие пакеты, необходимые для компиляции, но не для запуска, пакет, который вы делаете, никогда не попадет в вашу основную систему. Это меньше пакетов, которые нужно периодически обновлять, и есть проблемы. Несмотря на то, что в первую очередь преимущество для сопровождающих пакетов Arch, этот процесс легко раскрывается, когда PKGBUILDневерно a , например, если в списке пропущена зависимость, которая, как оказалось, сопровождающая уже установлена ​​в их основной системе. Вы также можете использовать компьютер, который быстрее собирает пакеты, и скопировать полученный пакет на более медленный компьютер, который будет его запускать, не загрязняя установку строительного компьютера.

Основным недостатком является то, что всегда есть чистый корень, занимающий около 800 МБ, и обычно одна копия занимает больше места. Обратите внимание, что если /var/lib/archbuild/используется Btrfs, копия чистого корня начинаетс�� со снимка Btrfs, поэтому эти файлы не занимают двойного пространства. Чистый корень всегда хранится там, чтобы не переустанавливать его каждый раз при создании пакета.

Компиляция с использованием Devtools

Установите Devtools:

# pacman -S devtools

Devtools включает в себя создание пакета, archbuildно вы не запускаете его напрямую. Он также включает в себя символические ссылки {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. Символьная ссылка, используемая для запуска, будет проверена archbuild, чтобы определить, какую цель вы хотите использовать. Он может быть запущен для использования этих нестабильных / промежуточных / тестовых репозиториев, которые могут иметь более новые версии, чем выпущенные в официальных репозиториях. Чтобы использовать официальные репозитории для пакетов не AUR, в каталоге с PKGBUILD, например, каталогом, созданным пользователем git clone, выполните следующее:

$ extra-x86_64-build

Примечание: остальная часть этого руководства будет просто ссылаться на extra-x86_64-build.

После того, как он завершит работу, будут получены следующие результаты:

  • /var/lib/archbuild/extra-x86_64/root- Чистый chroot , который является современной установкой только с группами пакетов baseи base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Это будет содержать сборку chroot . Это копия чистого chroot со всеми зависимостями, необходимыми для сборки или запуска создаваемого пакета, а также с его исходным кодом, результатами компиляции и пакетом.
  • Каталог, в котором вы находитесь, будет содержать пакет и файлы журнала сборки, а также любой загруженный исходный код.

В конце вы можете заметить « Checking PKGBUILD» и « Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz». Любые строки после них выводятся из namcap, что автоматически ищет проблемы, такие как искаженные PKGBUILDфайлы, зависимости, включенные в то, что пакет, по-видимому, не использует, зависимости, не включенные в то, что пакет использует, и многое другое. Ложные срабатывания часто генерируются namcap, но это отличный инструмент для того, чтобы дать информацию для расследования. Если ваш пакет работает правильно, не стоит предупреждать сопровождающего о namcapвыводе, если вы не изучили его и не убедились, что необходимо внести изменения.

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

Либо используйте локальный репозиторий, как описано здесь , либо установите файл напрямую:

# pacman -U <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz

Если вам нужно будет запустить extra-x86_64-buildснова, прямо сейчас или в любое время позже с этим или другим пакетом, он обновит чистый chroot, если необходимо, удалит сборочный chroot и сделает его новой копией чистого chroot, и выполнит тот же процесс. Если в вашем каталоге все еще есть исходный код, загруженный с прошлого раза, он будет использовать его. Если пакет является развивающим пакетом AUR, он будет извлекать новые изменения, а не перекодировать.

Внутренне extra-x86_64-buildработает makechrootpkg, что внутренне вызывает makepkg. Варианты для extra-x86_64-buildвключают в себя следующее:

  • -c: Очистите chroot, удалив и воссоздав весь /var/lib/archbuild/extra-x86_64/каталог, включая его чистый chroot и все каталоги сборки chroot. Это редко требуется, только если чистый chroot поврежден или Devtools обновлен таким образом, что нарушает обратную совместимость.
  • -r <dir>: Используйте другой каталог, чем /var/lib/archbuild/extra-x86_64/для хранения chroot.

Все аргументы extra-x86_64-buildпосле --передаются makechrootpkg, когда он внутренне использует его. Несколько аргументов всегда автоматически передаются из extra-x86_64-buildв makechrootpkg. Эти автоматические аргументы есть -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. Они говорят makechrootpkgудалить chroot сборки и сделать его новой копией чистого chroot, и запускать namcapпакет, если он успешно собирается. Широко используемый вариант , который может быть передан makechrootpkgв -l <copy name>. Это имя каталога, чтобы вместо него использовать chroot сборки <USERNAME>, что полезно для поддержки нескольких копий или компиляции нескольких пакетов одновременно.

Все аргументы makechrootpkgпосле --передаются makepkg, когда он внутренне использует его для сборки пакета. Первый раз makepkgзапускается makechrootpkgс помощью своих собственных неизменяемых опций, чтобы загружать исходные файлы, если необходимо, и выполнять проверки целостности; таким образом, ничто не может быть передано в этом пробеге. Он запускается makepkgво второй раз для сборки пакета и всегда автоматически передает makepkgаргументы, --syncdeps --noconfirm --log --holdver --skipintegкоторые говорят, makepkgчтобы в пределах chroot сборки автоматически установить недостающие зависимости, необходимые для сборки и использования пакета, не запрашивать подтверждения во время pacman, записать процесс сборки в текст в дополнение к файлам stdout, не обновляйте исходный код, если в системе контроля версий, и не выполняйте проверки исходного файла.

Вы можете связать их вместе, используя следующую форму:

$ extra-x86_64-build <DEVTOOLS-OPTIONS> -- <MAKECHROOTPKG-OPTIONS> -- <MAKEPKG-OPTIONS>

Обратите внимание, что /var/lib/archbuildэто можно рассматривать как временный каталог. Если у вас несколько жестких дисков Vultr, стоит смонтировать здесь файловую систему RAID0 (полоса). Если у вас много ОЗУ, вы также можете смонтировать файловую систему с поддержкой ОЗУ, например tmpfs. После того, как пакет собран, он копируется в каталог, из которого вы запустились, extra-x86_64-buildи, если вы хотите, в этот момент вы можете удалить его /var/lib/archbuild. Следующий запуск будет медленнее, потому что для этого потребуется создать новый чистый корень. Кроме того, вы можете удалить, /var/lib/archbuild/<USERNAME>чтобы освободить дополнительное пространство из chroot сборки, прежде чем он будет автоматически удален при следующем запуске Devtools. Таким образом, даже если у вас не получится смонтировать файловую систему RAID0, самое большое, что вы потеряете, - это процесс компиляции.

Файлы конфигурации Devtools

Есть несколько особенностей, которые следует отметить с файлами конфигурации Devtools. Они расположены в /usr/share/devtools/, таких как makepkg-x86_64.confи pacman-extra.conf:

  • Для /etcтаких файлов, как makepkg.confи pacman.conf, вы можете безопасно редактировать их на месте, и при обновлении пакета ваши изменения не будут перезаписаны. Скорее он сохранит новые файлы конфигурации (если они изменились по сравнению с предыдущей версией), заканчивающиеся на .pacnew. Тем не менее, файлы конфигурации Devtools /usr/share/не предназначены для редактирования пользователем, поэтому при обновлении Devtools он полностью перезапишет ваши изменения этих файлов без предупреждения. Изменение в этом поведении было предложено и отклонено, потому что это помогает гарантировать, что пакеты отправляются в официальные репозитории с одинаковыми настройками компиляции.
  • Значение для MAKEFLAGS, PACKAGERи {SRC,SRCPKG,PKG,LOG}DESTвзяты из, /etc/makepkg.confа не /usr/share/devtools/makepkg-x86_64.conf.

Локальный репозиторий

Если вы собираете пакеты, которые имеют зависимости от других пакетов, которые вы собрали, вам нужно использовать локальный репозиторий, чтобы при pacmanзапуске в пределах chroot сборки он обнаруживал зависимости.

Чтобы настроить локальный репозиторий, обратитесь к разделу «Локальный репозиторий» данного руководства .

Создайте пользовательскую цель:

# ln -s archbuild /usr/bin/custom-x86_64-build
# cp /usr/share/devtools/pacman-{extra,custom}.conf

Отредактируйте /usr/share/devtools/pacman-custom.confи добавьте следующее в конце:

[archLocalRepo]
SigLevel = Optional TrustAll
Server = file:///archLocalRepo

Отредактируйте /etc/pacman.confи добавьте следующее. Это заставляет каталог быть подключенным в chroot:

CacheDir    = /var/cache/pacman/pkg/ /archLocalRepo/

Теперь вместо использования extra-x86_64-buildиспользуйте это:

$ custom-x86_64-build

Если вы всегда хотите использовать пользовательскую цель, вы можете удалить /var/lib/archbuild/extra-x86_64-build/каталог, если он существует, поскольку chroot теперь будет в /var/lib/archbuild/custom-x86_64-build/.

Пакет быстрее

Обратите внимание, что включение многопоточной упаковки включает в себя редактирование /usr/share/devtoolsфайлов конфигурации, которые официально не поддерживаются, поэтому вам придется вносить эти изменения при каждом обновлении Devtools.

Devtools объединяет весь пакет в формат архива. По умолчанию .tar.xzиспользуется один поток для xzсжатия.

В многопроцессорных системах вы можете разрешить xzиспользовать несколько потоков путем редактирования /usr/share/devtools/makepkg-x86_64.confи изменить следующую строку:

COMPRESSXZ=(xz -c -z -)

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

COMPRESSXZ=(xz -c -z - --threads=0)

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

COMPRESSXZ=(xz -c -z - --threads=21)

Указание большего количества потоков, чем количество имеющихся у вас виртуальных ядер, снизит производительность.

Если вы не возражаете против того, чтобы файл пакета был (возможно, намного) больше, отключите сжатие путем редактирования /usr/share/devtools/makepkg-x86_64.confи измените следующую строку:

PKGEXT='.pkg.tar.xz'

Измените его, чтобы он выглядел следующим образом:

PKGEXT='.pkg.tar'


Leave a Comment

Как установить PHP 7.3 на веб-сервере Arch Linux

Как установить PHP 7.3 на веб-сервере Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Работающий веб-сервер с доступом Apache или Nginx Sudo. Команды требуют

Как использовать HTTPS на веб-сервере Arch Linux

Как использовать HTTPS на веб-сервере Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Работающий веб-сервер, доступ к Apache или Nginx Sudo Требуются команды t

Настройка Mumble Server в Arch Linux

Настройка Mumble Server в Arch Linux

В этом руководстве объясняется, как настроить сервер Mumble (Murmur) в Arch Linux. Все, что сделано в этом уроке, сделано от имени пользователя root. Установка

Установка Arch Linux на сервере Vultr

Установка Arch Linux на сервере Vultr

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

Установите Arch Linux со снимком Btrfs

Установите Arch Linux со снимком Btrfs

Предисловие Arch Linux - это дистрибутив общего назначения, известный своими передовыми технологиями и гибкой конфигурацией. С снимками Btrfs мы можем взять

Настройка сервера Counter-Strike: Global Offensive (CSGO) в Arch Linux

Настройка сервера Counter-Strike: Global Offensive (CSGO) в Arch Linux

Из этого туториала Вы узнаете, как настроить сервер Counter-Strike: Global Offensive в Arch Linux. В этом руководстве предполагается, что вы вошли со стандартным использованием

Как установить PostgreSQL 11.1 на Arch Linux

Как установить PostgreSQL 11.1 на Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Доступ в Sudo. Команды, необходимые для запуска с правами root, начинаются с префикса #, и один

Как установить Nginx 1.14 на Arch Linux

Как установить Nginx 1.14 на Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Доступ в Sudo. Команды, необходимые для запуска от имени пользователя root, начинаются с префикса #. Th

Установка 2019 Arch Linux на сервере Vultr

Установка 2019 Arch Linux на сервере Vultr

Введение Arch Linux имеет меньшие, но все же сильные, следующие более популярные дистрибутивы. Его философия совершенно другая, с преимуществами и

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

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

Если вы используете makepkg напрямую, это несколько загрязняет вашу систему. Группа пакетов base-devel должна быть установлена. Таким образом, по умолчанию зависимости нужны только

Настройка сервера Team Fortress 2 в Arch Linux

Настройка сервера Team Fortress 2 в Arch Linux

В этом руководстве объясняется, как настроить сервер Team Fortress 2 в Arch Linux. Я предполагаю, что вы вошли в систему с учетной записью пользователя без полномочий root с доступом sudo

Как установить Apache 2.4 на Arch Linux

Как установить Apache 2.4 на Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux. Смотрите это руководство для получения дополнительной информации. Доступ в судо. Команды, необходимые для запуска от имени пользователя root

Настройка Spigot Server в Arch Linux

Настройка Spigot Server в Arch Linux

В этом руководстве объясняется, как настроить сервер Minecraft с помощью Spigot в Arch Linux. В этом руководстве предполагается, что вы обычный пользователь (не root) и имеете

Как установить Python 3.7 на веб-сервере Arch Linux

Как установить Python 3.7 на веб-сервере Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Работающий веб-сервер, доступ к Apache или Nginx Sudo: требуются команды

Как установить MongoDB 4.0 на Arch Linux

Как установить MongoDB 4.0 на Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью) Доступ к Sudo: Команды, необходимые для запуска с правами root, начинаются с префикса #, а один

Как установить MariaDB 10.3 или MySQL 8.0 в Arch Linux

Как установить MariaDB 10.3 или MySQL 8.0 в Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Доступ в Sudo: Команды, необходимые для запуска с правами root, начинаются с префикса #, а один

Сборка пакетов на Arch Linux (включая AUR)

Сборка пакетов на Arch Linux (включая AUR)

На Arch Linux официальными репозиториями являются: core, extra и community. Эти пакеты уже скомпилированы, и они устанавливаются через pacman. Для го

Как установить Perl 5.28 на веб-сервер Arch Linux

Как установить Perl 5.28 на веб-сервер Arch Linux

Предварительные условия Сервер Vultr, работающий до последней версии Arch Linux (см. Эту статью). Работающий веб-сервер, доступ к Apache или Nginx Sudo: требуются команды

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше