Debian /bin/ törölve

Fórumok

Sziasztok!

Leírom röviden a lényeget, hogy értsétek:
Van egy távoli gép (csak ssh-en férek hozzá) Nos a napokban volt egy újratelepítés, minden tök jó, és egy régi hdd-re le lett mentve minden előtte, az egész komplett rendszer. A lényeg, hogy bekonfigoltam mindent, tök jól ment, és mikor végeztem, gondoltam hogy akkor leselejtezem a régi vinyóról a nem kellő dolgokat.
Jött a bin mappa. És itt rontottam el!
Letöröltem, így:
rm -rf /bin/
Pedig ugye így kellett volna:
rm -rf ./bin/
Tehát kimaradt a pont, és nem a régi vinyóról töröltem le, hanem az éles rendszerből töröltem ki az egészet.
Bár megfagyott az ereimben a vér, hogy hogy lehettem ilyen balek, -és ssh sem ment, tehát nem fogadott új csatlakozásokat-, de szerencsére nem léptem ki, visszamásoltam a régi -mentésben lévő- bin mappát:
./bin/cp -R ./bin/ /bin/
(ugye még mindig a mentés mappában tartózkodtam)
Ez által újra működnek az alap parancsok, és ssh is beenged, csak az a gond, hogy ezek a binárisok még debian Leny alatt voltak, most meg már a legújabb van fenn, szóval némely program panaszkodik:
# ps
Signal 11 (SEGV) caught by ps (procps version 3.2.8).
Please send bug reports to or

Szóval kérdésem, -most hogy nem halt meg a rendszer-, hogyan tudnám visszarakni a normális /bin/-t? Próbáltam másik feltelepített linuxról átmásolni, de nem akarja az igazat, azt írja hogy nem futtatható bináris fájl. Újra lehet valahogy fordítani esetleg? Vagy rakjam újra az egészet, ha akarom hogy rendesen menjen?

A segítségeket előre is köszönöm!

---
Alper061

Hozzászólások

...ha feltelepíted ugyanazt a környezetet/csomagokat otthon, ráeresztesz egy tar-t és tömöríted mondjuk gzip/bzip2...-vel, ezt felmásolod a gépre, kibontod és azt másolod be?

Mire ír nem futtatható bináris filet? Mik a jogosultságok? Futtatható, aminek annak kéne lennie?

Próbáltam felrakni egy ugyanolyan debiant, aztán átrakni a bint, és chmod +x-el futtatási jogot adni mondjuk az áttöltött binben szereplő wget binárisnak, meg is adta, megpróbáltam lefuttatni, de nem ment, csak annyit ír, hogy "Nem futtatható bináris fájl"
Sőtt, első körben felülírtam az éles rendszeren a /bin/ mappát a frissen telepítettével, hogy úgyis menni fog, aztán csodálkoztam hogy mért ír még az ls parancsra is nem futtatható a bináris file hibaüzenetet. Aztán hogy legalább az alap parancsok működjenek, visszamásoltam a Leny-es régi mentést, amivel meg egész jól megy, csak régiek a binárisok, ezért pl ps hibát ír (első hsz-ben ottvan mit)
Az architektúra nem lenne jó amire telepítek? (virtuális gép) A régi mentésben szereplő dolgok azok ugyan azon a fizikai szerveren lettek telepítve pár éve (ahol most letöröltem a bint), és ugye most az van bemásolva, az megy félig-meddig.
Jogokkal elvileg nincs gond, az meg van adva.

Milyen hardver/architektúra a célgép? file "parancs" mit mond rá és a lenny-féle binárisokra?

Amúgy ha megvannak a csomagok (amikből törölve lett), elvileg egy apt-get install --reinstall segíthet, ill. még talán az apt-cache-ből elő tudod szedni a letöltött .deb fileokat és azokat feltenni újból (dpkg-vel).
Mivel friss telepítést írsz, szerintem ott lesz mind.

(ez a friss telepítés)
# file ./chmod
./chmod: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped
(ez a szerver régi mentése)
# file /bin/chmod
/bin/chmod: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

Akkor értem már, 32 bites telepítéssel működne ugye?

Ez jogosan nem futtat 64-bites binárist. :)

32-bites file-okat ennie kell, csak olyan rendszerből tedd át, ami azonos verziójú és ugyanazok a csomagok vannak telepítve rajt.

Pl. a dpkg csomaglista alapján fel tudsz tenni egy ilyen rendszert - akár debootstrappel, csak add meg neki az architektúrát is, ha 64-bites gépen próbálod.

A megoldás relatív egyszerű lesz:
1. Megnézed, hogy milyen parancsok vannak a /bin könyvtárban és ezek melyik csomagokhoz tartoznak.
2. Ezeket a csomagokat letöltöd mondjuk a saját gépedre, kicsomagolod belőle a bináris állományokat(/bin-be kerülők).
3. Belépsz SFTP-vel a gépre és a /bin mappába bemásolod a kicsomagolt állományokat(felülírás).
4. Megnézed, hogy most mennek-e a parancsok. Ha mindegyik megy, akkor félig örülsz.
5. Futtatsz egy apt-get update és apt-get upgrade utasítást.
6. Óvatosságból végigfrissíted az összes /bin-t érintő csomagot. Így biztos, hogy minden friss, konzisztens és futnia is kell minden programnak.
7. Újraindítod a gépet és a végén örülsz.

Nem ismerem a Debian csomagkezelőjét, de ha ez a csomagok nevét adja vissza, akkor jó lehet:

dpkg-query -S /bin/* | sort -u

Fedorán viszont biztos, hogy így csinálnám:

rpm -qf /bin/* | sort -u

Persze, ha azt is vizsgálja a csomagkezelő pl. egy hash alapján, hogy az illető file ténylegesen a csomag része-e, azaz nem csak a név egyezőségét nézi, akkor az elgondolásom nem működik.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Ez működik:
dpkg-query -S /bin/* | sort -u
Idő közben egy 32 bites telepítésről átmásoltam a cuccokat, mostmár a top sem ír hibát.
De gondolom még hátravan, hogy valahogy újrakéne rakni / frissítni a binben lévő dolgokat
A "dpkg-query -S /bin/* | sort -u" szépen kiírja a dolgokat, ezt hogyan lehetne szétvenni (cut-tal próbáltam de nem jön össze)
Mert akkor újra lehetne így rakni, nem?:
apt-get --reinstall $(dpkg-query -S /bin/* | sort -u |cut nemtudommilyenparaméter)
És akkor megoldódna az egész?

Vigasztalasul: jartam mar hasonloan en is:-))) tavoli szakadozo netrol beleptem a szerverre, mc, nyomogattam a tab-ot, hogy lassam, mikor reagal. Konyvtarat akartam torolni, tab-tab-tab (itt ugy tunt, hogy jo oldalon allok, ) f8 enter (na csak itt ervenyesult az utolso tab) persze, hogy a masik panelen a /bin -nek integethettem..

A szolgáltatások mentek, csak belepni nem lehetett.

Masik ugyanolyan rendszerrol tar-ral atraktam a /bin-t.

Miért is?


cd /etc
svn up 

...

scp backup:/$(date -d yesterday +%Y%m%d)_$(hostname -f)_etc.tgz / 
cd /
tar xvzf $(date -d yesterday +%Y%m%d)_$(hostname -f)_etc.tgz

...

rsync -avuzb --exclude '*~' backup:backup/$(hostname -f)/etc /etc
...

meg még vagy ezer módja... Ha előre gondolsz erre a lehetőségre :-P

Ilyen gyakorisággal minek egyáltalán menteni?
Én minden este rádugom a mobil vinyót a laptopra, elmegyek fogat mosni, és mire visszaérek a time machine már le is mentette az aznap történt módosításokat, és kész is vagyok. Pont a napokban volt rá szükségem, hogy visszaállítsam a komplett rendszert. Menteni kell és kész.
--
HUPbeszolas FF extension

find /bin -type f -exec dpkg-query -S {} \; 2>/dev/null | cut -d":" -f1 | sort | uniq
Ezeket felrakod újra :) Mondjuk így:
find /bin -type f -exec dpkg-query -S {} \; 2>/dev/null | cut -d":" -f1 | sort | uniq | xargs apt-get install
--
HUPbeszolas FF extension

Az extundelete nem segíthet?

----
"Mert nincs különbség: mindenki vétkezett, és híjával van az Isten dicsőségének. Ezért Isten ingyen igazítja meg őket kegyelméből, miután megváltotta őket a Krisztus Jézus által." (Róma 3.22-24)

http://deblogian.blogspot.com

"extundelete is a utility that can recover deleted files from an ext3 or ext4 partition"
http://extundelete.sourceforge.net/

----
"Mert nincs különbség: mindenki vétkezett, és híjával van az Isten dicsőségének. Ezért Isten ingyen igazítja meg őket kegyelméből, miután megváltotta őket a Krisztus Jézus által." (Róma 3.22-24)

http://deblogian.blogspot.com

Nos kiszedtem a parancs kimenetéből a csomagokat, mert volt benne olyan is amit apt nem akart telepíteni. A végeredmény:
apt-get install --reinstall bash dash busybox bzip2 console-setup coreutils cpio dash debianutils grep gzip hostname iproute iputils-ping kbd less login module-init-tools mount nano netcat-traditional net-tools procps psmisc sed sysvinit-utils tar util-linux initscript

Ezeket felraktam, vagyis újra, és úgy látszott minden ok, szuper.
Gondoltam akkor mehet egy restart.
Ment
És nem tudom elérni a gépet, nem indult el semmi, sem pingre nem válaszol, se ssh, se webszerver, semmi!

Ilyenkor nem lehet semmit tenni igaz?
(A gép távol van)

Mi okozhatta? Ha a közelébe kerülök mit kéne megnéznem legelőször?

"Gondoltam akkor mehet egy restart."
: )
Akkor most levonjuk a tanulságot: épphogy életre tákolt rendszert csak akkor bootolunk re [:)], ha van konzol hozzáférésünk. Addig örülünk minden másodpercnyi uptime-nak.

"volt benne olyan is amit apt nem akart telepíteni"

ezek után szerintem elég egyértelmű, hogy mitől nem bootol.

"Ha a közelébe kerülök mit kéne megnéznem legelőször?"
A monitort, amin a bootüzenetek vannak. :)

Én csak 4*4.5G (igen, szumma 18G...) stripe-olt raid-tömböt rohasztottam szét anno, mert elhittem azt, hogy az új külső diszkdobozon a peremkerekes kapcsoló az eszköz scsi ID-ját mutatja. Azért backupból visszament majdnem minden, az utolsó két nap alatt rögzített cucc veszett csak el :-P

Hogy konstruktívabb legyek:
ip konzol (vagy kérsz vagy beépített). Megnézed, hogy hol áll a boot, megírod, vagy kijavítod.
Lehet, hogy sikerül valahogy single userben elindítani a rendszert, akkor fogod, és a bin könyvtárat egy ugyanolyan telepítésből (squeeze van rajta vagy mi ugye?) átrakod. A másik megoldás, hogy megkérsz egy ottani operátort, hogy rakjon be egy bootolható linuxot, teljesen megfelel egy ubuntu, debian, gentoo akármilyen telepítőcd, amin valamilyen alap környezet van, aztán chrootolsz egyet, és újrarakod a csomagokat (szvsz ez a leggyorsabb megoldás).

Nem vagyok Debian szakértő, de nem lenne egyszerűbb és gyorsabb újratenni azt a rendszert?
Jó, jó tudom! Ez olyan Windóz szokás.. De már legalább 3 órája szívsz vele, és a telepítés ~40 perc. Vagy nincs senki a gépnél, hogy megkérd, hogy betegye a CD-t?

Jogos. Gondoltam erre is mikor írtam a postot, de valószínűleg a problémával küzdő is tud róla, ezért nem valószínű, hogy elhibázná reinstallkor.
Egyébként ezért tárolom külön partíción (de inkább külön hdd-n) a rendszert, külön a home-ot, és külön a szerver cuccokat. Tanulás során számtalanszor vágtam már haza a komplett rendszert, és az újratelepítés gyorsabb volt így, mert csak be kellett írogatni a partíciókat fstabba oszt kész is a cucc.

Nem tudom, én azért írtam, amit írtam, mert nem (nem sértésből, ilyesmiből, hanem benyomásilag) egyértelmű számomra, hogy ezeket tudná a topicnyitó. Velem már előfordult, igaz, csak otthoni rendszeren, hogy emiatt vesztettem adatbázist. Szerencsére semmi komolyat, lényegében tesztadatok. De azért fogtam a fejem, hogy mekkora állat vagyok.

Értettem az indító hsz-ből is, hogy nem egy előtted lévő gép. Gondoltam akad arra fele egy konzol is ott amin látod, hogy mit ír a képernyőn, esetleg betudsz avatkozni ha úgy van. Aztán megkérsz valakit, hogy tolja már be a CD-t és..

Hangsúlyozom, nem vagyok Debian szakértő. Én SUSE-hoz szoktam, azon egyszerű ez..

Ha sikerül visszahozni a gépet, akkor lehet hogy jól jársz a /var/cache/apt/archives-ben lévő .deb fájlok kibontásával...
--
Debian Linux rulez... :D

Egyszerű a megoldás:


dpkg -S /bin

^ ez kiíja mely csomagok pakoltak a /bin -be, ezeket kell csak újra feltelepíteni (apt-get --reinstall install PKG), és probléma megoldva.

Minden előzőleg teleített csomag újratelepítése:
for csomag in `grep Package /var/lib/dpkg/status|cut -c10-`; do apt-get --reinstall install $csomag; done

Nos a helyzet a következő volt a géppel:
Az fschk végzetes hibát ír ki, valamint initctl is hibával szállt el -még újraindítás előtt-, valamint ifconfig sem ment, így hálózati címet sem tudott kérni.

Mivel abban a szerverteremben nincs lehetőség ip konzolra, ezért hazahoztam, és mindent mentek/újrahúzom, így lesz a legegyszerűbb.

Mégegyszer köszönöm mindenkinek a segítségét!