[Megoldva] Link programra nem müködik

Fórumok

Van a home könyvtáramban egy program, azt szeretnem, hogy parancssorból az elérési útvonal megadása nélkül tudjam indítani. Ha ubuntu alatt csinálok egy szoft linket a /usr/bin-be akkor működik. Ugyanez viszont nem működik opensuse (12.3) alatt.

Mi helyes eljárás opensusen?

Update: http://hup.hu/node/126008#comment-1632015

Hozzászólások

Két tippem van:
1. Valamiért a SuSE noexec opcióval mountolja a home-odat
2. SElinux szól bele, azzal viszont nem tudom, mit lehetne kezdeni.
Sajnos mióta a Novell kezébe került a SuSE, azóta kerülöm nagy ívben, szóval ezek tényleg csak tippek.

Jelenlegi megoldásnak készítettem egy aliast a bashrc-ben.

Igen ez működik. Opensuse 12.3 64 bit, nem hiszem, hogy számítana, de mindenféle csili-vili DE helyett openbox-ot használok. A fájlrendszer pedig ext4.

Amiről olvastam, hogy nem szereti ha a program egy másik partíción van, mint a link, de ha a programot átmásolom /opt-ba, és onnan linkelem, akkor sem működik.

Nálam működik, openSUSE 12.3 x86-64, leforgattam egy hello world-öt, aztán sudo ln -s /home/****/a.out /usr/bin/hellow, sudo chmod o+x /usr/bin/hellow, hellow.

BlackY

Ír valamit, amikor nem működik? Még ha noexec is a partíció, ahol van, ha teljes útvonallal megpróbálod elindítani a programot, akkor is legalább egy Permission denied-ot kapnod kéne.

#mount | grep /windows/C
/dev/sdb3 on /windows/C type fuseblk (rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
#sudo ln -s /windows/C/a.out /usr/bin/hellow2
#/usr/bin/hello /* <- ez még az előző hozzászólásomból maradt itt */
Hello World!
#/usr/bin/hellow2
bash: /usr/bin/hellow2: Engedély megtagadva
#ls -la /usr/bin | grep hellow
lrwxrwxrwx  1 root root          20 aug    4 20.31 hellow -> /home/*****/a.out
lrwxrwxrwx  1 root root          16 aug    6 10.58 hellow2 -> /windows/C/a.out

BlackY

Én a ~/bin-be szoktam rámolgatni, úgy simán megy.

--
openSUSE 12.2 x86_64

A következő volt a probléma, elég kezdő problémának tűnik, de nem emlékszem, hogy ez ne működött volna Ubuntun.

Ahogy először így csináltam a linket:
ln -s binary /usr/bin

Aztán így a működőkepés:
ln -s /home/develru/dir/binary /usr/bin

Javítsatok ki ha tévedek, de más disztrók alatt ez nem így van. Miért kell explicit megadni a teljes elérési utat?

Működik az így is, úgy is, csak mást mutat így, és mást úgy (speciális esetben lehet ugyanaz a kettő).

A relatív megadás a relokálhatóság (akár komplett könyvtáraké) fegyvertárának lényeges eleme. Érdemes számolni vele, mielőtt az ember mountonmount csomóvá tenné a fájlrendszerét.

"A következő volt a probléma, elég kezdő problémának tűnik, de nem emlékszem, hogy ez ne működött volna Ubuntun.

Ahogy először így csináltam a linket:
ln -s binary /usr/bin"

Biztosan nem működött (vagyis nem így hoztad létre a szimlinket), ui. a szimlink betű szerint azt tartalmazza, ami a linknév előtt szerepel. Esetedben ez azt jelentené, hogy van egy /usr/bin/binary nevű linked, ami erre mutat: binary - vagyis a saját könyvtárában lévő, binary nevű fájlra, magyarul önmagára. Szingularitásnak még nem az igazi, szkripthívásnak már nem az.

- o -

Egyébként a *nix etikett ősi oláh szokásnak tartja a /usr/bin magáncélú turkálását, amitől sorvad a gerinc, és vakságot okoz. Ha felteszel egy csomagod, ami tartalmaz egy /usr/bin/binary nevű fájlt, és furcsán kezd viselkedni a "szkripted", be fogod látni az illemszabályok jelentőségét.

Ha nem felel meg se a PATH-ban szereplő könyvtárban elhelyezés, sem ~/binary néven hívás, és egyéb konformista megoldások, akkor a /usr/local/bin lehet a kijelölt hulladéklerakó hely.

Akkor átrakom a /usr/local/bin-be.

De ha van ötleted a probléma jobb megoldására, minden kreatív kritikát szívesen fogadok.

Szóval van egy program, amit akár parancssorból kell indítani, akár egy 3. program indít, egyszerűen csak az alkalmazás nevével ("binary") akarja indítani.

Parancssoros megoldás lehet az alias. Globálisabb a PATH-ban való elhelyezés. De mindkettő konfliktust okoz, (ill. PATH esetén nem az elvárt program indul)ugyanúgy mint a /usr/bin esetén.