Chcę tylko utworzyć plik RPM, który będzie dystrybuował mój plik binarny „foobar” dla systemu Linux, zawierający tylko kilka zależności. Ma plik konfiguracyjny /etc/foobar.conf i powinien być zainstalowany w / usr / bin / foobar.
Niestety dokumentacja RPM ma 27 rozdziałów i naprawdę nie mam dnia, aby usiąść i przeczytać to, ponieważ jestem również zajęty tworzeniem instalatorów .deb i EXE dla innych platform.
Jakie jest absolutne minimum, które muszę zrobić, aby utworzyć RPM? Załóżmy, że plik binarny foobar i foobar.conf znajdują się w bieżącym katalogu roboczym.
Odpowiedzi:
Często robię binarne rpm na pakiety własnościowe aplikacje - również najczęściej jako websphere - na Linuksie. Więc moje doświadczenie może być przydatne również dla ciebie, poza tym lepiej byłoby zrobić PRAWDZIWE RPM, jeśli możesz. Ale błądzę.
Tak więc podstawowy krok pakowania twojego (binarnego) programu jest następujący - w którym, jak przypuszczam, jest to toybinprog z wersją 1.0, zainstaluj conf w /etc/toybinprog/toybinprog.conf i miej bin do zainstalowania w / usr / bin o nazwie tobinprog:
1. utwórz środowisko kompilacji rpm dla RPM <4.6,4.7
2. Stwórz archiwum swojego projektu
3. Skopiuj do źródeł reż
4. zbudować źródło i binarne rpm
I to wszystko.
Mam nadzieję, że to pomoże
źródło
sudo dnf install rpm-build
- Polecenie Fedory 23 do instalowania rpmbuild v4.13 +Jako dystrybutor aplikacji, fpm brzmi idealnie dla Twoich potrzeb . Jest przykładem tutaj który pokazuje jak spakować aplikację ze źródła. FPM może tworzyć zarówno pliki deb, jak i pliki RPM.
źródło
Aby szybko zbudować RPM, sprawdź Togo:
https://github.com/genereese/togo-rpm
Projekt ma przewodnik Szybki start i udało mi się stworzyć podstawowe RPM w mniej niż 3 minuty.
Przykład z wykorzystaniem danych podanych w pierwotnym pytaniu:
1) Utwórz katalog projektu za pomocą skryptu:
2) Utwórz żądaną strukturę katalogów w ./root i skopiuj do niej swoje pliki:
3) Wyklucz katalogi należące do systemu z własności RPM:
4) (OPCJONALNIE) Zmodyfikuj wygenerowaną specyfikację, aby zmienić opis pakietu / zależności / wersję / cokolwiek itp .:
5) Zbuduj RPM:
-i twój RPM jest wypluty do katalogu ./rpms.
źródło
Podobnie musiałem stworzyć rpm z kilkoma plikami. Ponieważ te pliki były kontrolowane przez źródła i wydawało się to głupie, nie chciałem ich tarować tylko po to, aby rozpakować je na rpm. Wymyśliłem co następuje:
Skonfiguruj swoje środowisko:
mkdir -p ~/rpm/{BUILD,RPMS}
echo '%_topdir %(echo "$HOME")/rpm' > ~/.rpmmacros
Utwórz plik specyfikacji foobar.spec z następującą zawartością:
Zbuduj swój rpm:
rpmbuild -bb foobar.spec
Jest tam mały haker określający `` źródło '' jako bieżący katalog, ale wydawało się to o wiele bardziej eleganckie niż alternatywa, którą było, w moim przypadku, napisanie oddzielnego skryptu do utworzenia tarballa itp., Itd.
Uwaga: w mojej konkretnej sytuacji moje pliki zostały uporządkowane w folderach według miejsca, w którym powinny się znaleźć, na przykład:
tak więc sekcja przygotowawcza stała się:
Który jest trochę czystszy.
Poza tym jestem na RHEL5.6 z wersjami 4.4.2.3 rpm, więc twój przebieg może się różnić.
źródło
$RPM_BUILD_ROOT
aby%{buildroot}
dostać się do pracy nad moim „Red Hat Enterprise Linux Server wydaniu 6.9”. Ponadto dwa pliki, które zostały zainstalowane, musiały znajdować się w bieżącym katalogu, kiedy uruchomiłem rpmbuild. Zainstalowałem go na innym komputerze z:sudo rpm -Uvh --nodeps foobar-0.1a-1.x86_64.rpm
Jeśli
make config
działa dla twojego programu lub masz skrypt powłoki, który kopiuje twoje dwa pliki w odpowiednie miejsce, możesz użyć checkinstall . Po prostu przejdź do katalogu, w którym znajduje się plik makefile i wywołaj go z parametrem-R
(dla RPM ) i opcjonalnie ze skryptem instalacyjnym.źródło
Łatwy sposób na zbudowanie pakietu rpm z pliku binarnego (te kroki zostały przetestowane w Fedorze 18):
1) Najpierw musisz zainstalować rpmdevtools, więc uruchom te polecenia (uwaga: uruchom jako zwykły użytkownik)
2) W folderze ~ / rpmbuild / SPECS utwórz nowy plik: nazwa_pakietu.spec
3) Otwórz go w edytorze (takim jak gedit) i napisz:
4) Utwórz ~ / rpmbuild / BUILDROOT / nazwa_pakietu-wersja-wydanie.i386 i odtwórz ścieżki, w których zostaną umieszczone pliki, więc w tym przypadku na przykład utwórz:
5) Umieść w tych folderach pliki, które chcesz wstawić do pakietu:
usr / share / pixmaps / nazwa_pakietu.png to ikona binarnego usr / share / applications / nazwa_pakietu. desktop to zasady wstawiania programu do pozycji menu
6) nazwa_pakietu.desktop musi wyglądać następująco:
Kategorie to: standards.freedesktop.org/menu-spec/latest/apa.html
7) Uruchom
$ rpmbuild -bb ~/rpmbuild/SPECS/package_name.spec
8) Twój pakiet został wbudowany w folder ~ / rpmbuild / RPMS
jeśli zainstalujesz ten pakiet, zostanie on zainstalowany:
Podziękowania dla: losurs.org/docs/tips/redhat/binary-rpms
Aby uzyskać więcej informacji na temat tworzenia RPM, spójrz na ten link .
Oprogramowanie GUI java do budowania rpm: https://sourceforge.net/projects/javarpmbuilder/
źródło
Jeśli znasz Mavena, również to
rpm-maven-plugin
upraszcza tworzenie RPM: musisz napisać tylko to,pom.xml
które zostanie następnie użyte do zbudowania RPM. Środowisko kompilacji RPM jest tworzone niejawnie przez wtyczkę.źródło
Proces generowania RPM z pliku źródłowego:
źródło
Pliki RPM są zwykle budowane ze źródła, a nie z plików binarnych.
Musisz napisać plik specyfikacji, który opisuje, jak skonfigurować i skompilować aplikację; także, które pliki dołączyć do RPM.
Szybkie spojrzenie na podręcznik pokazuje, że większość tego, czego potrzebujesz, jest omówiona w rozdziale 8 - również, ponieważ większość dystrybucji opartych na RPM ma dostępne źródła, istnieje dosłownie zillion przykładów różnych podejść, na które możesz spojrzeć.
źródło