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?
- 7180 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
Jelenlegi megoldásnak készítettem egy aliast a bashrc-ben.
- A hozzászóláshoz be kell jelentkezni
És így működik?
Akkor a mount -o noexec kicsukható.
Milyen változat? 32 v. 64 bit? (felraknám virtualboxba, hogy kipróbáljam én is)
És milyen fájlrendszer van rajta? Btrfs vagy ext4?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Ha symlinket használsz, akkor mennie kell.
Hardlinket nem lehet partíciók között, mert az csak az inode-okkal machinál.
A symlink meg letesz egy bejegyzést az általad megadott útvonallal.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Pont ez ami nálam nem megy, és nem értem miért. De csak ezért nem fogom az egészet újra rakni. És egyébként több programmal is próbáltam, szóval nem egyedi eset.
- A hozzászóláshoz be kell jelentkezni
Í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
- A hozzászóláshoz be kell jelentkezni
Én a ~/bin-be szoktam rámolgatni, úgy simán megy.
--
openSUSE 12.2 x86_64
- A hozzászóláshoz be kell jelentkezni
Ez sem megy, de mivel az /usr/bin benne van a PATH-ban, így ott is meg kellene találnia.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
Én mindig teljes elérési utat adok meg, nem gondolkodtam még el a dolgon, viszont most kipróbáltam.
Ahány gépem van, mindegyiken így működik a symlink létrehozása. Még openbsd-n is. :)
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
Akkor erre rosszul emlékeztem, de most akkor megjegyzem.
- A hozzászóláshoz be kell jelentkezni
"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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni