Korzystanie z Devtools na Arch Linux

Pakiet Devtools został pierwotnie stworzony dla Zaufanych użytkowników do prawidłowego tworzenia pakietów dla oficjalnych repozytoriów. Jednak może być również używany przez zwykłych użytkowników do budowania pakietów AUR, a nawet zmodyfikowanych oficjalnych pakietów.

Zapoznaj się z tym przewodnikiem, aby zrozumieć i ogólnie korzystać z AUR, w tym uzyskać PKGBUILD. Ten dokument pokazuje tylko kroki specyficzne dla Devtools, jeśli jest to metoda, którą wybrałeś do skompilowania pakietu.

Devtools utrzymuje osobną czystą instalację Arch, umieszczoną w /var/lib/archbuild/<TARGET>/root, która zawiera tylko grupy pakietów basei base-devel. Jeśli ta czysta instalacja nie istnieje, automatycznie ją tworzy. Jeśli istnieje, automatycznie aktualizuje zawarte w nim pakiety. Kiedy Devtools jest używane do zbudowania pakietu, zaczyna się od kopii tej czystej instalacji, instaluje wymagane pakiety tylko w kopii, kopiuje do niej kod źródłowy, wykonuje kompilację i pakowanie w nim, a jedynie kopiuje wynikowy pakiet, w identycznej formie jak w oficjalnych repozytoriach.

Devtools mają zalety w porównaniu do makepkgbezpośredniego uruchamiania . Jedną z zalet jest to, że base-develi inne pakiety niezbędne do kompilacji, ale nie uruchomienia, tworzony pakiet nigdy nie kończy się w głównym systemie. To mniej pakietów, które trzeba okresowo aktualizować, i masz obawy. Chociaż jest to przede wszystkim korzyść dla opiekunów pakietów Arch, proces ten łatwo ujawnia się, gdy błąd PKGBUILDjest niepoprawny, na przykład w przypadku braku zależności na liście, że opiekun już zainstalował się w swoim głównym systemie. Możesz także użyć maszyny, która szybciej buduje pakiety, i skopiować wynikowy pakiet na wolniejszą maszynę, która go uruchomi, bez zanieczyszczania instalacji maszyny budowlanej.

Główną wadą jest to, że czysty root jest zawsze tam, zajmuje około 800 MB, a zwykle jedna kopia zajmuje więcej miejsca. Uwaga: jeśli /var/lib/archbuild/używa Btrfs, kopia czystego katalogu głównego zaczyna się jako migawka Btrfs, więc pliki te nie zajmują podwójnej przestrzeni. Czysty katalog główny jest zawsze tam przechowywany, aby uniknąć ponownej instalacji przy każdym tworzeniu pakietu.

Kompilowanie za pomocą Devtools

Zainstaluj Devtools:

# pacman -S devtools

Aby zbudować pakiet, Devtools zawiera archbuild, ale nie uruchamiasz go bezpośrednio. Zawiera także dowiązania symboliczne {extra, gnome-unstable, kde-unstable, staging, testing}-x86_64-build. Dowiązanie symboliczne jest używane do uruchomienia, zostanie sprawdzone przez archbuild, aby określić, który cel ma być używany. Można go uruchomić, aby użyć tych niestabilnych / tymczasowych / testowych repozytoriów, które mogą mieć nowsze wersje niż te, które zostały wydane w oficjalnych repozytoriach. Aby użyć oficjalnych repozytoriów dla pakietów innych niż AUR, w katalogu z PKGBUILD, na przykład w katalogu utworzonym przez git clone, uruchom następujące polecenie:

$ extra-x86_64-build

Uwaga: reszta tego przewodnika będzie po prostu odwoływać się extra-x86_64-build.

Po zakończeniu działania zostaną wyświetlone następujące wyniki:

  • /var/lib/archbuild/extra-x86_64/root- Czysty chroot , który jest aktualną instalacją z tylko grupami pakietów basei base-devel.
  • /var/lib/archbuild/extra-x86_64/<USERNAME>- Będzie zawierać chroot kompilacji . Jest to kopia czystego chroota z wszelkimi zależnościami wymaganymi do zbudowania lub uruchomienia budowanego pakietu, a także jego kod źródłowy, wyniki kompilacji i pakiet.
  • Katalog, w którym się znajdziesz, będzie zawierał pakiet i pliki dziennika kompilacji, a także każdy pobrany kod źródłowy.

Na końcu możesz zauważyć „ Checking PKGBUILD” i „ Checking <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz”. Wszystkie wiersze po nich są wypisywane namcap, co automatycznie wyszukuje problemy, takie jak zniekształcone PKGBUILDpliki, uwzględnione zależności, których pakiet nie wydaje się używać, zależności, których nie uwzględniono w pakiecie, i wydaje się, że więcej. Często generowane są fałszywe alarmy namcap, ale jest to świetne narzędzie do dawania rzeczy do zbadania. Jeśli twój pakiet działa poprawnie, nie jest dobrym pomysłem powiadomienie opiekuna o namcapwyjściu, chyba że go sprawdziłeś i zweryfikowałeś, że należy wprowadzić zmianę.

Możesz użyć pacmando zainstalowania pakietu, który zainstaluje wszelkie zależności wymagane do uruchomienia pakietu, o ile znajdują się one w oficjalnych repozytoriach lub lokalnym repozytorium.

Użyj lokalnego repozytorium, jak wyjaśniono tutaj , lub zainstaluj plik bezpośrednio:

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

Jeśli chcesz extra-x86_64-buildponownie uruchomić , teraz lub w dowolnym późniejszym czasie z tym lub innym pakietem, zaktualizuje on czystego chroota, jeśli to konieczne, usunie go i uczyni z niego nową kopię czystego chroota, i wykonasz ten sam proces. Jeśli twój katalog nadal ma pobrany kod źródłowy z ostatniego razu, użyje go. Jeśli pakiet jest rozwojowym pakietem AUR, spowoduje pobranie nowych zmian zamiast ponownego klonowania.

Wewnętrznie extra-x86_64-builddziała makechrootpkg, który wewnętrznie wywołuje makepkg. Dostępne extra-x86_64-buildsą następujące opcje :

  • -c: Wyczyść chrooty, usuwając i ponownie tworząc cały /var/lib/archbuild/extra-x86_64/katalog, w tym czysty chroot i wszystkie katalogi budowania chroot. Jest to rzadko potrzebne, tylko jeśli czysty chroot zostanie uszkodzony lub jeśli Devtools zostanie zaktualizowane w sposób, który narusza wsteczną kompatybilność.
  • -r <dir>: Użyj innego katalogu niż /var/lib/archbuild/extra-x86_64/do przechowywania chroots.

Wszelkie argumenty do extra-x86_64-buildpo --są przekazywane do makechrootpkg, gdy używa go wewnętrznie. Kilka argumentów jest zawsze automatycznie przekazywanych od extra-x86_64-builddo makechrootpkg. Te automatyczne argumenty są -r <value given to extra-x86_64-build -r option if given, /var/lib/archbuild/extra-x86_64 otherwise> -c -n. Mówią, makechrootpkgaby usunąć chroota kompilacji i uczynić go świeżą kopią czystego chroota i uruchomić namcapna pakiecie, jeśli pomyślnie się skompiluje. Często stosowaną opcją, którą można przekazać, makechrootpkgjest -l <copy name>. Jest to nazwa katalogu <USERNAME>, która ma dać chroot kompilacji zamiast , co jest przydatne do utrzymywania wielu kopii lub kompilacji wielu pakietów jednocześnie.

Wszelkie argumenty do makechrootpkgpo --są przekazywane makepkg, gdy wewnętrznie używa go do zbudowania pakietu. Przy pierwszym makepkguruchomieniu makechrootpkgwykonuje się to z własnymi niezmiennymi opcjami, aby w razie potrzeby pobrać pliki źródłowe i wykonać kontrole integralności; dlatego nic nie może zostać przekazane w tym przebiegu. Uruchamia makepkgsię po raz drugi, aby skompilować pakiet, i zawsze automatycznie przekazuje makepkgargumenty, o --syncdeps --noconfirm --log --holdver --skipintegktórych mówi makepkgchroot w chroot kompilacji, aby automatycznie instalował brakujące zależności wymagane do zbudowania i używania pakietu, aby nie pytać o potwierdzenie pacman, zalogować proces kompilacji do tekstu plików oprócz stdout, nie aktualizuj kodu źródłowego, jeśli jest w systemie kontroli wersji i nie wykonuj kontroli weryfikacji pliku źródłowego.

Możesz połączyć je razem, używając następującego formularza:

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

Zauważ, że /var/lib/archbuildmożna to traktować jak katalog tymczasowy. Jeśli masz wiele dysków twardych Vultr, warto zamontować tutaj system plików RAID0 (pasek). Jeśli masz dużo pamięci RAM, możesz także zamontować system plików z pamięcią RAM, taki jak tmpfs. Po zbudowaniu pakiet jest kopiowany do katalogu, z którego uruchomiono, extra-x86_64-builda jeśli chcesz, w tym momencie możesz go usunąć /var/lib/archbuild. Następny bieg byłby wolniejszy, ponieważ musiałby utworzyć nowy czysty root. Alternatywnie, możesz usunąć, /var/lib/archbuild/<USERNAME>aby odzyskać dodatkowe miejsce z chroota kompilacji, zanim zostanie ono automatycznie usunięte przy następnym uruchomieniu Devtools. Tak więc, nawet jeśli zamontowany tutaj system plików RAID0 nie powiedzie się, najbardziej stracisz kompilację w toku.

Pliki konfiguracyjne Devtools

Pliki konfiguracyjne Devtools wymagają uwagi. Znajdują się w /usr/share/devtools/, takich jak makepkg-x86_64.confi pacman-extra.conf:

  • W przypadku /etcplików takich jak makepkg.confi pacman.confmożesz bezpiecznie edytować je w miejscu, a po uaktualnieniu pakietu nie zastąpi on twoich zmian. Zamiast tego zapisze nowe pliki konfiguracyjne (jeśli zmieniły się w stosunku do poprzedniej wersji) kończące się na .pacnew. Jednak pliki konfiguracyjne Devtools /usr/share/nie są przeznaczone do edycji przez użytkownika, więc po aktualizacji Devtools całkowicie nadpisze twoje zmiany w tych plikach bez powiadamiania cię. Zmiana tego zachowania została zaproponowana i odrzucona, ponieważ pomaga to zapewnić przesyłanie pakietów do oficjalnych repozytoriów z tymi samymi ustawieniami kompilacji.
  • Wartość dla MAKEFLAGS, PACKAGERi {SRC,SRCPKG,PKG,LOG}DESTpochodzi /etc/makepkg.confraczej od niż /usr/share/devtools/makepkg-x86_64.conf.

Lokalne repozytorium

Jeśli pacmanbudujesz pakiety, które są zależne od innych zbudowanych przez siebie pakietów, musisz użyć lokalnego repozytorium, aby po uruchomieniu w chroot kompilacji znalazł zależności.

Aby skonfigurować lokalne repozytorium, zapoznaj się z sekcją „Lokalne repozytorium” tego podręcznika .

Utwórz niestandardowy cel:

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

Edytuj /usr/share/devtools/pacman-custom.confi dodaj na końcu:

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

Edytuj /etc/pacman.confi dodaj następujące elementy. Wymusza to podłączenie katalogu do chroota:

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

Teraz zamiast używać extra-x86_64-buildużyj tego:

$ custom-x86_64-build

Jeśli zawsze chcesz używać niestandardowego celu, możesz usunąć /var/lib/archbuild/extra-x86_64-build/katalog, jeśli istnieje, ponieważ chroots będą teraz w /var/lib/archbuild/custom-x86_64-build/.

Szybszy pakiet

Uwaga: włączenie pakowania w /usr/share/devtoolswątki obejmuje edycję plików konfiguracyjnych, które nie są oficjalnie obsługiwane, więc musisz wprowadzić tę zmianę przy każdym uaktualnieniu Devtools.

Devtools łączy cały pakiet w format archiwalny. Domyślnie .tar.xzużywa pojedynczego wątku do xzkompresji.

W systemach wieloprocesorowych możesz zezwolić xzna użycie wielu wątków poprzez edycję /usr/share/devtools/makepkg-x86_64.confi zmienić następujący wiersz:

COMPRESSXZ=(xz -c -z -)

Aby zezwolić na tyle wątków, ile masz wirtualnych rdzeni:

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

Aby zezwolić na używanie wielu wirtualnych rdzeni, ale nie wszystkich, w celu zmniejszenia wpływu na ogólną wydajność systemu, dodaj konkretną liczbę:

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

Określenie większej liczby wątków niż liczba wirtualnych rdzeni spowoduje zmniejszenie wydajności.

Jeśli nie przeszkadza ci to, że plik pakietu jest (potencjalnie znacznie) większy, wyłącz kompresję poprzez edycję /usr/share/devtools/makepkg-x86_64.confi zmień następujący wiersz:

PKGEXT='.pkg.tar.xz'

Zmień go, aby wyglądał następująco:

PKGEXT='.pkg.tar'


Leave a Comment

Jak zainstalować Python 3.7 na Arch Linux Webserver

Jak zainstalować Python 3.7 na Arch Linux Webserver

Wymagania wstępne Serwer Vultr działający na bieżąco Arch Linux (zobacz ten artykuł). Działający serwer WWW, dostęp do Apache lub Nginx Sudo: Polecenia wymagają

Skonfiguruj serwer Mumble na Arch Linux

Skonfiguruj serwer Mumble na Arch Linux

W tym samouczku wyjaśniono, jak skonfigurować serwer Mumble (Murmur) w Arch Linux. Wszystko wykonane w tym samouczku odbywa się jako użytkownik root. Instalacja an

Jak zainstalować PHP 7.3 na Arch Linux Webserver

Jak zainstalować PHP 7.3 na Arch Linux Webserver

Wymagania wstępne Serwer Vultr działający na bieżąco Arch Linux (zobacz ten artykuł). Działający serwer WWW, dostęp do Apache lub Nginx Sudo. Polecenia wymagają

Instalowanie Arch Linux na serwerze Vultr

Instalowanie Arch Linux na serwerze Vultr

Vultr zapewnia niesamowitą funkcjonalność, umożliwiając korzystanie z własnego niestandardowego obrazu oprócz doskonałych szablonów, które umożliwiają uruchamianie

Jak korzystać z HTTPS na Arch Linux Webserver

Jak korzystać z HTTPS na Arch Linux Webserver

Wymagania wstępne Serwer Vultr działający na bieżąco Arch Linux (zobacz ten artykuł). Wymagany jest działający serwer WWW, Apache lub Nginx Sudo. Polecenia dostępu t

Zainstaluj Arch Linux z migawką Btrfs

Zainstaluj Arch Linux z migawką Btrfs

Przedmowa Arch Linux to uniwersalna dystrybucja znana z najnowocześniejszej technologii i elastycznej konfiguracji. Dzięki migawkom Btrfs możemy wziąć

Skonfiguruj serwer Counter-Strike: Global Offensive (CSGO) na Arch Linux

Skonfiguruj serwer Counter-Strike: Global Offensive (CSGO) na Arch Linux

W tym samouczku wyjaśniono, jak skonfigurować serwer Counter-Strike: Global Offensive na Arch Linux. W tym samouczku założono, że zalogowano się przy standardowym użyciu

Jak zainstalować PostgreSQL 11.1 na Arch Linux

Jak zainstalować PostgreSQL 11.1 na Arch Linux

Wymagania wstępne Serwer Vultr działający na bieżąco Arch Linux (zobacz ten artykuł). Dostęp Sudo. Polecenia wymagane do uruchomienia jako root są poprzedzone znakiem # i jednym

Instalowanie Arch Arch Linux 2019 na serwerze Vultr

Instalowanie Arch Arch Linux 2019 na serwerze Vultr

Wprowadzenie Arch Linux ma mniejsze, ale wciąż silne, następujące niż bardziej popularne dystrybucje. Jego filozofia jest zupełnie inna, z zaletami

Skonfiguruj serwer Team Fortress 2 na Arch Linux

Skonfiguruj serwer Team Fortress 2 na Arch Linux

W tym samouczku wyjaśniono, jak skonfigurować serwer Team Fortress 2 w Arch Linux. Zakładam, że jesteś zalogowany na konto użytkownika innego niż root, który ma dostęp do sudo

Skonfiguruj serwer Spigot na Arch Linux

Skonfiguruj serwer Spigot na Arch Linux

W tym samouczku wyjaśniono, jak skonfigurować serwer Minecraft za pomocą Spigot na Arch Linux. W tym samouczku założono, że jesteś zwykłym użytkownikiem (innym niż root) i posiadasz hav

Jak zainstalować Nginx 1.14 na Arch Linux

Jak zainstalować Nginx 1.14 na Arch Linux

Wymagania wstępne Serwer Vultr działający na bieżąco Arch Linux (zobacz ten artykuł). Dostęp Sudo. Polecenia wymagane do uruchomienia jako root są poprzedzone znakiem #. Th

Używanie Makepkg na Arch Linux

Używanie Makepkg na Arch Linux

Jeśli użyjesz makepkg bezpośrednio, to nieco zanieczyszcza twój system. Grupa pakietu base-devel musi być zainstalowana. W ten sposób domyślnie potrzebne są tylko zależności

Jak zainstalować MongoDB 4.0 na Arch Linux

Jak zainstalować MongoDB 4.0 na Arch Linux

Wymagania wstępne Serwer Vultr działający na bieżąco Arch Linux (zobacz ten artykuł) Dostęp Sudo: Polecenia wymagane do uruchomienia jako root są poprzedzone znakiem #, a jeden

Jak zainstalować MariaDB 10.3 lub MySQL 8.0 na Arch Linux

Jak zainstalować MariaDB 10.3 lub MySQL 8.0 na Arch Linux

Wymagania wstępne Serwer Vultr działający na bieżąco Arch Linux (zobacz ten artykuł). Dostęp Sudo: Polecenia wymagane do uruchomienia jako root są poprzedzone znakiem #, a jeden

Budowanie pakietów na Arch Linux (w tym AUR)

Budowanie pakietów na Arch Linux (w tym AUR)

W Arch Linux oficjalne repozytoria to: core, extra i community. Te pakiety są już skompilowane i są instalowane za pomocą pacmana. Dla th

Jak zainstalować Perl 5.28 na Arch Linux Webserver

Jak zainstalować Perl 5.28 na Arch Linux Webserver

Wymagania wstępne Serwer Vultr działający na bieżąco Arch Linux (zobacz ten artykuł). Działający serwer WWW, dostęp do Apache lub Nginx Sudo: Polecenia wymagają

Jak zainstalować Apache 2.4 na Arch Linux

Jak zainstalować Apache 2.4 na Arch Linux

Wymagania wstępne Serwer Vultr działający na bieżąco Arch Linux. Aby uzyskać więcej informacji, zobacz ten przewodnik. Dostęp do Sudo. Polecenia muszą być uruchamiane jako root ar

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.