Jak odbudować pakiet za pomocą systemu kompilacji Arch Linux
- 4657
- 773
- Natan Cholewa
Abs Lub System kompilacji łukowej to system budowy pakietu natywnie w dystrybucji Arch Linux: dzięki niej możemy łatwo budować pakiety, które można zainstalować za pomocą Pacman, Menedżer pakietu dystrybucji, zaczynając od kodu źródłowego. Wszystko, co musimy zrobić, to określić instrukcję w PkgBuild plik, a następnie zbuduj pakiet za pomocą MakePkg narzędzie. W tym samouczku zobaczymy, jak dostosować i ponownie budować już istniejący pakiet.
W tym samouczku się nauczysz:
- Jaki jest system kompilacji łukowej
- Jak pobrać istniejące pliki źródłowe pakietu
- Jak zmodyfikować PKGBuild
- Jak zbudować pakiet za pomocą MakePkg pożytek
Zastosowane wymagania i konwencje oprogramowania
Kategoria | Wymagania, konwencje lub wersja oprogramowania |
---|---|
System | Arch Linux |
Oprogramowanie | ASP, MakePkg, devel bazowa |
Inny | Uprawnienia do instalacji zależności kompilacji i środowiska wykonawczego |
Konwencje | # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny |
Odbudowa pakietu
Jako przykład tego samouczka odbudujemy Hplip pakiet. Ten pakiet zawiera oprogramowanie typu open source potrzebne do użycia niektórych drukarek HP w Linux. W dystrybucjach takich jak Debian i Fedora mamy wybór zainstalowania Hplip pakiet, który zawiera tylko narzędzia i sterowniki wiersza poleceń i opcjonalnie Hplip-gui, który obejmuje również narzędzia graficzne, które można użyć do konfigurowania i kontrolowania drukarki. Ponieważ używam System-config-drukarka Narzędzie do kontrolowania istniejących drukarek i nie chcę mieć niepotrzebnych i nakładających się narzędzi w moim systemie, muszę zmienić sposób budowy i pakowania oprogramowania na Arch Linux: To właśnie zrobimy w tym samouczku.
Instalacja oprogramowania
Jako pierwszy krok musimy zainstalować niektóre pakiety: devel bazowy I żmija. Pierwsza to grupa pakietów, która zawiera wiele niezbędnych narzędzi do kompilacji oprogramowania, takiego jak Fakeroot, GCC I robić. Drugi to narzędzie do pobierania plików źródłowych dla istniejących pakietów Arch Linux. Aby je zainstalować, używamy Pacman:
$ sudo pacman -s bazowy asp
Jak już wspomniano, będziemy również potrzebować MakePkg który jest już zainstalowany, ponieważ jest dostarczany Pacman samo. Po zainstalowaniu wszystkich potrzebnych pakietów możemy przejść do MakePkg konfiguracja.
Konfiguracja MakePkg
Domyślne, całe system MakePkg Plik konfiguracyjny jest /etc/makepkg.conf
; Skopiujemy to do ~/.MakePkg.conf
, Aby utworzyć konfigurację specyficzną dla użytkownika, możemy dostosować bez konieczności korzystania z uprawnień administracyjnych (~/.config/pacman/makePkg.conf
można również użyć). Niektóre zauważalne zmienne, które można ulepszyć w pliku, są następujące:
Zmienny | Używać | Domyślna wartość |
---|---|---|
CPPFLAGS | Flagi do użycia dla preprocesorów C | -D_Fortify_Source = 2 |
Cflags | Flagi do użycia dla kompilatora C | -marzec = x86-64 -mtune = generic -o2 -pipe -fno -plt |
Cxxflags | Flagi do użycia dla kompilatora C ++ | -marzec = x86-64 -mtune = ogólny -02 -pipe -fno -plt |
Builddir | Katalog do budowania pakietów | /tmp/makepkg |
SPRAWDZANIE INTEGRALNOŚCI | Kontrola integralności do użycia | MD5 |
PKGDEST | Katalog, w którym zostaną umieszczone wszystkie pakiety | . (katalog roboczy) |
Srcdest | Katalog, w którym dane źródłowe będą przechowywane | ./src |
Po ulepszeniu naszej konfiguracji, aby lepiej pakować nasze potrzeby, możemy kontynuować i pobrać pliki źródłowe dla pakietu Arch Linux, w tym przypadku, w tym przypadku, jak powiedzieliśmy wcześniej, Hplip.
Pobieranie plików źródłowych pakietu
Aby pobrać pliki źródłowe dla pakietu, który chcemy zmodyfikować, musimy użyć żmija
narzędzie, które instalowaliśmy wcześniej. W takim przypadku uruchamiamy:
$ ASP Checkout HPLIP
Po kilku sekundach Hplip
Katalog powinien zostać utworzony w naszym katalogu roboczym. W środku znajdziemy dwa podkatalogi: repozytorium
który zawiera własne podkreślenia, nazwane na cześć nazwy repozytorium i architektury systemu, i pień
, który zawiera główną linię rozwoju Svn magazyn.
hplip/ ├── Repos │ └── ext-x86_64 │ ├├t 0022-add-include-cups-ppd.H-in-various-Place-as-Cups-2.2.Patch │ ├� 0023-FIX PRZEDSTAWINIE-PILELILENAMES-WILICODE-WINDEXT.py.Patch │ ├� 0025-Remove-All-ImageProcessor-Funkcjonalność-w którym-is-clo.Patch │ ├── Wyłącz_upgrade.Patch │ ├── hplip-powtórne.Patch │ ├�t pkgBuild │ ├� Python3.diff │ └── powtarzalny gzip.Patch └wiąt pnia ├�t 0022-add-include-cups-ppd.H-in-various-Place-as-Cups-2.2.Patch ├� 0023-FIX PRZEDSTAWINIE-PILELINEDINMES W SZEKI.py.Patch ├� 0025-Remove-Wall-ImageProcessor-Funkcjonalność-w której-is-clo.Patch ├wiąt Disable_upgrade.Patch ├wiąt-hplip-powtórne purzu.Patch ├wiąt pkgBuild ├wią Python3.diff └wiąt odtwarzalny gzip.skrawek
Możemy zmodyfikować HPLIP/Repos/extra-x86_64/pkgbuild
plik.
Modyfikowanie pliku PKGBuild
PkgBuild
Plik to skrypt bash zawierający instrukcję budowy pakietu Arch Linux. W takim przypadku musimy zmodyfikować w pliku zbudować funkcja, która zawiera polecenia użyte do konfigurowania i kompilacji plików źródłowych, w tym przypadku Hplip. W funkcji możemy zobaczyć, że ./skonfiguruj
Skrypt jest uruchamiany z następującymi flagami:
[…] ./Configure--Prefix =/usr \ --enable-Qt5 \--Disable-Qt4 \ --enable-Hpcups-Install \ --enable-Cups-Drv-install \ --enable-pp-build […]
Ponieważ nie chcę, aby aplikacje graficzne były budowane i chcę zainstalować minimum niezbędne do poprawnie działania mojej drukarki, nie potrzebuję obsługi QT5, aby mogę usunąć --Włącz-QT5
opcja (mógłbym użyć --Wyłącz-QT5
Lub --Enable-Qt5 = nie
Zamiast tego byłoby to zbędne, ponieważ flaga jest domyślnie wyłączona, jak możemy przeczytać, uruchamiając ./konfiguruj - -Help
W katalogu źródłowym HPLIP). Muszę wtedy użyć --Wyłącz-gui-build
flaga, aby wyłączyć kompilację GUI i użyć --Włącz-lite-build
Flaga, aby uzyskać kompilację lite z tylko niezbędnymi komponentami do budowy i skanowania (drukarka zawiera również skaner). Ostatecznym rezultatem byłoby coś takiego:
[…] ./konfiguruj--prefix =/usr \--disable-qt4 \ --enable-hpcups-install \ --enable-cups-drv-install \ --enable-pp-build \--Disable-gui-build \- -enable-lite-build […]
Ponieważ wyłączyliśmy się QT5 Wsparcie, możemy również usunąć Python-pyqt5
z listy zależności potrzebnych do zbudowania oprogramowania, wymienionych w Medepends Tablica Bash on line 15
pliku:
Makedepends = („Python-pyqt5„ Sane ”rpcbind” kubki „libusb”)
Teraz, gdy zmodyfikowaliśmy PkgBuild
, Możemy przejść do następnego kroku i zbudować nasz pakiet za pomocą MakePkg.
Zbuduj pakiet
Kiedyś nasz PkgBuild
plik jest gotowy, możemy zbudować naszego zmodyfikowanego pakietu za pomocą MakePkg pożytek. Zanim to zrobimy, potrzebujemy innej rzeczy: ponieważ podpis pobranych plików źródłowych dla oprogramowania, które chcemy zbudować, jest automatycznie sprawdzana w stosunku do klawisza GPG, musimy powiedzieć klucz do naszego klucza GPG, w przeciwnym razie proces kompilacji nie powiedzie. W takim przypadku, aby zaimportować klucz:
$ gpg -Keyserver keyserver.Ubuntu.COM - -RECV 73D770CDA59047B9
Powinniśmy zostać powiadomieni, że klucz został pomyślnie zaimportowany:
GPG: Key 73D770CDA59047B9: Klucz publiczny „HPLIP (obrazowanie i drukowanie HP Linux)„ Importowany GPG: Całkowita liczba przetworzona: 1 GPG: Importowane: 1
Klucz zidentyfikowany przez 73D770CDA59047B9
jest kluczem używanym do podpisania Hplip ŹRÓDŁA TARBALL. Jeśli chcesz dowiedzieć się więcej o weryfikacji podpisu GPG, możesz spojrzeć na naszą jak zweryfikować integralność artykułu obrazu ISO dystrybucji Linuksa, który napisałem na ten temat.
Po przygotowaniu poruszamy się do katalogu, w którym PkgBuild
jest przechowywany
i uruchom następujące polecenie:
$ MakePkg -clean - -syncdeps - -rmdeps
Rzućmy okiem na opcje, których używaliśmy podczas wywoływania MakePkg narzędzie. Z --czysty
opcja (-C
) Możemy zrobić, aby resztki plików i katalogów zostały usunięte po udanej kompilacji pakietu. Użyliśmy również --syncdeps
(-S
): Gdy ta opcja jest używana, brakujący czas wykonywania i zależność kompilacji pakietu jest instalowana za pomocą za pomocą Pacman. Wreszcie użyliśmy --RMDEPS
opcja (-R
): spowoduje to, że wcześniej zainstalowane zależności zostaną odinstalowane po zakończeniu kompilacji.
Jeśli już wykonaliśmy kompilację pakietu i chcemy ponownie uruchomić proces, musimy również użyć --siła
(-F
) Opcja, ponieważ MakePkg Zwykle odmawia zbudowania pakietu, który już istnieje w tym samym katalogu).
Po uruchomieniu powyższego polecenia rozpocznie się kompilacja plików źródłowych i tworzenie pakietu. Zostaniemy poproszeni o potwierdzenie, że chcemy zainstalować brakujące zależności:
==> Pakiet tworzenia: HPLIP 1: 3.20.6-2 (wt 18 sierpnia 2020 10:29:43 CEST) ==> Sprawdzanie zależności czasu wykonawczego… ==> Instalowanie brakujących zależności… [sudo] Hasło dla EGDOC: Rozwiązywanie zależności… szukam sprzecznych pakietów… pakiety (18) JBIG2DEC -0.18-1 libidn-1.36-1 Perl-Alien-Build-2.29-1 Perl-Alien-libxml2-0.16-2 Perl-Capture Tiny-0.48-4 Perl-klon-0.45-2 Perl-DBI-1.643-2 Perl-Ffi-Checklib-0.27-2 PERL-PLILE-CDIR-0.1011-4 PERL-PILLE-1.23-4 Perl-Path Tiny-0.112-2 PERL-XML-LIBXML-2.0205-2 Perl-XML-NamespaceSupport-1.12-4 PERL-XML-SAX-1.02-1 PERL-XML-SAX-BASE-1.09-4 Foomatic-DB-Engine-4: 20200206-1 GhostScript-9.52-1 Net-SNMP-5.8-6 Całkowity zainstalowany rozmiar: 61.76 MIB :: kontynuuj instalację? [Y/n] y […] ==> Sprawdzanie zależności czasowego kompilacji… ==> Instalowanie brakujących zależności… rozwiązywanie zależności… szukanie sprzecznych pakietów… pakiety (6) GD-2.3.0-1 Libgphoto2-2.5.25-1 Libieee1284-0.2.11-9 Libxpm-3.5.13-2 rpcbind-1.2.5-3 Sane-1.0.30-1 Całkowity zainstalowany rozmiar: 26.50 MIB :: kontynuuj instalację? [Y/n] y […]
Po zakończeniu kompilacji zostaniemy poproszeni o potwierdzenie, że chcemy usunąć wcześniej zainstalowane pakiety. W tym momencie, jeśli wszystko poszło zgodnie z oczekiwaniami, powinniśmy znaleźć pakiet utworzony w katalogu określonym w MakePkg plik konfiguracyjny ( PKGDEST
informator). Domyślnie pakiet jest tworzony w katalogu roboczym. W tym przypadku HPLIP-1: 3.20.6-2-x86_64.PKG.smoła.Zst
Pakiet został wygenerowany; Możemy go zainstalować za pomocą Pacman:
$ sudo pacman -u hplip -1: 3.20.6-2-x86_64.PKG.smoła.Zst
Obsługuj konflikty na modernizacji systemu
Ponieważ wygenerowaliśmy niestandardowy pakiet na podstawie modyfikacji, którą wprowadziliśmy w środku PkgBuild
Plik, pojawia się problem: Gdy system zostanie zaktualizowany, można zainstalować nową wersję standardowego pakietu, a tym samym nadpisując wprowadzone modyfikacje. Jak możemy tego uniknąć? Prostsze rozwiązanie jest utworzenie pakietów, które modyfikujemy członka określonej grupy (powiedzmy, że chcemy to nazwać „zmodyfikowanym”), a następnie instruować Pacman Aby uniknąć modernizacji swoich członków. Aby to zrobić, musimy zmodyfikować PkgBuild
Ponownie i dodaj ten wiersz:
grupy = („Zmodyfikowany”)
W tym momencie musimy odbudować pakiet. Po zakończeniu musimy zmodyfikować /itp./Pacman.conf
złożyć i dodaj grupę do listy ignorowanych. Linia do modyfikacji jest 26
:
IgnoroGroup = zmodyfikowany
Pacman Menedżer pakietów pominie uaktualnienie pakietu, więc musimy to zrobić ręcznie w razie potrzeby.
Wnioski
W tym artykule zobaczyliśmy, jak możemy użyć Abs, System kompilacji łukowej do modyfikacji i ponownego zbudowania istniejącego pakietu, aby dostosować go do naszych konkretnych potrzeb. Widzieliśmy, jak pobrać pliki źródłowe pakietu, jak zmodyfikować PkgBuild
, i jak ponownie zbudować pakiet za pomocą MakePkg pożytek. Aby lepiej zbadać temat, możesz rzucić okiem na MakePkg Manpage i skonsultuj się ze stroną wiki systemu kompilacji arch.
Powiązane samouczki Linux:
- Rzeczy do zainstalowania na Ubuntu 20.04
- Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
- Linux Pliki konfiguracyjne: Top 30 Najważniejsze
- Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
- Czy Linux może uzyskać wirusy? Badanie podatności Linuksa…
- Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…
- Hung Linux System? Jak uciec do wiersza poleceń i…
- Zainstaluj Arch Linux na stacji roboczej VMware
- Pobierz Linux
- Mint 20: Lepsze niż Ubuntu i Microsoft Windows?