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 15:33 | IT novinky

    Po 26 letech od protiprávního policejního zásahu, který byl spuštěn na základě podnětu společnosti Microsoft, Obvodní soud pro Prahu 2 rozsudkem potvrdil, že Mironet prokázal významnou část svého nároku na náhradu škody vůči Ministerstvu spravedlnosti ČR. Soudem nyní přiznaná část nároku znamená rekordní odškodné, jaké kdy české soudy přiznaly za nesprávný postup státu. Spor byl rozdělen na několik škod, u pravomocně uzavřených částí

    … více »
    Ladislav Hagara | Komentářů: 9
    dnes 15:22 | Nová verze

    Lehké desktopové prostředí LXQt bylo vydáno ve verzi 2.4.0. Jde o převážně opravné vydání s drobnými vylepšeními podpory Waylandu.

    |🇵🇸 | Komentářů: 0
    dnes 12:44 | IT novinky

    Počítačová hra Kingdom Come: Deliverance 2 českého studia Warhorse získala cenu BAFTA v kategorii nejlepší příběh. V konkurenci pěti dalších nominovaných děl porazila i úspěšnou francouzskou hru Clair Obscur: Expedition 33, která v letošním ročníku získala cenu za nejlepší hru roku.

    Ladislav Hagara | Komentářů: 1
    dnes 12:22 | Komunita

    Projekt KDE oslaví v říjnu 30 let. Matthias Ettrich poslal 14. října 1996 do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu. Důležité milníky jsou zobrazeny na časové ose KDE.

    Ladislav Hagara | Komentářů: 1
    dnes 02:55 | Komunita

    Byly vyhlášeny výsledky letošní volby vedoucí/ho projektu Debian (DPL, Wikipedie). Poprvé povede Debian žena. Novou vedoucí je Sruthi Chandran. Letos byla jedinou kandidátkou. Kandidovala již v letech 2020, 2021, 2024 a 2025. Na konferenci DebConf19 měla přednášku Is Debian (and Free Software) gender diverse enough?

    Ladislav Hagara | Komentářů: 15
    dnes 00:55 | Nová verze

    Byla vydána nová verze 10.3 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Přidána byla podpora Orange Pi 4 LTS. Přibyl balíček Prometheus.

    Ladislav Hagara | Komentářů: 0
    včera 18:55 | Nová verze

    Implementace VPN softwaru WireGuard (Wikipedie) pro Windows, tj. WireGuard pro Windows a WireGuardNT, dospěly do verze 1.0.

    Ladislav Hagara | Komentářů: 2
    včera 16:11 | IT novinky

    V Pekingu dnes proběhl 2. ročník půlmaratonu humanoidních robotů. První 3 místa obsadili roboti Honor Lightning v různých týmech. Nový rekord autonomního robota je 50 minut a 26 sekund. Operátorem řízený robot to zvládl i s pádem za 48 minut a 19 sekund. Řízení roboti měli časovou penalizaci 20 %. Před rokem nejrychlejší robot zvládl půlmaraton za 2 hodiny 40 minut a 42 sekund. Aktuální lidský rekord drží Jacob Kiplimo z Ugandy s časem 57 minut a 20 sekund [𝕏].

    Ladislav Hagara | Komentářů: 5
    17.4. 17:11 | Zajímavý článek

    Stanislav Fort, vedoucí vědecký pracovník z Vlčkovy 'kyberbezpečnostní' firmy AISLE, zkoumal dopady Anthropic Mythos (nový AI model od Anthropicu zaměřený na hledání chyb, který před nedávnem vyplašil celý svět) a předvedl, že schopnosti umělé inteligence nejsou lineárně závislé na velikosti nebo ceně modelu a dokázal, že i některé otevřené modely zvládly v řadě testů odhalit ve zdrojových kódech stejné chyby jako Mythos (například FreeBSD CVE-2026-4747) a to s výrazně nižšími provozními náklady.

    MakeIranBombedAgain❗ | Komentářů: 6
    17.4. 12:44 | IT novinky

    Federální návrh zákona H.R.8250 'Parents Decide Act', 13. dubna předložený demokratem Joshem Gottheimerem a podpořený republikánkou Elise Stefanik coby spolupředkladatelkou (cosponsor), by v případě svého schválení nařizoval všem výrobcům operačních systémů při nastavování zařízení ověřovat věk uživatelů a při používání poskytovat tento věkový údaj aplikacím třetích stran. Hlavní rozdíl oproti kalifornskému zákonu AB 1043 a kolorádskému SB26-051 je ten, že federální návrh by platil rovnou pro celé USA.

    MakeIranBombedAgain❗ | Komentářů: 13
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (1%)
     (12%)
     (30%)
     (3%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 1364 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Zabalení python package do jedné spustitelné binárky

    18.6.2015 23:40 | Přečteno: 1819× | linux | Výběrový blog

    Python umožňuje spouštět i daleko podivnější věci než jen skripty s koncovkou .py, pojďme si ukázat jak vytvořit pod Linuxem z python balíku (adresáře) spustitelnou "binárku".

    Vytvořímě si složku "foo". V ní vytvoříme soubor "__main__.py" a do něj napíšeme

    print "wow!"

    Soubor __main__.py způsobí, že je složka foo nyní "spustitelná". Můžeme tedy zavolat "python2 foo".

    Nyní vytvoříme ze složky zip soubor:

    python2 -m zipfile -c foo.zip foo/*

    Zip soubor je také spustitelný:

    python2 foo.zip

    Vytvoříme soubor "foo" a do něj zapíšeme shebang:

    #!/usr/bin/env python2

    Nakonec obsah zipu zapíšeme na konec souboru foo a povolíme spuštení:

    cat foo.zip >> foo
    chmod +x foo
    

    Voilá, máme spustitelnou binárku! :)

    Uvedený postup ukázal David Bezley ve své přednášce Modules and Packages: Live and Let Die! (čas 45min) na konferenci PyCon 2015.        

    Hodnocení: 93 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    Josef Kufner avatar 19.6.2015 01:29 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    PHP má na tohle PHAR. Je to přímo formát souboru určený k tomuto triku a má i podporu ve formě knihovny na manipulaci s ním. Na začátku pak je klasický PHP kód jako takový malý booloader a zbytek souboru je archiv, se kterým se pracuje.
    #!/usr/bin/env php
    <?php
    Phar::mapPhar();
    include 'phar://myphar.phar/index.php';
    __HALT_COMPILER();
    ... a tady následuje archiv
    
    Hello world ! Segmentation fault (core dumped)
    19.6.2015 11:42 Dundee5 | skóre: 17 | blog: Dundee5 | Praha
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Ano, Phar je celkem podobný koncept, ale řešení v Pythonu se mi líbí daleko víc, protože jsem schopný ho kdykoliv použít i bez čtení manuálu. Vytvoření PHARu zdaleka tak jednoduché a přímočaré není.
    Kdo se vzdá svobody, aby získal jistotu, ztratí nakonec obojí. --Benjamin Franklin
    xxxxxx avatar 19.6.2015 01:36 xxxxxx | skóre: 23
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Super věc :)

    Proč ale python3 -m zipfile -c foo.zip foo/* funguje, kdežto zip foo.zip foo/* ne?

    Do zápisku by se pak hodil tenhle odkaz, zmíněn v prezentaci.
    19.6.2015 09:43 daks
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Proč ale python3 -m zipfile -c foo.zip foo/* funguje, kdežto zip foo.zip foo/* ne?
    protože takhle do archivu nacpeš i ten adresář, ale python očekává pouze jeho obsah, tohle by mělo fungovat:

    zip -j foo.zip foo/*
    xxxxxx avatar 19.6.2015 10:25 xxxxxx | skóre: 23
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Ahá, díky, to je přesně ono :)
    Bystroushaak avatar 19.6.2015 12:13 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Zajímavé, to jsem ani neznal. Kdybych to řešil, tak bych asi použil nuitku, která vytvoří skutečnou spustitelnou binárku.
    19.6.2015 16:02 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Zas tohle má výhodu, že to je přenositelný...
    Jendа avatar 19.6.2015 21:17 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Ale stejně potřebuješ interpret Pythonu (ve správné verzi) a moduly. Tak nějak nevidím výhody proti distribuci adresáře se soubory…
    Bystroushaak avatar 19.6.2015 23:51 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Jednodušší stahování (nemusíš to packovat zvlášť jen pro stažení). Taky se to dá přímo spustit, narozdíl od složky s kopou souborů, kde musíš hledat hlavní.
    19.6.2015 14:29 tom
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Funguje to diky tomu, ze ma zip hlavicku na konci souboru, takze na zacatek se da nacpat cokoliv. Nevyhoda je, ze ruzne nastroje oznaci typ souboru ruzne.
    Josef Kufner avatar 19.6.2015 16:35 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Teď se nabízí otázka, zda to je bug, nebo feature.
    Hello world ! Segmentation fault (core dumped)
    mirec avatar 19.6.2015 16:42 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky

    Bez tejto vlastnosti by nebolo možné urobiť samorozbaľovacie zip (s príponou .exe).

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Jendа avatar 19.6.2015 21:26 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Bez této vlastnosti je možné vytvořit samorozbalovací tar (s příponou sh). Tak proč ne zip?

    Typicky to vypadá nějak jako cat $0 | tail -c +30 | tar xf a pak je přilepený ten tarball. (btw. jak skipnout prvních N bajtů souboru? dd nefunguje a tail -c +N IMHO není podporovaný všude)
    mirec avatar 20.6.2015 08:14 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky

    S tarom musí človek vedieť presný offset. Na zip postačuje obyčajné unzip subor.exe.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    20.6.2015 11:30 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    S tarom musí človek vedieť presný offset.
    Přesně tak. Tyhle prasárny fakt miluju, ještě když je to nakombinovaný s naprosto dementním stahovacím systémem...
    xkucf03 avatar 20.6.2015 14:33 xkucf03 | skóre: 50 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky

    Jako mnohem větší prasárna mi přijde, že stáhneš soubor z Internetu po HTTP a ani nezkontroluješ jeho hash.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    20.6.2015 17:24 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Zabalení python package do jedné spustitelné binárky
    Kontrolu hashí jsem tam dřív měl, ale oni ten systém občas měněj a asi se to někde ztratilo. Kdyby neměli tak idiotskej systém, tak můžu hashe kontrolovat vestavěným mechanismem. Ještě to opravim.
    xkucf03 avatar 19.6.2015 23:53 xkucf03 | skóre: 50 | blog: xkucf03
    Rozbalit Rozbalit vše Java a binfmt
    Nyní vytvoříme ze složky zip soubor:

    Že by inspirace Javou? :-) (JAR)

    Nakonec obsah zipu zapíšeme na konec souboru foo a povolíme spuštení:

    V Javě není potřeba ani nic takhle hackovat – použije se standardní mechanismus: binfmt_misc.

    Vytvoříme si soubor Test.java s obsahem např.:

    import java.util.Arrays;
    
    public class Test {
        public static void main(String[] args) {
            System.out.println(Arrays.toString(args));
        }
    }
    Zkompilujeme a spustíme:
    #Zkompilujeme:
    javac Test.java
    
    #Vytvoříme JAR:
    jar cfe test.jar Test Test.class
    
    # nastavíme spustitelný příkaz
    chmod +x test.jar
    
    # spustíme jako běžnou binárku
    ./test.jar ahoj
    
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    20.6.2015 00:13 chrono
    Rozbalit Rozbalit vše Re: Java a binfmt
    Pri tom Python riešení netreba používať binfmt_misc a ani nemusí mať ten súbor nejakú konkrétnu príponu.
    xkucf03 avatar 20.6.2015 20:10 xkucf03 | skóre: 50 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Java a binfmt_misc

    binfmt_misc se řídí buď příponou nebo magickým číslem – takže přípona může být libovolná. Viz binfmt_misc: spouštíme javovské programy podobně jako nativní binárky

    BTW: pro Python by to mělo fungovat taky:

    $ cat /proc/sys/fs/binfmt_misc/python2.7 
    enabled
    interpreter /usr/bin/python2.7
    flags: 
    offset 0
    magic 03f30d0a
    
    $ cat /proc/sys/fs/binfmt_misc/python3.4 
    enabled
    interpreter /usr/bin/python3.4
    flags: 
    offset 0
    magic ee0c0d0a
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    21.6.2015 01:26 chrono
    Rozbalit Rozbalit vše Re: Java a binfmt_misc
    Keďže jar súbory sú normálne zip súbory, tak jediné rozumné riešenie je len tá prípona (a nechce sa mi hľadať, ako si to poradí s rôznou veľkosťou písmen). Pri tých zbalených python archívoch je binfmt_misc zbytočné, keďže tam stačí štandardný binfmt_script.
    xkucf03 avatar 21.6.2015 02:33 xkucf03 | skóre: 50 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Java a binfmt_misc
    Keďže jar súbory sú normálne zip súbory

    Úplně normální ne – sice je tam na začátku taky PK, ale další bajty jsou jiné. Můžeš si to vyzkoušet – příkaz file dokáže rozlišit ZIP a JAR.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Gilhad avatar 23.6.2015 17:35 Gilhad | skóre: 20 | blog: gilhadoviny
    Rozbalit Rozbalit vše Re: Java a binfmt_misc
    To dokážu taky :)

    zip

    jar
    23.6.2015 17:40 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Java a binfmt_misc

    Založit nové vláknoNahoru

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