Jak zmodyfikować pakiet RPM za pomocą RPMRebuild

Jak zmodyfikować pakiet RPM za pomocą RPMRebuild

Wstęp

RPM jest jednym z najbardziej zaawansowanych menedżerów pakietów GNU/Linux. Stworzony przez Red Hat, jest używany w wielu dystrybucjach, jak na przykład Fedora i pochodne, takie jak RHEL i CENTOS.

Pakiety do zainstalowania z tym menedżerem pakietu mają .RPM rozszerzenie i są w zasadzie archiwa zawierające pliki dostarczone przez bibliotekę lub aplikację plus informacje potrzebne do zainstalowania i uruchamiania prawidłowo, takich jak jego zależności. W tym samouczku nauczymy się, jak używać rpmrebuild, Bardzo potężne narzędzie, które pozwala nam zmodyfikować istniejący pakiet RPM bez konieczności odbudowywania go z kodu źródłowego.

Naprawienie brakującej zależności w przykładzie pakietu Atom

Ze względu na ten samouczek naprawimy prawdziwy błąd, wpływając na urzędnika Atom Pakiet RPM edytora. Atom zależy od GCONF2, jednak ten pakiet jest pominięty na liście zależności zawierających Spec plik.

Nie możesz tego zauważać, jeśli zainstalujesz Atom podczas domyślnej instalacji stacji roboczej Fedora, ponieważ GCONF2 Pakiet jest już zainstalowany w systemie (prawdopodobnie jakiś inny pakiet wymaga go jako zależności).

Jednak podczas instalowania atomu w minimalnym środowisku pojawi się problem: pakiet zostanie zainstalowany bez problemów, ale podczas próby uruchomienia edytora wyświetlony zostanie następujący błąd:

/usr/share/atom/atom: błąd podczas ładowania udostępnianych bibliotek: libgconf-2.Więc.4: Nie można otworzyć plik obiektu udostępnionego: nie ma takiego pliku ani katalogu

libgconf-2.Więc.4 Udostępniony obiekt jest dostarczany przez GCONF2 Pakiet, ponieważ możemy łatwo zweryfikować wydanie następujące polecenie Linux:

$ dnf Whatprovides libgconf-2.Więc.4 gconf2-3.2.6-20.FC28.I686: Repo systemu konfiguracji przenoszenia procesu: Fedora dopasowana z: dostarcza: libgconf-2.Więc.4 

Napraw ten błąd, dodając brakującą zależność w pliku specyfikacji.



Krok 1 - Instalacja RPMREBUILD

Pierwszą rzeczą, którą musimy zrobić, jest zainstalowanie rpmrebuild pakiet, który jest dostępny w domyślnych repozytoriach Fedora. Polecenie może się różnić w zależności od tego, czy użytkownik jest w koło grupa, a zatem możemy użyć polecenia sudo lub jeśli chcemy uruchomić przełączanie poleceń na użytkownika root, za pomocą SU. Zakładam tutaj poprzedni przypadek:

$ sudo dnf instalacja rpmrebuild

Pozwól DNF wykonać swoje zadanie, a wkrótce pakiet zostanie zainstalowany w naszym systemie. W tym momencie musimy odzyskać pakiet ATOM z oficjalnej strony internetowej projektu. Użyjemy go jako bazy do budowy naszego niestandardowego obrotu.

Krok 2 - Modyfikacja pliku Spec

Spec Plik pakietu RPM zawiera istotne informacje o samym pakiecie, takie jak jego zależności i pliki, które dostarczają: to ten plik musimy zmodyfikować, aby naprawić ten mały błąd. Zakładając, że jesteśmy w katalogu, w którym pobraliśmy pakiet Atom, możemy wydać następujące polecenie Linux:

$ rpmrebuild -enp atom.x86_64.RPM

Wywołaliśmy rpmrebuild polecenie zapewniające trzy opcje: -mi, -N I -P. Zobaczmy krótko, po co są. Pierwsza opcja, -mi to krótka wersja --Edycja spekulowa I trzeba powiedzieć programowi, że chcemy edytować specyfikę pakietu; Druga, -N, Krótka wersja --Notest-Install Modyfikuje zachowanie programu, aby wygenerowany prędkość obrotowa nie została automatycznie zainstalowana na końcu procesu budowy.

Wreszcie, używając -P Lub --pakiet Opcja, określamy, że chcemy użyć rzeczywistej .RPM Plik pakietu jako podstawa naszej przebudowy, zamiast używać już zainstalowanej RPM.

Po uruchomieniu powyższego polecenia plik Spec zostanie otwarty na instancję naszego domyślnego edytora tekstu. W naszym przypadku chcemy zrobić Wymaga klauzula, aby uwzględnić brakującą zależność:

Wymaga: LSB-Core-Noarch wymaga: gconf2 # Oto nasza dodatkowa zależność wymaga: libxss.Więc.1 () (64-bit) wymaga: libsecret-1.Więc.0 () (64bit) 

Dodatkowo możemy zmodyfikować wersję pakietu, aby odróżnić naszą zmodyfikowaną wersję od oficjalnej. To bardzo proste: wszystko, co musimy zrobić, to zmodyfikować linię:



Wydanie: 0.1

W coś takiego:

Wydanie: 0.1_Custom

Po zakończeniu zapisujemy i zamykamy plik: Wystąpi na nasz terminal, pytając, czy chcemy kontynuować i zbudować zmodyfikowany pakiet:

Czy chcesz kontynuować ? (T/N)

Jeśli udzielimy odpowiedzi afirmatywnej i naciśnij Enter, budynek rozpocznie się (może to zająć trochę czasu). Należy zauważyć, że określony RPM nie zostanie zmodyfikowany na miejscu, ale nowy, na podstawie tego, zostanie wygenerowany. Pod koniec procesu nowy RPM będzie zlokalizowany w $ Home/rpmbuild/rpms/x86_64/ informator:

$ ls $ home/rpmbuild/rpms/x86_64/atom-1.27.0-0.1_Custom.x86_64.RPM 

Aby sprawdzić, czy zależność została poprawnie dodana, możemy użyć RPM i zapytać o nowe zależności pakietów:

$ rpm -qrp $ home/rpmbuild/rpms/x86_64/atom -1.27.0-0.1_Custom.x86_64.RPM GCONF2 Libxss.Więc.1 () (64bit) libsecret-1.Więc.0 () (64bit) LSB-Core-Noarch RPMLIB (CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1 

GCONF2 jest teraz zawarty na liście zależności pakietu. Staje się to oczywiste, gdy próbujemy zainstalować pakiet: jak zawsze, podsumowanie operacji, które należy wykonać, zostanie wyświetlone podczas instalowania pakietu z DNF:



[…] ================================================================= ================================ Rozmiar repozytorium wersji łuku =============================== ================================================== ================== Instalowanie: Atom x86_64 1.27.0-0.1_Custom @Commandline 99 m Instalowanie zależności: GCONF2 x86_64 3.2.6-20.FC28 Fedora 1.0 m at x86_64 3.1.20-10.FC28 Fedora 80 K Cronie x86_64 1.5.1-9.FC28 Fedora 105 K Cronie-anacron x86_64 1.5.1-9.FC28 Fedora 40 K Crontabs Noarch 1.11-16.20150630git.FC28 Fedora 24 K Ed x86_64 1.14.2-2.FC28 Fedora 80 K ESMTP x86_64 1.2-10.FC28 Fedora 57 K Libxscrnsaver x86_64 1.2.2-14.FC28 Fedora 29 K Libesmtp x86_64 1.0.6-14.FC28 Fedora 67 K Liblockfile x86_64 1.14-1.FC28 Fedora 30 K M4 x86_64 1.4.18-6.FC28 Fedora 221 K Mailx x86_64 12.5-28.Aktualizacje FC28 256 K NCURSES-Compat-libs x86_64 6.1-4.20180224.FC28 Fedora 331 k Redhat-LSB-Core x86_64 4.1-44.FC28 Fedora 44 K Redhat-LSB-Submod-Security x86_64 4.1-44.FC28 Fedora 21 K Spax x86_64 1.5.3-12.FC28 Fedora 216 K Time x86_64 1.9-1.FC28 Fedora 53 K Util-Linux-User x86_64 2.32-2.FC28 Fedora 94 K Podsumowanie transakcji ================================================ =================================== Zainstaluj 19 pakietów […] 

Pakiet będzie teraz działał poprawnie, ponieważ wszystkie jego zależności w czasie wykonywania są prawidłowo zadowolone.

Końcowe przemyślenia

W tym samouczku widzieliśmy, jak zmodyfikować Spec plik pakietu bez konieczności odbudowywania go z kodu źródłowego za pomocą rpmrebuild narzędzie. Naprawiono mały błąd, który polega na brakującej zależności w oficjalnym pakiecie Atom RPM.

Pobraliśmy i użyliśmy oficjalnego pakietu Atom jako podstawy naszej przebudowy, jednak przy tym samym narzędziu można pracować i modyfikować pliki, które są częścią już zainstalowanej RPM, aby wygenerować nową kompilację, która będzie zawierać modyfikacje. Rpmrebuild jest bardzo użytecznym i potężnym narzędziem; Sugestia, jak zawsze, nurkują w jego Manpage Aby go opanować odblokowanie pełnego potencjału.

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Mastering Bash Script Loops
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Jak odbudować pakiet za pomocą systemu kompilacji Arch Linux
  • Zagnieżdżone pętle w skryptach Bash
  • Jak zapytać informacje o pakietach za pomocą pakietu RPM…
  • Jak aktualizować centos
  • Jak migrować z Centos do Almalinux
  • Pobierz Linux