Néha előfordul, hogy bizonyos feladatokra saját RPM telepítő fájlt kell készítened. Ez a leírás segít neked egy nagyon egyszerű rpm telepítő fájlt létrehozni.

Feladat a következő: Képzeljük el a következő szitut. Van egy programunk vagy scriptünk és azt akarjuk felrakni a szervereinkre. Úgy szeretnénk megcsinálni, hogy a vállalati repóra fel lehessen rakni és onnan bármikor telepíteni. Ehhez RPM-et kell készítsünk.
Hogy e feladatnak legyen némi haszna, ezért alapból a Meltdown-Spectra sebezhetőséget vizsgáló spectre-meltdown-checker scriptet fogom használni amit itt érhettek el.
Hát akkor lássunk hozzá!

Előfeltételek
Telepített CentOS8 rendszer (Vagy RHEL8)

cat /etc/redhat-release 
CentOS Linux release 8.2.2004 (Core)

Lépjünk be root-ként és frissítsük a rendszert, majd telepítsük fel a szükséges csomagokat!

yum update -y
yum install rpm* -y

Készítsünk egy felhasználót aminek a nevében elkészíthetjük az RPM fájljainkat, majd adjunk neki jelszót, majd lépjünk be a felhasználónkkal!

useradd -m rpmuser
passwd rpmuser

Muszáj lesz rendszergazdát csináljunk a felhasználónkból, hogy a végén a teszt telepítést meg tudjuk csinálni. Adjuk hozzá a wheel csoporthoz, hogy sudoers jogot kapjon! Ellenőrizzük az ID paranccsal!

usermod -aG wheel rpmuser
id rpmuser
uid=1002(rpmuser) gid=1002(rpmuser) csoportok=1002(rpmuser),10(wheel)

Lépjünk be a felhasználónkkal!

su - rpmuser

Hozzuk létre a szükséges könyvtárstruktúrát! Ehhez van egy jópofa parancsunk.

rpmdev-setuptree

Konzervatívok így is csinálhatják :P

mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

Ha létrejöttek a könyvtárak, akkor valami ilyesmi szerkezetet fogunk látni:

[rpmuser@rpm ~]$ tree rpmbuild/
rpmbuild/
├── BUILD
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS
5 directories, 0 files

Ezen felül létrejön a felhasználó könyvtárában a ​.rpmmacros fájl amiben az rpmbuild viselkedésének paramétereit adhatjuk meg. Itt adható meg a GPG kulcs is, de az másik mese lesz.

Lépjünk be a SOURCES mappába!

cd rpmbuild/SOURCES

Készítsük el a programunkat tartalmazó könyvtárat, majd lépjünk bele!

mkdir spectre-meltdown-checker-1.0 ; cd spectre-meltdown-checker-1.0

Ez az a pont amikor letöltjük a spectre-meltdown-checker programot. Valami ilyesmit kell lássunk.

[rpmuser@rpm spectre-meltdown-checker-1.0]$ wget https://meltdown.ovh -O spectre-meltdown-checker.sh
...
HTTP kérés elküldve, várakozás válaszra… 200 OK
Hossz: 220277 (215K) [text/plain]
Mentés ide: „spectre-meltdown-checker.sh”
spectre-meltdown-checker. 100%[=====================================>] 215,11K --.-KB/s idő 0,05s
2020-11-20 22:51:20 (4,65 MB/s) -- „spectre-meltdown-checker.sh” mentve [220277/220277]

Ellenőrizzük le! Ott van, tök jó.

[rpmuser@rpm spectre-meltdown-checker-1.0]$ ll
összesen 216
-rw-rw-r--. 1 rpmuser rpmuser 220277 nov 20 22.51 spectre-meltdown-checker.sh

Készítsük el a configure fájlt! Kelleni fog a becsomagolt tar fájlunkba amiből az RPM készül.

touch configure

A letöltött sh fájlra és a configure fájlra is adjunk 0755 jogot, majd lépjünk egy könyvtárral feljebb!

chmod 0775 *
cd ..

Be kell csomagoljuk a könyvtárunkat tar-ba. Ellenőrizzük! Ott van minden ahol kell, klassz.

tar czvf spectre-meltdown-checker-1.0.tar.gz spectre-meltdown-checker-1.0

[rpmuser@rpm SOURCES]$ ll
...
-rw-rw-r--. 1 rpmuser rpmuser 51466 nov 20 23.11 spectre-meltdown-checker-1.0.tar.gz

Ez volt eddig a könnyű része. El kell készíteni a spec fájlt ami tartalmazza az RPM fájl pontos konfigurációját. Ehhez lépjünk egy könyvtárral feljebb és adjuk ki a következő parancsokat:

cd ..
rpmdev-newspec SPECS/spectre-meltdown-checker.spec

Szerkesszük meg a fájlt a kedvenc szövegszerkesztőnkkel!

vim SPECS/spectre-meltdown-checker.spec

A tartalma a következő legyen:

Name: spectre-meltdown-checker
Version: 1.0
Release: 1%{?dist}
Summary: Spectre and Meltdown Checker Installer
License: Licenc típusa. PL: BSD
URL: https://torig.hu
# A tar fajlunkat kell megadni ide
Source0: spectre-meltdown-checker-1.0.tar.gz

Group: Miscellaneous
BuildArch: noarch

%description
# Leirast is adjunk hozza
Bemutato RPM a spectre-meltdown-checker felhasznalasaval. Sebezhetoseg ellenorzo telepitesehez.

%prep

%setup -q

%build

%install
rm -rf $RPM_BUILD_ROOT
# A progam a /opt/spectre-meltdown-checker konyvtarba fog kerulni a megadott jogosultsaggal.
install -d -m 0755 %{buildroot}/opt/spectre-meltdown-checker
# Megadjuk a fajlt is, hogy hova keruljon milyen joggal.
install -m 0755 spectre-meltdown-checker.sh %{buildroot}/opt/spectre-meltdown-checker/spectre-meltdown-checker.sh

%clean
# Takaritunk
rm -rf $RPM_BUILD_ROOT

%files
# Root lesz a tulajdonos es a group is.
%defattr(-,root,root,-)
# Ez lesz a fajl vegleges helye. Fajlok listaja amiket masolni fogunk. Nekunk most csak egy van.
/opt/spectre-meltdown-checker/spectre-meltdown-checker.sh

%changelog
* Fri Nov 20 2020 rpmuser Elso verzio.
-

Ebbe a spec fájlba kell beleheggeszteni minden paramétert ami az RPM telepítéshez és a program beállításához szükséges. Ha kész vagyunk, lehet sütni az RPM-et.

rpmbuild -ba SPECS/spectre-meltdown-checker.spec

Müller Cecíliásan: Akkor csináltuk jól, ha hibaüzenet nélkül lefutott és az RPM fájl létrejött a RPMS/noarch/ könyvtár alatt. Bármi hibaüzenet van, valószínűleg a spec fájl van elpélecolva, vagy a szükséges fájlok, jogosultságok vannak eltolva valahol. Ellenőrizzük, létrejött-e a fájl!

[rpmuser@rpm rpmbuild]$ ll RPMS/noarch/spectre-meltdown-checker-1.0-1.el8.noarch.rpm 
-rw-rw-r--. 1 rpmuser rpmuser 53988 nov 20 23.29 RPMS/noarch/spectre-meltdown-checker-1.0-1.el8.noarch.rpm

Super. Akkor telepítsük fel!

yum localinstall RPMS/noarch/spectre-meltdown-checker-1.0-1.el8.noarch.rpm

