Jak stworzyć pakiet RPM GNU Hello World w Fedora

Jak stworzyć pakiet RPM GNU Hello World w Fedora

RPM (akronim rekurencyjny dla menedżera pakietów RPM) to bezpłatny i open source zarządzający pakietami dla Linux. Chociaż został pierwotnie stworzony do użycia w Red Hat Linux, Teraz jest używany w wielu rozkładach Linuksa, takich jak Centos, Fedora, I OpenSuse. Co ważne, nazwa RPM odnosi się do programu menedżera pakietu i .RPM to format pliku.

W tym artykule wyjaśnimy na przykład na pisanie plików RPM, pokazując, jak łatwo tworzyć proste pakiety oprogramowania źródłowego i binarnego, na przykład, GNU „Hello World” Pakiet RPM w Fedora Linux dystrybucja. Zakładamy, że masz podstawowe zrozumienie gotowych pakietów RPM oraz w przypadku bezpłatnego procesu budowania oprogramowania typu open source.

Zainstaluj narzędzia programistyczne w Fedora

Zacznijmy od konfiguracji środowiska programistycznego w Fedora Linux Uruchamiając następujące polecenie, aby zainstalować niezbędne narzędzia do budowania RPMS.

$ sudo dnf instaluj fedora-packager @development-tools 
Zainstaluj narzędzia programistyczne w Fedora

Następnie dodaj swoje niepewne konto do 'kpina„grupa w następujący sposób (zamień Tecmint z faktyczną nazwą użytkownika). Umożliwi to przetestowanie procedury kompilacji w czystym chroot.

$ sudo usermod -a -g mock tecmint 

Teraz utwórz kompilację RPM w swoim ~/rpmbuild katalog i zweryfikuj kompilację za pomocą następujących poleceń. Pokazuje listę podlokalizowanych, która zawiera kod źródłowy projektu, pliki konfiguracyjne RPM i pakiety binarne.

$ rpmdev-setuptree $ Tree ~/rpmbuild/ 
Utwórz środowisko kompilacji

Oto, do czego jest przeznaczony do każdego katalogu:

  1. ZBUDOWAĆ - przechowuje różne %katalogów Buildroot po budowie pakietów.
  2. RPM - będzie zawierać binarne RPM w substaterejnych architekturze.
  3. Źródła - przechowuje skompresowane archiwa źródłowe i wszelkie łatki, w tym miejscu będzie ich szukać polecenie rpmbuild.
  4. OKULAR - przechowuje pliki specyfikacji.
  5. SRPMS - przechowuje źródło RPM zamiast binarnego RPM.

Budowanie rpm „Hello World”

