mc - "tehnikai" segítség kellene

Fórumok

Adott egy Linux alapú média box.
Tettem rá egy Morton Commandert: a /opt-ba került, (temérdek directory és szimbolikus link).

Átmásoltam cp -r -el a /hdd-re: a /hdd/opt/bin/mc így is működött.
Ezután lecseréltem a rendszert:
Linux uniboxhde 3.14.21 #1 SMP Thu Jul 7 19:05:59 CEST 2016 mips GNU/Linux
aminek következtében természetesen az /opt megszűnt.

És így már nem működik a /hdd/opt/bin/mc : No such file or directory.
Visszamásolva ismétműködik.

Hogyan lehetne "kicsikarni belőle", hogy mi a baja, mert ha már ott van a /hdd-n, akkor miért is foglalná a Flash-t.

u.i. gondolom valamelyik link nem relatív (../) hanem abszolút (/), piszok macerás lenne végignézni.

Hozzászólások

OFF:
Ma nem csak az USA-ban történnek furcsa dolgok.., kicsit mintha itt is álomvilág lenne
ON:
Morton Commander, ezt még nem hallottam:-)
Leírnád kicsit érthetőbben, mit szeretnél? Tettem rá egy mc-t a /opt-ba, és lecseréltem a rendszert... Linux-nál azért lehet, hogy ennek vannak kötöttségei. Ahogy indítottál, nem vagyok benne biztos, hogy ezt figyelembe vetted. Miért természetes, hogy megszűnt a /opt? Mit másoltál vissza, hova?
Debian hogy jön a képbe?

akkor "visszafelé" válaszolva:

nem igazán foglalkozom UNIX-okkal, Linux-okkal, (inkább csak "használom" őket), de azt sajnos már tapasztaltam, hogy ami az egyik rendszerben "így van", az a másikban meg "másként". És miután az uname azt írta ki, hogy "GNU/Linux", és ez az egyetlen topic, aminek a nevében ez szerepel, ezért itt kérdeztem.

