Використання Devtools в Arch Linux

Пакет Devtools спочатку був створений для довірених користувачів, щоб належним чином створювати пакети для офіційних сховищ. Однак його можуть використовувати і звичайні користувачі для створення пакетів AUR або навіть модифікованих офіційних пакетів.

Зверніться до цього посібника, щоб зрозуміти та використовувати AUR в цілому, включаючи отримання PKGBUILD. У цьому документі показано лише кроки, характерні для Devtools, якщо це спосіб, який ви вибрали для компіляції пакета.

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

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

Основним недоліком є ​​те, що чистий корінь завжди є, займаючи близько 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-buildafter --передаються до 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>, що корисно для підтримки кількох копій або компіляції кількох пакетів одночасно.

Будь-які аргументи makechrootpkgafter --передаються до 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 (смуг). Якщо у вас багато оперативної пам’яті, ви також можете підключити файлову систему з підтримкою RAM, наприклад 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'

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

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

Вступ Arch Linux має менші, але все ще сильні, ніж більш популярні дистрибутиви. Його філософія зовсім інша, з перевагами

Встановлення Arch Linux на сервері Vultr

Встановлення Arch Linux на сервері Vultr

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

Використання Devtools в Arch Linux

Використання Devtools в Arch Linux

Пакет Devtools спочатку був створений для довірених користувачів, щоб належним чином створювати пакети для офіційних сховищ. Однак його може використовувати і звичайний користувач

Використання Makepkg на Arch Linux

Використання Makepkg на Arch Linux

Якщо ви використовуєте makepkg безпосередньо, це дещо забруднює вашу систему. Необхідно встановити групу пакетів базового розробки. Таким чином, за замовчуванням потрібні лише залежності

Як встановити PostgreSQL 11.1 на Arch Linux

Як встановити PostgreSQL 11.1 на Arch Linux

Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Доступ до Sudo. Команди, які потрібно виконувати як root, мають префікс # і один

Як використовувати HTTPS на веб-сервері Arch Linux

Як використовувати HTTPS на веб-сервері Arch Linux

Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Запущений веб-сервер, Apache або Nginx Sudo Необхідні команди доступу t

Встановіть Arch Linux з Btrfs Snapshotting

Встановіть Arch Linux з Btrfs Snapshotting

Передмова Arch Linux — це дистрибутив загального призначення, добре відомий своєю передовою технологією та гнучкою конфігурацією. За допомогою знімків Btrfs ми можемо взяти

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

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

В Arch Linux офіційні репозиторії: core, extra та community. Ці пакунки вже скомпільовані, і вони встановлені через pacman. Для го

Налаштуйте Spigot Server на Arch Linux

Налаштуйте Spigot Server на Arch Linux

У цьому посібнику пояснюється, як налаштувати сервер Minecraft за допомогою Spigot на Arch Linux. У цьому підручнику передбачається, що ви звичайний користувач (без root) і маєте права

Як встановити Nginx 1.14 на Arch Linux

Як встановити Nginx 1.14 на Arch Linux

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

Як встановити Apache 2.4 на Arch Linux

Як встановити Apache 2.4 на Arch Linux

Передумови Сервер Vultr з сучасною версією Arch Linux. Додаткову інформацію див. у цьому посібнику. Доступ до Sudo. Команди, які потрібно виконувати як root ar

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

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

Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Запущений веб-сервер, доступ до Apache або Nginx Sudo: потрібні команди

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

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

Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Запущений веб-сервер, доступ до Apache або Nginx Sudo: потрібні команди

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

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

Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Запущений веб-сервер, доступ до Apache або Nginx Sudo. Вимагають команди

Налаштуйте сервер Mumble на Arch Linux

Налаштуйте сервер Mumble на Arch Linux

У цьому посібнику пояснюється, як налаштувати сервер Mumble (Murmur) на Arch Linux. Все, що зроблено в цьому підручнику, виконується як користувач root. Установка ан

Налаштуйте сервер Counter-Strike: Global Offensive (CSGO) на Arch Linux

Налаштуйте сервер Counter-Strike: Global Offensive (CSGO) на Arch Linux

У цьому підручнику пояснюється, як налаштувати сервер Counter-Strike: Global Offensive на Arch Linux. У цьому посібнику припускається, що ви ввійшли в систему зі стандартним використанням

Налаштуйте сервер Team Fortress 2 на Arch Linux

Налаштуйте сервер Team Fortress 2 на Arch Linux

У цьому посібнику пояснюється, як налаштувати сервер Team Fortress 2 на Arch Linux. Я припускаю, що ви увійшли з обліковим записом користувача без права root і має доступ до sudo

Як встановити MariaDB 10.3 або MySQL 8.0 на Arch Linux

Як встановити MariaDB 10.3 або MySQL 8.0 на Arch Linux

Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Доступ до Sudo: команди, які потрібно запускати як root, мають префікс # і один

Як встановити MongoDB 4.0 на Arch Linux

Як встановити MongoDB 4.0 на Arch Linux

Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю) Доступ до Sudo: команди, які потрібно запускати як root, мають префікс # і один

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

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

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

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

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…

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

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

Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

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

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

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