Превођење помоћу Девтоолс-а
Конфигурационе датотеке Девтоолс
Локално спремиште
Пакет брже
Пакет Девтоолс је првобитно направљен за поуздане кориснике да правилно креирају пакете за званична спремишта. Међутим, могу га користити и обични корисници за прављење АУР пакета, или чак модификованих званичних пакета.
Погледајте овај водич за разумевање и коришћење АУР-а уопште, укључујући добијање PKGBUILD. Овај документ приказује само кораке специфичне за Девтоолс, ако је то метод који одаберете за компајлирање пакета.
Девтоолс одржава засебну чисту Арцх инсталацију, која се налази у /var/lib/archbuild/<TARGET>/root, која садржи само групе пакета baseи base-devel. Ако ова чиста инсталација не постоји, аутоматски је креира. Ако постоји, аутоматски ажурира све пакете у њему. Када се Девтоолс користи за прављење пакета, он почиње са копијом ове чисте инсталације, инсталира потребне пакете само у копију, копира изворни код у њега, обавља компајлирање и паковање у њему и само копира резултујући пакет, у идентичном облику од онога што се налази у званичним репозиторијумима.
Девтоолс има предности у односу на makepkgдиректно покретање . Једна од предности је да base-develи други пакети неопходни за компајлирање, али не и покретање, пакет који правите никада не заврше у вашем главном систему. То је мање пакета које треба периодично надоградити и због којих имате забринутости. Иако је превасходно корист за одржаваоце Арцх пакета, овај процес лако излаже када је PKGBUILDа нетачан, као што је ако се изостави зависност из листе коју је одржавалац већ инсталирао у њихов главни систем. Такође можете користити машину која је бржа у изради пакета и копирати резултујући пакет на спорију машину која ће га покренути, без загађивања инсталације грађевинске машине.
Главни недостатак је што је чисти роот увек ту, заузима око 800МБ, а обично је једна копија тамо која заузима више простора. Имајте на уму да ако се /var/lib/archbuild/користи Бтрфс, копија чистог корена почиње као Бтрфс снимак, тако да те датотеке не заузимају дупло већи простор. Чисти роот се увек чува тамо како би се избегло његово поновно инсталирање сваки пут када се прави пакет.
Инсталирајте Девтоолс:
# pacman -S devtools
Да бисте направили пакет, Девтоолс укључује archbuild, али ово не покрећете директно. Такође укључује симболичне везе {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. Симболска веза која се користи за покретање биће прегледана од стране archbuild, да би се утврдило који циљ желите да користи. Може се покренути да се користе ова нестабилна/производна/тестна спремишта, која могу имати новије верзије од оних које су пуштене у званична спремишта. Да бисте користили званична спремишта за пакете који нису АУР, у директоријуму са PKGBUILD, на пример директоријумом који је направио git clone, покрените следеће:
$ extra-x86_64-build
Напомена: Остатак овог водича ће се једноставно односити на extra-x86_64-build.
Након што заврши са радом, биће следећи резултати:
/var/lib/archbuild/extra-x86_64/root- Чист цхроот , који је ажурирана инсталација само са групама пакета baseи base-devel.
/var/lib/archbuild/extra-x86_64/<USERNAME>- Ово ће садржати цхроот за изградњу . Ово је копија чистог цхроот-а са свим зависностима потребним за прављење или покретање пакета који се гради, као и са његовим изворним кодом, резултатима компилације и пакетом.
- Директоријум у коме се налазите ће садржати датотеке евиденције пакета и изградње, као и сав преузети изворни код.
На крају ћете можда приметити " 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поново покренули , одмах или било када касније са овим или другим пакетом, он ће ажурирати чисти цхроот ако је потребно, избрисати буилд цхроот и учинити га новом копијом чистог цхроот-а и извршити исти процес. Ако ваш директоријум још увек има изворни код преузет од последњег пута, он ће га користити. Ако је пакет развојни АУР пакет, он ће повући нове измене радије него поново клонирати.
Интерно, extra-x86_64-buildпокреће makechrootpkg, који интерно позива makepkg. Опције за extra-x86_64-buildукључују следеће:
-c: Очистите цхроот тако што ћете уклонити и поново креирати цео /var/lib/archbuild/extra-x86_64/директоријум, укључујући његов чисти цхроот и све буилд цхроот директоријуме. Ово је ретко потребно, само ако се чисти цхроот оштети или ако се Девтоолс надогради на начин који нарушава компатибилност уназад.
-r <dir>: Користите другачији директоријум него /var/lib/archbuild/extra-x86_64/да садржи цхроот.
Сви аргументи 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да се уклони буилд цхроот и направи нова копија чистог цхроот-а и да се покрене namcapна пакету ако се успешно изгради. Често коришћена опција којој се може пренети makechrootpkgје -l <copy name>. Ово је име директоријума за давање цхроот-а, уместо <USERNAME>, што је корисно за одржавање више копија или компајлирање више пакета у исто време.
Сви аргументи за makechrootpkgафтер --се прослеђују у makepkg, када га интерно користи за прављење пакета. Први пут makepkgпокреће makechrootpkg, то се ради са сопственим непроменљивим опцијама, за преузимање изворних датотека, ако је потребно, и обављање провера интегритета; тако да се ништа не може прослеђивати у овој вожњи. Покреће makepkgсе други пут да би направио пакет, и увек аутоматски прослеђује makepkgаргументе --syncdeps --noconfirm --log --holdver --skipintegкоји говоре makepkgда, у оквиру цхроот-а за изградњу, аутоматски инсталира недостајуће зависности потребне за прављење и коришћење пакета, да не тражи потврду током pacman, да евидентира процес прављења у тексту датотеке поред stdout, немојте ажурирати изворни код ако је у систему контроле верзија и не вршите провере верификације изворне датотеке.
Можете их повезати користећи следећи образац:
$ extra-x86_64-build <DEVTOOLS-OPTIONS> -- <MAKECHROOTPKG-OPTIONS> -- <MAKEPKG-OPTIONS>
Имајте на уму да /var/lib/archbuildсе то може третирати као да је привремени директоријум. Ако имате више Вултр чврстих дискова, овде је вредно монтирати РАИД0 (тракасти) систем датотека. Ако имате пуно РАМ-а, такође можете монтирати систем датотека са РАМ подршком као што је tmpfs. Након што је пакет направљен, он се копира у директоријум из којег сте покренули extra-x86_64-buildи ако желите, у овом тренутку можете избрисати /var/lib/archbuild. Следеће покретање би било спорије, јер би требало да направи нови чисти корен. Алтернативно, можете избрисати /var/lib/archbuild/<USERNAME>да бисте повратили додатни простор из цхроот-а за изградњу пре него што га аутоматски избрише следеће покретање Девтоолс-а. Дакле, чак и ако имате РАИД0 систем датотека који је овде монтиран не успе, највише бисте изгубили била би компилација у процесу.
Постоји неколико специфичности које треба приметити са конфигурационим датотекама Девтоолс. Они се налазе у /usr/share/devtools/, као што су makepkg-x86_64.confи pacman-extra.conf:
- За
/etcдатотеке попут makepkg.confи pacman.conf, можете безбедно да их уређујете на месту, а када се пакет надогради, неће заменити ваше промене. Уместо тога, сачуваће нове конфигурационе датотеке (ако су се промениле у односу на претходну верзију) које завршавају са .pacnew. Међутим, конфигурационе датотеке Девтоолс-а се налазе у /usr/share/којима није предвиђено да се уређују од стране корисника, тако да када се Девтоолс надогради, он ће у потпуности преписати ваше промене ових датотека без упозорења. Промена овог понашања је предложена и одбијена, јер ово помаже да се осигура да се пакети шаљу у званична спремишта са истим подешавањима компилације.
- Вредност за
MAKEFLAGS, PACKAGER, и {SRC,SRCPKG,PKG,LOG}DESTсу преузете из /etc/makepkg.confуместо /usr/share/devtools/makepkg-x86_64.conf.
Локално спремиште
Ако правите пакете који зависе од других пакета које сте направили, потребно је да користите локално спремиште, тако да када се pacmanпокрене унутар цхроот-а за изградњу, оно пронађе зависности.
Да бисте подесили локално спремиште, погледајте одељак „Локално спремиште“ овог водича .
Направите прилагођени циљ:
# 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и додајте следеће. Ово приморава да се директоријум везује монтира у цхроот:
CacheDir = /var/cache/pacman/pkg/ /archLocalRepo/
Сада, уместо да extra-x86_64-buildкористите ово:
$ custom-x86_64-build
Ако увек желите да користите прилагођени циљ, можете да избришете /var/lib/archbuild/extra-x86_64-build/директоријум ако постоји, пошто ће цхроот-ови сада бити у /var/lib/archbuild/custom-x86_64-build/.
Пакет брже
Имајте на уму да омогућавање паковања са нитима укључује уређивање /usr/share/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'