Mivel az új box sw. újra flash-elte a box-ot, értelemszerűen megszűnt a /opt, ami az mc installálásakkor keletkezett (nem "én tettem" az /opt-ba, hame installáláskor "került az /opt-ba". És ha tudsz valami "kötöttségről", ami szerint egy opcionális sw. csak a root-ban lévő opt directory-ból tud futni, azt megoszthanád velem.

A commander nevét "én álmodtam", (nekem "határozottan rémlett", hogy volt/van ilyen):
Norton Commander, Volkov Commander, GNOME Commander, Midnight Commander, ...
Valószínűleg a Norton (nc)-ből és a Midnight (mc)-ből "alkottam" a Morton-t.
De ez a problémán nem változtat.

Ha jól tippelek, akkor erre célzol:
/etc/fstab options:
exec - Engedélyezi a bináris fájlok végrehajtását a fájlrendszeren.
noexec - Tiltja a bináris fájlok végrehajtását a fájlrendszeren.

nos, cat /etc/fstab
rootfs / auto defaults 1 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
usbdevfs /proc/bus/usb usbdevfs noauto 0 0
tmpfs /var/volatile tmpfs defaults 0 0
usbfs /proc/bus/usb usbfs defaults 0 0

én nem látok sem exec-et, sem noexec-et (igaz /hdd-t sem!), de "szerencsére" a mount-ban benne van
/dev/sda1 on /media/hdd type ext4 (rw,relatime,data=ordered)

De ha erről lenne szó, akkor a /hdd/opt/bin/mc (/hdd -> media/hdd) akkor sem működne, ha az /opt a root-ban is benne van, mivel a
ls -l /hdd/opt/bin
-rwxr-xr-x 1 root root 1032536 Feb 18 2012 mc
már alapból nem hajtódna végre.
Márpedig így megy!

Attól tartok, én is eljutottam oda, hogy nem értem a leírásodat.
Konkrétan a /hdd/opt/bin/mc-ről a topicindítóban azt írod, hogy nincs, itt meg hogy van.

Mindegy, feltételezve az utóbbit, és azt, hogy egyáltalán nincs /opt a rendszereden, viszont az mc úgy van fordítva, hogy ott akar élni, készíts egy szimlinket így:

ln -s /hdd/opt /opt
vagy
ln -s /media/hdd/opt /opt

- Tehát nem Debian-ról van szó ( ott egyébként alap a /opt könyvtár, ezért nem triviális a megszűnése)
- Nem tudjuk, hogy milyen linux van a cuccodon, vagy egyáltalán milyen cucc az..
- Nem tudjuk, hogy installáltad fel az mc-t oda ( felettél találomra egy lefordított csomagot valahogy, fordítottál forrásból, van a boxodon futó linuxhoz készített mc csomag? ) Nem feltétlenül a hely a kötöttség, hanem hogy hogy és mire van fordítva és a lib-eket hol keresi pl.
- Totál nem érthető, mi a /hdd , ez hogy jön a képbe, ezt te csináltad vagy az adott cuccon futó linux-nak valami saját hülyesége? Az install után miért kellett oda másolni az opt tartalmát.
Szóval ez nehéz szülés lesz.., gyanítom.

Szerintem érthető, főleg ha valaki figyelembe veszi, hogy ez egy célrenszer(mediabox), "cél Linux"-al. De még 1x:

Volt a midnight-commander_4.7.0.9-1_mipsel.ipk. Ezt installáltam.
Ennek következtében keletkezett a rendszerben a /opt (addig nem volt).

Amikor le szándékoztam cserélni a rendszert, gondoltam, hogy az mc remélhetőleg az új rendszerben is fog működni (egyszer már simán átmásoltam egy totál másmilyen box-ra (igaz, ott is a /opt-ra), és működött). Szóval, lementettem a HDD-re: /dev/sda1, ami mountolva van a /media/hdd-re, és amire még mutat egy /hdd link is: így lett a /hdd/oppt.

Tehát a /hdd/opt/bin/mc létezik.
A "No such file or directory" (azt gondoltam ezzel a "tradicionális" unix hibajelzéssel már mindenki találkozott), ugyebár nem azt jelenti, hogy "nincs ey a file", hanem csak annyit, hogy "valami probléma van": nincs exec attribútum, valahol valamilyen library hiányzik, stb. ...

Ezután jött az az 5let: maradjon csak az mc a HDD-n.
Na ez az ami nem működik.
De szerintem megoldható. Én is arra gondoltam, hogy ha nem az /opt-ban van, akkor valamit nem ott keres ahol az van. Pontosabban a /opt-ban keresi, és nem a /hdd/opt-ban.
Így a kérdésem úgy is feltehető: hogyan lehet lehetőleg egysyerűen megállapítani, hogy mi ez a valami? (mondjuk valamilyen eszközzel, amit én nem ismerek).

Mert volna pl. egy "faváágó" módszer: egyenként kitörlök mindent ay /opt-ból, és amikor a /hdd/opt/bin/mc nem szólal meg (No such file or directory), akkor megvan.
De azt gondoltam, van ilyesmire kifinomultabb módszer.

Hát, ennyi nehézség esetén én szerintem azt mondanám, hogy hagyom azt az mc-t, ami nem megy, és inkább újra telepíteném a csomagból, menjen fel az /opt alá és kész. Nem tudjuk, milyen rendszer ez, és mi van a csomagban, de a telepítés nem feltétlenül csak a /opt alá firkál és nem feltétlenül csak új fájlokat másol a rendszeredre. Simán lehet, hogy valahol máshol valami hiányzik.

Ha azon a fájlrendszeren kevés a helyed, akkor a telepítés után átmásolnám a hdd-re, és ahogy fent már írták, létrehoznék egy symlinket, hogy úgy tűnjék, mintha továbbra is a /opt alatt lenne.
Vagy esetleg a /hdd/opt könyvtárat felmountolnám a /opt alá.

akkor megint nem fogalmaztam érthetően:
nem kell újra telepíteni: ha a az /opt-ot visszaállítom, (visszamásolom a /hdd/opt-ot /opt-ként, akkor működik.

Az /opt -> /hdd/opt "ígéretesnek" tűnik, de azért már q...va kíváncsi vagyok, hogy az mc miért csak az /opt-ból működik.

u.i. bejött :)

Már szinte érteni vélem a dolgot!
Korábban volt az /opt fájlrendszerben szétszórva egy mc, most meg ugyanez /hdd/opt alatt van, és így nem indul a /hdd/opt/bin/mc
Valóban, most jöhet a barbatrükk:


cd /
test -d ./opt && echo 'Előbb tüntetsd el a /opt-ot'
ln -s hdd/opt ./opt

az első sorra magam is "rájöttem", :)
a másodikat meg már más is mondta, és meg is megcsináltam: ld. az u.i.-ot az előző hsz.-ben.

De a kérdésem továbbra is áll:
van a unix/linux-ban valami normális módszer annak megállapítására, hogy mi is hiányzik, amikor a shell csak annyit mond: No such file or directory?

Ha tényeg a shell írja ki, akkor az pont azt jelenti, hogy nincs ott az adott fájl (vagy könyvtár).

Ha jól értem, konkrétan meghívtad azt a bináris mc-t azzal a teljes elérési úttal, ahol az volt, mire kiírta "a shell", hogy nincs ott "valami".
Stimmel?
Ha igen, akkor a kiírást elkövető nem a shell volt, hanem éppen az a bináris.

Hogy mit keresett, és nem talált, azt ki lehet (vagy nem) következtetni azzal, ha a programodat így hívod meg:

strace /bla/bla/bla/mc
vagy
ltrace /bla/bla/bla/mc

Rengeteg borzalmat fog kiírni a std hibacsatornára, amit érdemes fájlba irányítani és elemezni. Az elemzés arról szól, hogy a borzalomban a vége felől előre haladva olyan részt találni, ami sikertelen fájlnyitást/keresést sejtet.

Kérdés, hogy arra a boxra fel tudod-e tenni ezeket az eszközöket.

Itt kérdőjeles a hasznossága, de általános esetben az
ldd /bla/bla/bla/program
sokat mesél arról, hogy a hívott binárisnak milyen rutinkönyvtárak kellenének a futáshoz; melyiket hol találja és melyiket sehol.

Valami ilyesmire gondoltam (volna!). Mint írtam, leginkább csak "használom" a rendszert, ezért ezt a strace/ltrace lehetőséget nem ismertem.

A volna meg azt jelenti, hogy ebben a spéci Linux-ban ezek sajnos nincsenek (Command not found), de ha legközelebb újra bootolom a PC-met, akkor kipróbálom egy feltehetően teljesebb értékű UBUNTU-ban.
Vagy arra is "fel kell tenni"?

Köszi a válaszokat.