Nem kicsit vagyok gondban. Egy ismerősöm gépét karbantartottam távolról, kikapcsolta. Épp a selinux-policy frissítése volt soron, így bekapcsolás után nem értem el távolról a gépet. Ismerős nem ért a géphez, Skype-on mondtam, mit tegyen. Az lett belőle, hogy letörölte az rpm parancsot.
Hogyan tegyem vissza, amikor ez éppen az a parancs, amivel feltelepíthetném? Selinuxot kikapcsoltam, most éppen elérem a gépet, de nem tudok telepíteni. A yum ezt mondja:
yum install rpm
error: Unable to open /usr/lib/rpm/rpmrc for reading: No such file or directory.
error: no dbpath has been set
error: cannot open Packages database in /%{_dbpath}
CRITICAL:yum.main:
Error: rpmdb open failed
Megoldás:
Az rpm csomagot kibontottam a saját gépemen, a file-okat átmásoltam ssh-n, majd chown root:root az érintett file-okra. Ezt követően
yum install rpm
így a pre- és post install scriptek is normálisan futottak.
- 5014 megtekintés
Hozzászólások
scp-zd rá másik gépről a letörölt fájlokat.
- A hozzászóláshoz be kell jelentkezni
Ha tudjuk, mik azok, akkor lehet, de ahhoz még azonos patchlevel és architektura sem árt. ;)
Még az alien jutott eszembe, ami tud konvertálni rpm-et tgz-be, ha minden törik...
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Azért egy RedHat/CentOS major verzión belül nagy csodák nincsenek.
- A hozzászóláshoz be kell jelentkezni
32bit vs 64bit okozhat gondot, ha a céleszköz 32bites os.
A major verzió meg elvétve ugyan, de lehet kevés, ha pl. olyan függőség frissül, ami magasabb verziót követel meg más csomagokban is.
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Na jó, de nem másik rendszerről kell nem egészen odaillő file-okat másolni. Repókból vagy build szerverről elérhetők a pontosan odaillő rpm csomagok. Ezt bontottam ki a saját gépemen, aztán átmásoltam file-osan a cél gépre. Utána bemásoltam a file-okat, ahova valók, a tulajdonost, csoportot remdbe szedtem. Ekkor már működött a telepítés, s feltelepítettem szintén az rpm-et. Egyrészt azért, mert a manual page-eket nem tettem fel, ahhoz nem volt türelmem, hiszen csak az kellett, hogy működjön. Másrészt azért, hogy a post install script konfigurálgasson kedvére, ha szeretne. Utána meg már teljes a rendszer, innen egyenesben voltam.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ok, most már értem, hogy mit írt a másik hozzászóló - én értettem félre, azt hittem, egy másik működő rendszerről a fájlstruktúrából való átmásolást mondja - de ez azóta letisztult.
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
(Természetesen én is bakiztam, és orvosoltam ugyanígy már ilyet, meg azt is, amit más bakizott el, és akkor, de a mai napig sem értem, hogy az RH semmitmondó csomagokat is fel képes venni a függőségi lánc elejére, de az rpm-et mégsem védi privilegizáltabban, mint a többi csomagot, hogy pl. egy spéci kapcsoló szolgálna arra, hogy az ember harakirizhessen, ha tényleg azt akarja.)
- A hozzászóláshoz be kell jelentkezni
Csomagkezelő ebben valóban lehetne szofisztikáltab, de ha jobban belegondolok, az rm -Rf /*
ellen sincs semmi védelem. Lényegében én voltam a hülye, hogy a számítástechnikához nem értő 64 éves keresztanyámnak mondtam, terminálon legyen root, aztán mondtam neki, mit tegyen. Arra a legkevésbé sem számítottam, hogy kétszer másolja be a parancsot, lehet, hogy billentyűismétlés miatt, s így a második az argumentuma lesz az elsőnek, valahogy így:
rpm -e --nodeps csomag1 csomag2 rpm -e --nodeps csomag1 csomag2
Az a második rpm az első argumentumaként okozta a bajt.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Durva hekk, de egy misét megér.
Bontsd ki az rpm-et (ha van rpm2cpio a gépen), és a cpio-t is egy könyvtárba, és másold a megfelelő fájlokat a megfelelő helyre (értsd: ha a cpio tartalmaz etc, usr, var és egyéb könyvtárakat, azok tartalmát értelem szerűen a gyökér fájlrendszer azonos könyvtáraiba tedd).
A másolás után futtass egy ldconfig-ot biztos, ami biztos alapon, aztán próbálkozz egy rpm -qa paranccsal, hogy jól megy-e.
Lehet, hogy érdemes belekukkantani a preinstall/postinstall scriptekbe is.
Ami megnehezítheti a dolgod, az az, ha a jóember néhány szükséges függőséget is eldobott - emiatt lehet, hogy pl. rpm2cpio-d sincs.
Én a google-t javaslom, "extract rpm without rpm binary" keresőfeltétellel, ha a fenti nem OK.
Ha viszont sikerrel jársz, akkor az rpm-et mindenképp telepítsd újra (talán -U, ha minden igaz, de lehet, hogy force-olnod is kell).
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Valami ilyesmin agyalok magam is. Kibontom a saját gépemen, aztán rsync-kel átküldöm. Ha odáig eljutok, hogy fel tudom tenni az rpm-et a gányolt rpm-mel, akkor nyert ügyem van. Ami még para, hogy lehet, megszabadultam a teljes rpm adatbázistól is, bár arra van valami rebuild opció emlékeim szerint.
Amúgy a törlés úgy történt, hogy én egy rpm parancsot mondtam neki Skype-on, ám azt kétszer másolta a terminálba. A második példányban lévő rpm valójában az első rpm parancs argumentuma lett így, és hát persze éppen az rpm -e, azaz a törlés parancs volt ez.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
http://www.thegeekstuff.com/2010/04/view-and-extract-packages/
és: Extracting the files from a RPM package using rpm2cpio and cpio
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Köszönöm az ötleteket!
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni