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í
×
    včera 16:33 | Nová verze

    Svobodná historická realtimová strategie 0 A.D. (Wikipedie) byla vydána ve verzi 28 (0.28.0). Její kódový název je Boiorix. Představení novinek v poznámkách k vydání. Ke stažení také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Nová verze

    Multimediální server a user space API PipeWire (Wikipedie) poskytující PulseAudio, JACK, ALSA a GStreamer rozhraní byl vydán ve verzi 1.6.0 (Bluesky). Přehled novinek na GitLabu.

    Ladislav Hagara | Komentářů: 0
    včera 01:11 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.2 a 20.04 OTA-12.

    Ladislav Hagara | Komentářů: 0
    19.2. 18:00 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová stabilní verze 2.0 otevřeného operačního systému pro chytré hodinky AsteroidOS (Wikipedie). Přehled novinek v oznámení o vydání a na YouTube.

    Ladislav Hagara | Komentářů: 1
    19.2. 16:00 | Zajímavý software

    WoWee je open-source klient pro MMORPG hru World of Warcraft, kompatibilní se základní verzí a rozšířeními The Burning Crusade a Wrath of the Lich King. Klient je napsaný v C++ a využívá vlastní OpenGL renderer, pro provoz vyžaduje modely, grafiku, hudbu, zvuky a další assety z originální kopie hry od Blizzardu. Zdrojový kód je na GitHubu, dostupný pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 6
    19.2. 13:33 | IT novinky

    Byl představen ICT Supply Chain Security Toolbox, společný nezávazný rámec EU pro posuzování a snižování kybernetických bezpečnostních rizik v ICT dodavatelských řetězcích. Toolbox identifikuje možné rizikové scénáře ovlivňující ICT dodavatelské řetězce a na jejich podkladě nabízí koordinovaná doporučení k hodnocení a mitigaci rizik. Doporučení se dotýkají mj. podpory multi-vendor strategií a snižování závislostí na vysoce

    … více »
    Ladislav Hagara | Komentářů: 4
    19.2. 12:22 | Humor

    Nizozemský ministr obrany Gijs Tuinman prohlásil, že je možné stíhací letouny F-35 'jailbreaknout stejně jako iPhony', tedy upravit jejich software bez souhlasu USA nebo spolupráce s výrobcem Lockheed Martin. Tento výrok zazněl v rozhovoru na BNR Nieuwsradio, kde Tuinman naznačil, že evropské země by mohly potřebovat větší nezávislost na americké technologii. Jak by bylo jailbreak možné technicky provést pan ministr nijak nespecifikoval, nicméně je známé, že izraelské letectvo ve svých modifikovaných stíhačkách F-35 používá vlastní software.

    NUKE GAZA! 🎆 | Komentářů: 37
    19.2. 06:00 | Zajímavý článek

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

    Ladislav Hagara | Komentářů: 0
    19.2. 05:55 | IT novinky

    Sdružení CZ.NIC, správce české národní domény, zveřejnilo Domain Report za rok 2025 s klíčovými daty o vývoji domény .CZ. Na konci roku 2025 bylo v registru české národní domény celkem 1 515 860 s koncovkou .CZ. Průměrně bylo měsíčně zaregistrováno 16 222 domén, přičemž nejvíce registrací proběhlo v lednu (18 722) a nejméně pak v červnu (14 559). Podíl domén zabezpečených pomocí technologie DNSSEC se po několika letech stagnace výrazně

    … více »
    Ladislav Hagara | Komentářů: 9
    18.2. 18:33 | IT novinky

    Google představil telefon Pixel 10a. S funkci Satelitní SOS, která vás spojí se záchrannými složkami i v místech bez signálu Wi-Fi nebo mobilní sítě. Cena telefonu je od 13 290 Kč.

    Ladislav Hagara | Komentářů: 15
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (11%)
     (27%)
     (3%)
     (4%)
     (2%)
     (12%)
     (26%)
    Celkem 919 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Aktuální aplikace na RHEL6 - pkgsrc prefix v praxi

    31.5.2017 15:27 | Přečteno: 1284× | Výběrový blog | poslední úprava: 31.5.2017 15:27

    V nové práci máme korporátní desktop na RHEL6. Nejdříve jsem tím byl trochu rozhozený, ale postupně jsem si začal na RHEL6 stavět "moderní" efektivní workstation (nové verze programů - python, terminator, compiz, firefox, java8 kvůli dbeaver, vim s jedi, atd.; ssh socks na vývojový server místo ssh X forwardingu apod.) - na jednu stranu to stálo dost úsilí a času, ale člověk se přitom i něco naučí a "zopakuje" (třeba v configure.ac jsem se nehrabal už hodně dlouho). Ale hlavně je teď práce celkově mnohem efektivnější a příjemnější.

    Zkoušel jsem různé řešení (kontejnery i chroot jsou samozřejmě mimo hru protože se bavíme o RHEL6 bez root přístupu) jako např. Nix prefix, ale nakonec se nejvíce osvědčilo pkgsrc z NetBSD - nemůžu si stěžovat, v NetBSD to mají opravdu vychytaný, až se divím jak dobře jim fungují porty dokonce i na Linuxu a jak jednoduše si můžu upravovat vše jak potřebuji. Kdybych nebyl tvrdohlavý perfekcionista, tak si nainstaluji prefix z pkgsrc a dál vlastně nic neřeším, jenže ...

    Renderování fontů - freetype

    Při instalaci programů mimo balíčkovací systém považuji za zásadní jejich integraci, a to včetně "look & feel". V tomto ohledu bylo nejsložitější donutit aplikace v prefixu renderovat fonty stejně jako v RHEL6. Vše se samozřejmě točí kolem knihovny freetype; ta renderuje jinak v různých verzích, v závislosti na různých nastaveních při kompilaci, freetype properties v env proměnných, (dále také třeba gnome-settings-daemon/xsettingsd a fontconfig, ale ty není potřeba při použití prefixu řešit) ... a toto vše je potřeba sladit, pokud chceme používat nesystemovou freetype knihovnu.

    První krok je zjistit v jaké verzi, jak zkompilovaný a s jakými parametry je freetype v systému: v mém případě se jedná o freetype-2.3.11 s unpatented hinting a subpixel rendering.

    Na první pohled se freetype tváří zpětně kompatibilní - prý stačí správně nastavit proměnnou prostředí FREETYPE_PROPERTIES a fonty bude renderovat postaru. Bohužel tomu tak není. Nejnovější verze, která umí unpatented hinting je 2.6.2 - to znamená upravit Makefile graphics/freetype2 a zárověn pomocí SUBST frameworku zapnout unpatented hinting a subpixel rendering:
    ...
    DISTNAME = freetype-2.6.2
    ...
    SUBST_FILES.unpatented+=    include/freetype/config/ftoption.h
    SUBST_SED.unpatented= -e 's!.*\#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER.*!\/* \#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER *\/!g'
    SUBST_SED.unpatented+= -e 's!.*\#define TT_CONFIG_OPTION_UNPATENTED_HINTING.*!\#define TT_CONFIG_OPTION_UNPATENTED_HINTING!g'
    SUBST_SED.unpatented+= -e 's!.*\#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING.*!\#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING!g'
    SUBST_STAGE.unpatented+=    pre-configure
    SUBST_CLASSES += unpatented
    

    Bohužel proti verzi 2.6.2 nejde přímo aplikovat patches/patch-ab; je potřeba změnit následující v patch souboru
    -                          -export-symbols $(EXPORTS_LIST)
    +                          # -export-symbols $(EXPORTS_LIST)
    
    na
                               # -export-symbols $(EXPORTS_LIST)
    

    bmake mdi
    bmake install
    bmake print-PLIST > PLIST
    bmake update # nebo bmake replace
    
    Teď už freetype v prefixu renderuje na první pohled stejně jako v systému. Voil...shit! Stále tam jsou drobné rozdíly v renderování! Takže nezbývá než postupný "bisect", nejdříve na úrovni verzí, pak na úrovni gitu (i tohle jde dát dokupy s pkgsrc) ... a viníkem je b0962ac34 (mezi verzemi 2.4.5 a 2.4.6). Dokonce nejsem první kdo si na tuhle změnu stěžuje.

    Naštěstí se jedná doslova o one-liner, takže přidat patch do graphics/freetype2 už je detail, a nebo klidně přímo do Makefile:
    SUBST_FILES.revert_b0962ac34 += src/truetype/ttdriver.c
    SUBST_SED.revert_b0962ac34= -e 's!.*ttsize->root.metrics = ttsize->metrics;!!g'
    SUBST_STAGE.revert_b0962ac34= pre-configure
    SUBST_CLASSES += revert_b0962ac34
    

    Každopádně si ale správci a vývojáři freetype zaslouží respekt; už jen co se týká ABI/API kompatibility, kterou freetype dodržuje snad více než 10 let.

    Fonty

    V RHEL6 používám microsoft fonty, takže stačilo v prefixu nainstalovat fonts/ms-ttf (a fonts/dejavu-ttf, fonts/terminus-font ...).

    Témata

    Snad jediné téma, které funguje správně v různých verzích gtk, je clearlooks-phenix. Stačí nainstalovat do ~/.themes a do prefixu nainstalovat x11/gtk2-engines.

    gcc48

    Ani pkgsrc není bezchybné a občas lze narazit na balíček, který nejde zkompilovat systémovým gcc, ale potřebuje gcc>=4.8. Nainstalovat nové gcc z pkgsrc není problém, ale v Makefile některých balíčků chybí zmínka o této buildtime závislosti.

    Například kompilace devel/googletest skončí:
    -- Check for working CXX compiler: /pkgsrc/devel/googletest/work/.cwrapper/bin/c++ -- broken
    CMake Error at /prefix/share/cmake-3.7/Modules/CMakeTestCXXCompiler.cmake:44 (message):
      The C++ compiler
      "/pkgsrc/devel/googletest/work/.cwrapper/bin/c++" is not able
      to compile a simple test program.
    
      It fails with the following output:
    
       Change Dir: /pkgsrc/devel/googletest/work/googletest-release-1.8.0/CMakeFiles/CMakeTmp
    
    Tento problém jsem vyřešil nejškareději jak to jen jde a připravil si alias fixmagic_gcc48, kterým podle potřeby vynutím gcc48:
    alias fixmagic_gcc48="export PATH=/prefix/gcc48/bin:\$PATH;
                          export LD_LIBRARY_PATH=/prefix/gcc48/lib64:/prefix/gcc48/lib/gcc/x86_64-redhat-linux/4.8.5:\$LD_LIBRARY_PATH;
                          export PS1=\"(gcc48) \$PS1\""
    

    Firefox

    Stejně tak si i kompilace firefoxu (kromě PKG_OPTIONS.firefox = -webrtc v mk.conf) vysloužila vlastní alias:
    alias fixmagicbuild_firefox="export LDFLAGS=\"-ldl -lrt\";
                                 export CPPFLAGS=\"-DLIBYUV_DISABLE_X86\""
    

    Compiz

    Provozovat compiz na RHEL6 v prefixu opravdu jde :) ...
    alias compiz="rm -f /prefix/lib/libGL.*
                  cd $HOME
                  unset LD_LIBRARY_PATH
                  /lib64/ld-linux-x86-64.so.2 --library-path /prefix/gcc48/lib64:/prefix/lib /prefix/bin/compiz --replace ccp
                 "
    
    Ano, opravdu tam je rm -f /prefix/lib/libGL.*. Také compiz nepouštím z "naloadovaného" prefixu ale přes /lib64/ld-linux-x86-64.so.2 --library-path, díky tomu programy puštěné z compizu neběží implicitně v prefixu.

    A dohromady ...

    Kompletní aliasy pak u mě vypadají takto:
    alias magic="export __OLD_PRE_MAGIC_PATH=\$PATH;
                 export __OLD_PRE_MAGIC_MANPATH=\$MANPATH;
                 export __OLD_PRE_MAGIC_PS1=\$PS1;
                 export __OLD_PRE_MAGIC_PYTHONPATH=\$PYTHONPATH;
                 export __OLD_PRE_MAGIC_GEM_HOME=\$GEM_HOME;
                 export __OLD_PRE_MAGIC_LD_LIBRARY_PATH=\$LD_LIBRARY_PATH;
                 export __OLD_PRE_MAGIC_LDFLAGS=\$LDFLAGS;
                 export __OLD_PRE_MAGIC_CPPFLAGS=\$CPPFLAGS;
                 export PATH=/prefix/bin:/prefix/sbin:\$PATH;
                 export MANPATH=/prefix/man:\$MANPATH;
                 export PS1=\"(magic) \$PS1\";
                 export PYTHONPATH=;
                 export GEM_HOME=;"
    
    alias fixmagicbuild_firefox="export LDFLAGS=\"-ldl -lrt\";
                                 export CPPFLAGS=\"-DLIBYUV_DISABLE_X86\""
    
    alias fixmagic_gcc48="export PATH=/prefix/gcc48/bin:\$PATH;
                          export LD_LIBRARY_PATH=/prefix/gcc48/lib64:/prefix/gcc48/lib/gcc/x86_64-redhat-linux/4.8.5:\$LD_LIBRARY_PATH;
                          export PS1=\"(gcc48) \$PS1\""
    
    alias unmagic="if [ -n \"\$__OLD_PRE_MAGIC_PATH\" ]; then
                   export PATH=\$__OLD_PRE_MAGIC_PATH;
                   export MANPATH=\$__OLD_PRE_MAGIC_MANPATH;
                   export PS1=\$__OLD_PRE_MAGIC_PS1;
                   export PYTHONPATH=\$__OLD_PRE_MAGIC_PYTHONPATH;
                   export GEM_HOME=\$__OLD_PRE_MAGIC_GEM_HOME;
                   export LD_LIBRARY_PATH=\$__OLD_PRE_MAGIC_LD_LIBRARY_PATH;
                   export LDFLAGS=\$__OLD_PRE_MAGIC_LDFLAGS;
                   export CPPFLAGS=\$__OLD_PRE_MAGIC_CPPFLAGS;
                   unset __OLD_PRE_MAGIC_PATH;
                   unset __OLD_PRE_MAGIC_MANPATH;
                   unset __OLD_PRE_MAGIC_PS1;
                   unset __OLD_PRE_MAGIC_http_proxy;
                   unset __OLD_PRE_MAGIC_PYTHONPATH;
                   unset __OLD_PRE_MAGIC_GEM_HOME;
                   unset __OLD_PRE_MAGIC_LD_LIBRARY_PATH;
                   unset __OLD_PRE_MAGIC_LDFLAGS;
                   unset __OLD_PRE_MAGIC_CPPFLAGS;
               fi
               "
    
    alias ccsm="if [ -n \"\$__OLD_PRE_MAGIC_PATH\" ]; then
                    PATH=/prefix/gcc48/bin:\$PATH LD_LIBRARY_PATH=/prefix/gcc48/lib64:/prefix/gcc48/lib/gcc/x86_64-redhat-linux/4.8.5:\$LD_LIBRARY_PATH ccsm
                else
                    echo \"command not found :P. Use magic.\"
                fi
                "
    
    alias compiz="if [ -n \"\$__OLD_PRE_MAGIC_PATH\" ]; then
                    echo \"don start compiz with magic. Compiz alias takes care of LD_LIBRARY_PATH etc.\"
                else
                    rm -f /prefix/lib/libGL.*
                    cd $HOME
                    unset LD_LIBRARY_PATH
                    /lib64/ld-linux-x86-64.so.2 --library-path /prefix/gcc48/lib64:/prefix/lib /prefix/bin/compiz --replace ccp
                fi
                "
    
    alias dbeaver="if [ -n \"\$__OLD_PRE_MAGIC_PATH\" ]; then
                    PATH=/prefix/java/oracle-8/bin/ /path/to/dbeaver
                else
                    echo \"command not found :P. Use magic.\"
                fi
    
    setxkbmap -option "grp:alt_shift_toggle,lv3:ralt_switch" "us,cz_qwerty"
    

    rpath

    Poslední problém na který jsem narazil je s pip. Některé python balíčky nainstalované přes pip "nechápou" že mám python v prefixu a nastaví rpath na /lib64 nebo kdovíco, to řeším jednoduchým scriptem nad patchelf, který projede všechny ELF soubory v určitém adresáři a rpath upraví: fix_rpath.py (nebo z githubu).

    Docker/snappy/flatpak?

    Bohužel docker/snappy/flatpak integraci vůbec neřeší a vlastně považují za úspěch že jdou jejich balíčky spustit na různých distribucích - i když to vlastně nikdy nebyl problém s bundlováním/statickým linkováním. Potíž je právě v té integraci; a ta, z podstaty, nebude s těmito technologiemi fungovat nikdy (a to že historicky nefunguje na Windows ani OS X opravdu není důvod rozbít integraci na Linux desktopu).        

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    Max avatar 1.6.2017 07:15 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Aktuální aplikace na RHEL6 - pkgsrc prefix v praxi
    Docela by mně zajímalo, proč se u desktopů zůstalo na RHEL6 a nepřešlo se na RHEL7?
    Zdar Max
    Měl jsem sen ... :(
    pavlix avatar 2.6.2017 18:58 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Aktuální aplikace na RHEL6 - pkgsrc prefix v praxi
    Gentoo prefix?
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    Bedňa avatar 3.6.2017 20:44 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Aktuální aplikace na RHEL6 - pkgsrc prefix v praxi
    Bohužel docker/snappy/flatpak integraci vůbec neřeší a vlastně považují za úspěch že jdou jejich balíčky spustit na různých distribucích
    Mrkni na AppImage, tam mi integrácia napríklad témy funguje. Určite to nebude riešiť rovnaké vykresľovaním fontov, ale ja zas niesom taký detailista :) Keď by si to chcel predsa uzavrieť do kontaineru, tak by som použil Firejail. Riešenie od RedHat ako sa už stáva bežnou praxou sú stále nefunkčné.
    KERNEL ULTRAS video channel >>>
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.