abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 11:11 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 161 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 10:44 | Nová verze

    Po delší době vývoje vyšla nativní linuxová verze virtuálního bubeníka MT-PowerDrumKit 2 ve formátu VST3. Mezi testovanými hosty jsou Reaper, Ardour, Bitwig a Carla.

    balda | Komentářů: 1
    včera 21:33 | Nová verze

    Desktopové prostředí Budgie bylo vydáno ve verzi 10.10. Dokončena byla migrace z X11 na Wayland. Budgie 10 vstupuje do režimu údržby. Vývoj se přesouvá k Budgie 11. Dlouho se řešilo, v čem bude nové Budgie napsáno. Budgie 10 je postaveno nad GTK 3. Přemýšlelo se také nad přepsáním z GTK do EFL. Budgie 11 bude nakonec postaveno nad Qt 6.

    Ladislav Hagara | Komentářů: 0
    včera 13:00 | Humor

    OpenChaos.dev je 'samovolně se vyvíjející open source projekt' s nedefinovaným cílem. Každý týden mohou lidé hlasovat o návrzích (pull requestech), přičemž vítězný návrh se integruje do kódu projektu (repozitář na GitHubu). Hlasováním je možné změnit téměř vše, včetně tohoto pravidla. Hlasování končí vždy v neděli v 9:00 UTC.

    NUKE GAZA! 🎆 | Komentářů: 3
    včera 03:00 | Nová verze

    Byl vydán Debian 13.3, tj. třetí opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.13, tj. třináctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    10.1. 03:00 | Komunita

    Na stránkách Evropské komise, na portálu Podělte se o svůj názor, se lze do 3. února podělit o názor k iniciativě Evropské otevřené digitální ekosystémy řešící přístup EU k otevřenému softwaru.

    Ladislav Hagara | Komentářů: 6
    9.1. 19:44 | Zajímavý software

    Společnost Kagi stojící za stejnojmenným placeným vyhledávačem vydala (𝕏) alfa verzi linuxové verze (flatpak) svého proprietárního webového prohlížeče Orion.

    Ladislav Hagara | Komentářů: 5
    9.1. 19:11 | IT novinky

    Firma Bose se po tlaku uživatelů rozhodla, že otevře API svých chytrých reproduktorů SoundTouch, což umožní pokračovat v jejich používání i po plánovaném ukončení podpory v letošním roce. Pro ovládání také bude stále možné využívat oficiální aplikaci, ale už pouze lokálně bez cloudových služeb. Dokumentace API dostupná zde (soubor PDF).

    NUKE GAZA! 🎆 | Komentářů: 2
    9.1. 14:22 | Zajímavý článek

    Jiří Eischmann se v příspěvku na svém blogu rozepsal o open source AdGuard Home jako domácí ochraně nejen před reklamou. Adguard Home není plnohodnotným DNS resolverem, funguje jako DNS forwarder s možností filtrování. To znamená, že když přijme DNS dotaz, sám na něj neodpoví, ale přepošle ho na vybraný DNS server a odpovědi zpracovává a filtruje dle nastavených pravidel a následně posílá zpět klientům. Dá se tedy používat k blokování reklamy a škodlivých stránek a k rodičovské kontrole na úrovni DNS.

    Ladislav Hagara | Komentářů: 7
    9.1. 03:33 | Zajímavý software

    AI Claude Code od Anthropicu lépe rozumí frameworku Nette, tj. open source frameworku pro tvorbu webových aplikací v PHP. David Grudl napsal plugin Nette pro Claude Code.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (8%)
     (4%)
     (0%)
     (9%)
     (20%)
     (3%)
     (5%)
     (3%)
     (11%)
     (49%)
    Celkem 381 hlasů
     Komentářů: 8, poslední 10.1. 23:18
    Rozcestník

    Dotaz: perl - cesta k adresáři, kde je script

    Přemek Vyhnal avatar 18.9.2008 00:37 Přemek Vyhnal | skóre: 24 | blog: Toto není blog! | Dobřichovice
    perl - cesta k adresáři, kde je script
    Přečteno: 739×
    Zdravím

    Problém je následující:

    mám script v perlu, který potřebuje k práci nějaké další soubory.. např nějaký modul 'Modul.pm' a definici gui 'gui.glade'.

    Tyhle soubory jsou ve stejném adresáři jako script a pokud se script spouští ze stejného adresáře (./script.pl), není problém... použije se normálně use Modul nebo Gtk2::GladeXML->new('gui.glade').

    Problém nastane, když chci svůj program nějak „nainstalovat“ do systému abych ho mohl spouštět odkudkoliv nebo dokonce dopravit do jiného počítače. Soubory by se hledaly v adresáři, odkud to spouštím. Takže je potřeba nějak nastavit místo, kde je program nainstalován. Nejlépe tak aby se to nemuselo ručně přepisovat když se to nakopíruje jinam ;)

    Mám dvě řešení a ani jedno se mi nelíbí. Jak to udělat líp?

    1)

    přidat do @INC správnou cestu například spuštěním přes perl -I /kde/to/je /kde/to/je/script.pl.

    modul se načte správně a přístup k souborům by byl nějak takto: …->new($INC[0].'/gui.glade').

    Nevýhoda: musí se to obalit dalším scriptem, který spustí perl se správným parametrem -I a bude tam muset ta cesta být napevno

    2)

    zjistit cestu z $0 třeba takto: $dir = $0 =~ /(.*)\//; a pak jí v BEGIN přidat do @INC a soubory hledat v $dir

    Nevýhoda: Pokud si celý program uložím třeba do /home/neco/neco/... a někde v $PATH na něj udělám symlinky, $0 bude obsahovat cestu k symlinkům a ne tam, kde soubor je opravdu a tam to samozřejmě ty ostatní soubory nenajde.

    --

    A jako takový poddotaz bych se zeptal kam vlastně takovýto script/program „instalovat“? nechat všechny soubory v jedné složce a tu dát kamkoliv (/home nebo /opt) a v /usr/local/bin udělat symlinky, nebo do /usr/local/bin dát místo symlinku rovnou ten hlavní spustitelný script a ostatní soubory jinam (/usr/local/share/jmenoprogramu/ ?) Pak by zase script nemohl hledat své soubory ve stejné složce jako je sám...

    Zároveň bych chtěl aby to stejně fungovalo i v „nenainstalovaném“ stavu při testování – všechno v jednom adresáři v /home/…/…

    --

    Předem děkuji za jakékoliv tipy jak se tohle řeší
    NO RAPTORS!

    Odpovědi

    18.9.2008 07:33 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: perl - cesta k adresáři, kde je script

    Pro vytvoreni modulu (skript.pl muze byt soucasti modulu) byste mel pouzit standardni mechanizmy (Makefile.PL + instalaci). Viz dokumentace, man perlnewmod, odkazy na dalsi dokumentaci a tutorial tam atd. Vyhoda teto masinerie je, ze mate jeden archiv Vas-Modul-1.0.tar.gz, jehoz standardni instalaci muzete najednou nainstalovat, spustit testy, doresit zavislosti, provest transformaci nejakych retezcu (napr. ony cesty) a dalsi. Timto mechanizmem pro instalaci modulu se Vas::Modul nainstaluje nekam jako /usr/lib/perl5/site_perl/5.10.0/Vas/Modul.pm, pripadne skripty do /usr/bin, kde vse funguje jakychkoliv zasahu. Odinstalace je otazka smazani tohoto souboru nebo adresare Vas.

    Pokud chcete nejakou nestandardni cestu (coz lze u "normalniho mechanizmu" docilit take pres --prefix), spravne uvadite, ze musite manipulovat s @INC, a to bud pres -I nebo pomoci use lib (primo se hrabat v @INC neni dobry napad). Do tohoto muzete vice nahlidnout napr. v kapitole 12 perl cookbook. Konkretne v Keeping Your Own Module Directory se toto podrobne rozebira, vcetne metody jak "uhodnout" cestu ke skriptu pomoci modulu FindBin.

    Co se tyce nalezeni obecneho souboru v ramci vaseho modulu, doporuciji pouzit hash %INC, kde naleznete cestu, pres kterou se tento modul nasel. Napr. $INC{'Vas::Modul.pm'}.

    Jak se na to tak divam, tak to jednou vyda na dalsi dil meho serialu :-)

    In Ada the typical infinite loop would normally be terminated by detonation.
    18.9.2008 07:35 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: perl - cesta k adresáři, kde je script
    v prípade symlinkov si pozri readlink a -l, z toho už cestu poskladáš

    tretia možnosť: export PERL5LIB="/home/aaa/lib/perl5:/home/aaa/test/lib/perl5"

    Přemek Vyhnal avatar 18.9.2008 10:57 Přemek Vyhnal | skóre: 24 | blog: Toto není blog! | Dobřichovice
    Rozbalit Rozbalit vše Re: perl - cesta k adresáři, kde je script
    Dík moc vám oboum

    ten readlink zdá se bude stačit. Výroba „opravdového“ modulu se mi zatím zdá na mě moc složitá ale třeba se taky zadaří ;)

    Díky
    NO RAPTORS!
    Přemek Vyhnal avatar 18.9.2008 16:00 Přemek Vyhnal | skóre: 24 | blog: Toto není blog! | Dobřichovice
    Rozbalit Rozbalit vše Re: perl - cesta k adresáři, kde je script
    Tak jsem to snad vyřešil:
    nějak takto...
    use FindBin qw($RealBin);
    use lib $RealBin;
    use MujModul;
    my ($root) = $INC{'MujModul.pm'} =~ /(.*)\//;
    …
    my $soubor = "$root/soubor.xxx";
    
    Ještě jednou děkuji!
    NO RAPTORS!
    19.9.2008 21:18 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: perl - cesta k adresáři, kde je script
    my ($root) = $INC{'MujModul.pm'} =~ /(.*)\//;

    Tuhle vec muzete udelat take pomoci File::Basename nebo neco takovyho a bude to prenositelny i na jiny systemy nez unix. Jinak ten postup je vicemene to co jsem se snazil naznacit. :)

    In Ada the typical infinite loop would normally be terminated by detonation.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.