Използване на 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е неправилно, като например ако се пропусне зависимост от списъка, че поддържащият случайно вече е инсталиран в основната им система. Можете също да използвате машина, която е по-бърза при изграждането на пакети, и да копирате получения пакет на по-бавна машина, която ще го изпълнява, без да замърсява инсталацията на строителната машина.

Основният недостатък е, че чистият корен винаги е там, заемайки около 800MB и обикновено едно копие е там, което заема повече място. Имайте предвид, че ако се /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 и всички build директории 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, в рамките на build chroot, автоматично да инсталира липсващи зависимости, необходими за изграждане и използване на пакета, да не иска потвърждение по време на pacman, да регистрира процеса на изграждане в текст файлове в допълнение към stdout, не актуализирайте изходния код, ако сте в система за контрол на версиите и не извършвайте проверки за проверка на изходния файл.

Можете да ги свържете заедно, като използвате следния формуляр:

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

Имайте предвид, че /var/lib/archbuildможе да се третира като временна директория. Ако имате няколко Vultr твърди диска, струва си да монтирате RAID0 (лентова) файлова система тук. Ако имате много RAM, можете също да монтирате поддържана от 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. За th

Настройте Spigot сървър на Arch Linux

Настройте Spigot сървър на Arch Linux

Този урок обяснява как да настроите сървър на Minecraft с помощта на Spigot на Arch Linux. Този урок предполага, че сте нормален потребител (не-root) и hav

Как да инсталирате 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 Server на Arch Linux

Настройте Mumble Server на 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, са с префикс # и един

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

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 машини. Прочетете тази статия, за да научите повече