W tym kroku musisz pobrać kod źródłowy (znany również jako "pod prąd„Źródło) projektu Hello World We Are Are, do ~/rpmbuild/źródło katalog z następującym poleceniem WGET.

$ cd ~/rpmbuild/Źródła $ wget http: // ftp.gnu antylopa.org/gnU/hello/hello-2.10.smoła.GZ -p ~/rpmbuild/źródła 

Następnie skonfigurujmy pakiet RPM za pomocą .Spec plik (nazwijmy to Witam.Spec w tym przypadku) w ~/rpmbuild/specyfikacje katalog, za pomocą RPMDEV-NEWSPEC program.

$ cd ~/rpmbuild/specs $ rpmdev-newspec hello $ ls 
Utwórz plik Specjal

Następnie otwórz Witam.Spec Plik za pomocą ulubionego edytora.

$ vim Hello.Spec 

Domyślny szablon powinien wyglądać tak:

Nazwa: Hello Version: Wydanie: 1%?Dist Podsumowanie: Licencja: URL: Źródło 0: BuildRequires: Wymaga: %Opis %Prep %Autosetup %kompilacja %konfiguracja %Make_Build %instalacja rm -rf $ rpm_build_root %make_install %pliki % Docs-Here %Changelog * Wt 28 maja 2019 Aaron Kili 

Krótko wyjaśnijmy domyślne parametry w .Spec plik:

  • Nazwa - używane do ustawienia nazwy pakietu.
  • Wersja - powinien lustrzał w górę rzeki.
  • Uwolnienie - liczby, które pracujesz w Fedorze.
  • Streszczenie - jest krótkim opisem pakietu, pierwsza litera powinna być wielkim, aby uniknąć skarg rpmlint.
  • Licencja - Sprawdź status licencji oprogramowania, sprawdzając pliki źródłowe i/lub ich pliki licencyjne i/lub, rozmawiając z autorami.
  • URL - Określa stronę główną pakietu oprogramowania.
  • Źródło 0 - Określa pliki źródłowe. Może to być bezpośredni adres URL lub ścieżka skompresowanego kodu źródłowego oprogramowania.
  • BuildRequires - Określa zależności potrzebne do zbudowania oprogramowania.
  • Wymaga - Określa zależności potrzebne do uruchomienia oprogramowania.
  • %przygotowanie - służy do tworzenia środowiska do budowania pakietu RPM.
  • %zbudować - służy do kompilacji i budowy kodów źródłowych.
  • %zainstalować - Służy do instalacji programów. Wymienia polecenia (y), które są potrzebne do skopiowania wynikającego pliku z procesu kompilacji do katalogu Buildroot.
  • %akta - W niniejszej sekcji wymieniono pliki dostarczone przez pakiet, które zostaną zainstalowane w systemie.
  • %Changelog - powinien przechowywać pracę nad przygotowaniem RPM, zwłaszcza jeśli na podstawie podstawowego źródła upstream znajdują się łatki bezpieczeństwa i błędów. Jest on automatycznie generowany podczas tworzenia Hello.plik specyfikacji. Dane Changelog są zwykle wyświetlane przez RPM -ChangeLog -q .

Teraz edytuj swój .Spec złożyć i wprowadzić zmiany, jak pokazano.

Nazwa: Hello Version: 2.10 Wydanie: 1%?Dist Podsumowanie: Program „Hello World” z licencji GNU: GPLV3+ URL: http: // ftp.gnu antylopa.org/gnU/%nazwa Źródło0: http: // ftp.gnu antylopa.org/gnU/%nazwa/%nazwa-%wersja.smoła.GZ BuildRequires: gettext wymaga (post): Informacje wymaga (preun): Informacje %Opis Pakiet programu „Hello World” %Prep %Autosetup %KONFITUN f %buildroot/ %_ infodir/dir %post/sbin/install-info %_ infodir/ %nazwa.Informacje %_ infodir/dir || : %preun, jeśli [1 $ = 0]; Następnie/sbin/install-info--delete %_ infodir/ %nazwa.Informacje %_ infodir/dir || : fi %pliki -f %nazwa.lang %_ mandir/man1/hello.1.* %_ infodir/hello.informacje.* %_ BINDIR/Hello %Doc Autorzy ChangeLog News Readme dzięki TODO %Kopiowanie licencji %Changelog * Wt. 28 maja 2019 Aaron Kili 

Zauważysz, że użyliśmy nowych parametrów w powyższym pliku, które nie zostały wyjaśnione. Są one nazywane makra, Służy do budowania inwokacji systemowych zdefiniowanych przez RPM do ustawienia ścieżek instalacyjnych dla pakietów. Dlatego zazwyczaj nie jest to lepsze niż kodowanie tych ścieżek w plikach specyfikacji, ale używać tych samych makr do spójności.

Poniżej znajdują się makra kompilacyjne i katalogowe wraz z ich definicjami i wartościami domyślnymi:

  • %make_build - jest używany w %zbudować Sekcja pliku specyfikacji uruchamia polecenie Make.
  • %nazwa - Definiuje nazwę pakietu lub katalogu.
  • %buildroot - %_ buildrootdir/%nazwa-%wersja-%release.%_ arch, tak samo jak $ buildroot
  • %_ infodir - %_ DatarootDir/Info, domyślnie:/usr/share/info
  • %_ mandir - %_ Datarootdir/man, domyślnie:/usr/share/man
  • %_ bindir - %_ exec_prefix/bin, domyślnie:/usr/bin

Zauważ, że można znaleźć dla tych wartości makra w /usr/lib/rpm/platform/*/makra lub patrz wytyczne dotyczące opakowań: makra RPM.

Budowanie pakietu RPM

Aby zbudować pakiety źródłowe, binarne i debugowanie, uruchom następujące polecenie RPMBuild.

$ rpmbuild -ba hello.Spec 

Po procesie budowy źródło RPM i binarne RPM są utworzone w … /SRPMS / I … /RPM / katalogi odpowiednio. Możesz użyć programu RPMlint, aby sprawdzić i upewnić się, że pliki specyfikacji i pliki RPM są zgodne z regułami projektowania RPM:

$ rpmlint Hello.Spec…/srpms/hello*…/rpms/*/hello* 
Sprawdź pakiety pod kątem błędów

Jeśli istnieją jakieś błędy, jak pokazano na powyższym zrzucie ekranu, napraw je przed kontynuowaniem.

Wreszcie, używaj Program próbny Aby sprawdzić, czy kompilacja pakietu odniesie sukces w środowisku kompilacji Fedora.

$ mock --verbose… /srpms /hello-2.10-1.FC29.src.RPM 
Sprawdź kompilację pakietu RPM

Aby uzyskać więcej informacji, zapoznaj się z dokumentacją Fedora: Tworzenie pakietów RPM.

To wszystko! W tym artykule wyjaśniliśmy, jak zwiększyć system Fedora, aby stworzyć prosty pakiet oprogramowania źródłowego i binarnego. Pokazaliśmy również, jak utworzyć pakiet RPM pistoletu Hello Word. Użyj poniższego formularza opinii, aby skontaktować się z nami w celu uzyskania pytań lub komentarzy.