Miért nem rpm -ivh -val telepítem? Mert így bekerül a yum history-ba és a yum history undo paranccsal vissza lehet vonni a telepítést. Illetve yum remove paranccsal el lehet távolítani. Valami hasonlót fogunk látni a telepítéskor.

[rpmuser@rpm rpmbuild]$ sudo yum localinstall RPMS/noarch/spectre-meltdown-checker-1.0-1.el8.noarch.rpm 
[sudo] rpmuser jelszava:
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 1:01:37, ekkor: 2020. nov. 20., péntek, 22:31:50 CET.
Függőségek feloldva.
========================================================================================================
Csomag Architektúra Verzió Tároló Méret
========================================================================================================
Telepítés:
spectre-meltdown-checker noarch 1.0-1.el8 @commandline 53 k
Tranzakció összegzés
========================================================================================================
Telepítés 1 Csomag
Teljes méret: 53 k
Telepített méret: 215 k
Ez így jó? [y/N] y
Csomagok letöltése:
Tranzakció ellenőrzés futtatása
Tranzakció ellenőrzés sikeres.
Tranzakció teszt futtatása
Tranzakció teszt sikeres.
Tranzakció futtatása
Előkészítés : 1/1
Telepítés : spectre-meltdown-checker-1.0-1.el8.noarch 1/1
Ellenőrzés : spectre-meltdown-checker-1.0-1.el8.noarch 1/1Telepítve:
spectre-meltdown-checker-1.0-1.el8.noarch
Kész!

Yum historyban látszik a telepítés.

[rpmuser@rpm rpmbuild]$ yum history
Azonos | Parancssor | Dátum és idő | Művelet(ek) | Változt
-------------------------------------------------------------------------------
5 | localinstall RPMS/noarch | 2020-11-20 23:33 | Install | 1
4 | install rpm* | 2020-11-20 22:38 | Install | 69
...

A programot szükség esetén a telepítési helyről lehet futtatni.

[rpmuser@rpm rpmbuild]$ ll /opt/spectre-meltdown-checker/spectre-meltdown-checker.sh 
-rwxr-xr-x. 1 root root 220277 nov 20 23.29 /opt/spectre-meltdown-checker/spectre-meltdown-checker.sh

Program eltávolítása ezen a ponton lehetséges sudo yum history undo 5 paranccsal. Illetve sudo yum remove spectre-meltdown-checker paranccsal. Ezt utóbbit fogom most prezentálni, de te otthon nyájas olvasóm próbáld ki mindkettőt!

[rpmuser@rpm rpmbuild]$ sudo yum remove spectre-meltdown-checker -y
Függőségek feloldva.
========================================================================================================
Csomag Architektúra Verzió Tároló Méret
========================================================================================================
Eltávolítás:
spectre-meltdown-checker noarch 1.0-1.el8 @@commandline 215 k
Tranzakció összegzés
========================================================================================================
Eltávolítás 1 Csomag
Felszabadított terület: 215 k
Tranzakció ellenőrzés futtatása
Tranzakció ellenőrzés sikeres.
Tranzakció teszt futtatása
Tranzakció teszt sikeres.
Tranzakció futtatása
Előkészítés : 1/1
Törlés : spectre-meltdown-checker-1.0-1.el8.noarch 1/1
Ellenőrzés : spectre-meltdown-checker-1.0-1.el8.noarch 1/1
Eltávolítva:
spectre-meltdown-checker-1.0-1.el8.noarch
Kész!

Nagyjából ennyi létrehozni egy RPM-et a scriptünknek. Nem mentem bele abba, hogy hogyan készítsünk forrásból RPM-et, avagy mi van akkor ha több fájlunk van, illetve hogyan írjuk alá GPG kulccsal az RPM-et és hogy készítsünk hozzá repót, és hogyan készül a szalontüdő zsemlegombóccal (egyébként a szalontüdőt marha jól csinálom), mert akkor ez a kis leírás vetekedne a Grimm mesék hosszával és az egyenlőre nem célom.

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.