Jak odbudować pakiet za pomocą systemu kompilacji Arch Linux

Jak odbudować pakiet za pomocą systemu kompilacji Arch Linux

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

Wymagania oprogramowania i konwencje linii poleceń Linux
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?