Vývoj Fedory 28 je v plném proudu - Beta jej již ke stažení, a seznam změn - - je opravdu veliký. Za zvýraznění stojí, že f28 bude mít GCC ve verzi 8. F28 final freeze se navíc odehrál dnes - 17.4.2018.
Krátce ze zajímavých balíčků posledních týdnů:
Poběrky
- java-openjdk - rolling release for short term support OpenJDK
- libdasm - Simple x86 disassembly library
- git-crypt - transparent file encryption in git
Koprovka
List přání:
Černá kronika:
Poběrky
java-openjdk
java 10 - poslední krátce žijící JDK, před očekávanou, s dlouhou podporou, javou 11, se stává součástí Fedory. Pravda trošku se zpožděním neb review se protáhlo, ale snad o to lepší. Jelikož se jedná o rolling release budoucích JDK s krátkou životností (viz slidy v iniciálním komentáři ; tedy changesInjavaReleaseProcess.pdf bylo zdraví balíku opravdu potřeba.
V době psaní článku se balíček ještě nacházel v testovacím repu, ale již velmi brzy bude ve stabilním.
Zapnut testovací repo (krok již nemusí být potřeba)
$ # dnf repolist # pro porovnání $ sudo dnf config-manager --set-enabled updates-testing $ # dnf repolist # pro ověření
Nainstalovat a nastavit jdk:
$ sudo dnf install java-openjdk java -version openjdk version "1.8.0_162" $ # java-openjdk má nižší prioritu než java-1.8.0-openjdk, proto, pokud jste již měli nainstalovanou javu 8, není změna viditelná okamžitě $ sudo alternatives --config java There are 3 programs which provide 'java'. Selection Command ----------------------------------------------- *+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.162-3.b12.fc27.x86_64/jre/bin/java) 2 java-9-openjdk.x86_64 (/usr/lib/jvm/java-9-openjdk-9.0.4.11-4.fc27.x86_64/bin/java) 3 java-openjdk.x86_64 (/usr/lib/jvm/java-10-openjdk-10.0.0.46-10.fc27.x86_64/bin/java) # zmáčkněte 3 a enter $ java -version openjdk version "10" 2018-03-20 OpenJDK Runtime Environment (build 10+46) OpenJDK 64-Bit Server VM (build 10+46, mixed mode) $ # podobně pro java-openjdk-devel a javac
Opět vypnut testovací repo (pokud bylo jeho zapnutí potřeba a již jej nechcete)
$ # dnf repolist # pro porovnání $ sudo dnf config-manager --set-disabled updates-testing $ # dnf repolist # pro ověření
libdasm
Knihovna pro zobrazování binárního kódu pro procesory Intel. Kromě toho že ji můžete používat ve svých programech (libdasm-devel: /usr/include/libdasm.h a /usr/lib64/libdasm.so) obsahuje balíček libdasm také ukázkový program:
$ sudo dnf install libdasm $ sudo /bin/das /usr/lib/libasound.so.2.0.0 | head 00000000 7f45 jg 0x47 00000002 4c dec esp 00000003 46 inc esi 00000004 0101 add [ecx],eax 00000006 0100 add [eax],eax 00000008 0000 add [eax],al 0000000a 0000 add [eax],al 0000000c 0000 add [eax],al 0000000e 0000 add [eax],al 00000010 0300 add eax,[eax] $ sudo /bin/das /bin/rustc -a 16 | head 00000000 7f45 jg 0x47 00000002 4c dec %esp 00000003 46 inc %esi 00000004 0201 add (%ecx),%al 00000006 0100 add %eax,(%eax) 00000008 0000 add %al,(%eax) 0000000a 0000 add %al,(%eax) 0000000c 0000 add %al,(%eax) 0000000e 0000 add %al,(%eax) 00000010 0300 add (%eax),%eax
Kromě přepínaní mezi Intel a AT&T (-i/-a) syntaxí je poslední přepínač číslo - šířka dat instrukce (defaultně 8).
Proč program odmítá číst systémové knihovny bez oprávnění roota nevím
git-crypt
Knihovna na transparentní push/pull zašifrovaných souborů. Jednoduše si vyberete, které soubory v repositáři jsou zašifrovány. Tyto potom prochází přes git během pull/push skrze symetrické šifrování a váš privátní GPG klíč. Výhodou je, že uživatelé bez klíče mohou s vaším repositářem dále pracovat, všem některé části nevidí. Ačkoliv myšlenka je to zajímavá, může svádět k ukládání různých hesel a dodává celému "otevřenému repositáři" takový kyselý nádech, může se v některých případech hodit.
$ sudo dnf install https://kojipkgs.fedoraproject.org//packages/git-crypt/0.6.0/3.fc28/x86_64/git-crypt-0.6.0-3.fc28.x86_64.rpm $ git init git-crypto-test $ cd git-crypto-test $ git-crypt init
Tento proces pouze nastaví klíče a konfiguraci repositáře:
$ cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [filter "git-crypt"] smudge = \"git-crypt\" smudge clean = \"git-crypt\" clean required = true [diff "git-crypt"] textconv = \"git-crypt\" diff
Následně se může do souboru .gitattributes zapsat jaké soubory se mají šifrovat:
secretfile filter=git-crypt diff=git-crypt *.key filter=git-crypt diff=git-crypt
Poběrek + Koprovka
Microsoft Visual Studio Code
Na dnu otevřených dveří brněnského Red Hatu, jsem se dozvěděl, že Visual Studio Code je k mání na jako Copr repositář. Nějakou dobu zpět jsem musel na C# sáhnout, a tak jsem se jal do zkoumání. Na neštěstí je situace velmi smutná:
Jak rychlé tak hlubší hledání, zjistila, že o MVS se pokouší hodně repositářů, ale většinou velmi neúspěšně. Navíc nejnovější buildy (pokud vůbec nějaké) jsem našel pro Fedoru 26. Nejlepší (čtěte jediný funkční) byl mosquito/vscode. Autor si relativně věří, neboť má v kopru i link na PayPal.
Takže šup, přidat repositář a zfalšovat verzi fedorky (neb jsem již na F27)
$ cd /etc/yum.repos.d/ ; $ BASE_REPO_FILE_NAME=mosquito-vscode-fedora-26.repo $ sudo rm -v $BASE_REPO_FILE_NAME*; $ sudo wget https://copr.fedorainfracloud.org/coprs/mosquito/vscode/repo/fedora-26/$BASE_REPO_FILE_NAME ; $ sudo sed 's/$releasever/26/' -i $BASE_REPO_FILE_NAME ; $ cat $BASE_REPO_FILE_NAME* $ sudo dnf install vscode
bohužel selže na špatné verzi nodejs.
Je tedy třeba nainstalovat hlavní dependenci:
$ sudo dnf install electron $ cd ~ $ dnf download vscode # bez sudo :) $ sudo rpm --nodeps -ivh vscode-1.16.1-1.fc26.x86_64.rpm
Což (minimálně na f27) poběží (alespoň nějak), neboť je zde nodejs verze 8, což je přesně ta verze kterou potřebujeme.
vscode
Ovšem teď ty negativa. Vscode je prostě textový editor. Nic víc, něco málo míň - od počátku předpokládá, že bude IDE - takže v něm najdete různé debug, step over a spol, i když kničemu nejsou. Nemá vůbec nic společného Microsfot Visual Studio. A sám o osbě toho moc neumí. Veškerá funkcionalita je dodávána skrze pluginy, které jsou po maloměkkém většinou uzavřeny. Tolik ke smutnému příběhu. Pokud se někdo ve vscode pluginech vyzná, prosím o posdílení zkušeností...
Atom
Za zmínku ještě stojí, že onen mosquito má zajímavých koprů hned několik. Mezi nimi i atom, který (narozdíl od vscode jde nainstalovat (po případném hacku s verzí fedory) bez komplikací:
$ cd /etc/yum.repos.d/ ; $ BASE_REPO_FILE_NAME=mosquito-atom-fedora-26.repo $ sudo rm -v $BASE_REPO_FILE_NAME*; $ sudo wget https://copr.fedorainfracloud.org/coprs/mosquito/vscode/repo/fedora-26/$BASE_REPO_FILE_NAME ; $ sudo sed 's/$releasever/26/' -i $BASE_REPO_FILE_NAME ; $ cat $BASE_REPO_FILE_NAME* $ sudo dnf install atom $ atom
Oba balíky mají celkem dobrou integraci, a tak si mosquito možná nějaký ten cent do PayPal kasičky zaslouží.
List přání - kcov
Kcov je nástroj měřící pokrytí ḱódu testy pro programy psané v jazice rust.
kcov fungue velmi jednoduše, a generuje velmi pěkný report.
$ # v brzské budoucnosti: dnf install kcov $ # zatím pouze přes rpmbuild $ wget https://dridi.fedorapeople.org/review/kcov-34-1.fc29.src.rpm $ rpmbuild --rebuild kcov-34-1.fc29.src.rpm ; # muze vynutit manualni update/install libcurl-devel $ dnf isntall ~/rpmbuild/RPMS/x86_64/kcov-34-1.fc27.x86_64.rpm $ # nebo poctivím samobuildem a plnou cestou dle návodu výše $ cd some/project/with/cargotoml $ cargo test --no-run $ kcov report-dir target/debug/$TEST_EXECUTABLE
Kde $TEST_EXECUTABLE je něco jako vas_program-hascode
. Lze automatizovat jako kcov target/cov target/debug/vas_program-*
ale jako u každého použití *, pozor na ni ... Pozitivní je, že daný hash se se změní pouze pokud to vy chcete.
kcov je velmi živý projekt
Například:
$ cd hg/icedtea-web/rust-launcher/ $ cargo test --no-run $ kcov target/cov target/debug/launcher-ae08e3dae7e23422 ; $ firefox target/cov/index.html
Nezapoměnte, že rustc (jako spousta dalších překaldačů) nekompiluje defaultně mrtvý ḱód, takže větev, kterou není možné v programu nikdy nijak projít není ani ve výsledné binárce. Toto můžete změnit RUSTFLAGS='-C link-dead-code'
$ cargo clean $ export RUSTFLAGS='-C link-dead-code' $ cargo test --no-run $ kcov target/cov target/debug/launcher-ae08e3dae7e23422 ; $ firefox target/cov/index.html
Vidíte že rozdíl je velmi malý
Černá kronika - openjfx
.. je dnes opravdu černočerná, neboť osiřelo OpenJFX - a balíček openjfx tudíž čeká na svého majitele. Následkem je, že tedy nemáme openjfx ani pro f28 a výše (poslední pád se stal Srpnu 2017).
Jen pro úplnost - openjfx je ve Fedoře linkován z java-1.8.0-openjdk. java-9-openjdk ani java-10-openjdk vazby na openjfx nemají. Důvodem je systém modulů který s jdk9 přišel. Abychom mohly openjfx linkovat z java-11-openjfx musí být i openjfx modulární. A v okamžiku kdy bude modulární, zase nepojede s JDK8 Takže je to kus práce, ktery se zatím nikomu nechtěl udělat. I dnes můžete openjfx s javou 9 avýše používat, ale musíte dát knihovny FX na classpath ručně, neboť openjfx instaluje knihovny zatímco java-1.8.0-openjdk-openjfx pouze linky aby byla FX dostupná "jen tak".
Jonnymu je zasloužen všechen respekt protože zabalit a udržovat JavaFX vůbec nebyla legrace. Jonny tak posunul javu ve fedorce o velký krok vpřed.
17. 4. 2018 at 20:54
Teda takových chyb v jednom článku jsem ještě neviděl.
17. 4. 2018 at 21:46
Chjo. Ted jsem jich tak 10 opravil. Mam indisponovanou korektoru. promin 🙁
ps: porad hledam spoluautora a paltim lip a lip!-)
18. 4. 2018 at 09:52
K tomu VS Code: přijde mi lepší to nainstalovat na několik kliknutí z Flathubu než páchat to harakiri o 11 příkazech s balíčkem z Copru: https://flathub.org/apps/details/com.visualstudio.code
18. 4. 2018 at 10:06
jj! +1!
18. 4. 2018 at 10:09
Jakoze ono y to bylo v pohode kdyby mel f27 repozitar.. ale coz…
18. 4. 2018 at 13:46
Právě to je výhoda Flatpaku u aplikací třetích stran. Člověk není závislý na tom, jestli autoři upravili aplikaci pro novou Fedoru nebo jestli správce balíčku udělal branch repozitáře atd.
18. 4. 2018 at 13:47
Kvalita článku mě opravdu zklamala, je tam spoustu chyb a dokonce i překlepů, které jsou dokonce detekovatelné počítačem.
K VS code: Vůbec nechápu zvolený způsob instalace, vždyť autoři mají svůj oficiální repozitář pro Fedoru/RHEL/CentOS, viz https://code.visualstudio.com/docs/setup/linux . Flathub je samozřejmě taky OK. VS Code stále neberu jako plnohodnotné IDE (například nástroje od JetBrains jsou stále v něčem napřed), ale neměl jsem problém využívat jeho pokročilé funkce jako debug, automatickou indentation, automatické doplňování a další věci, které od IDE očekávám. Chápu, záleží na jazyku, ale obecně mi tato recenze přišla velmi špatná a zbytečně vyvolající nenávist k Microsoftu. Navíc většina pluginů je šířena pod svobodnou licencí a zdrojáky jsou k dispozici na githubu. Ano, jsou tam nějaké věci, které MS nezveřejňuje, ale pořád je možné je alespoň používat zadarmo.
Abych shrnul můj komentář, tento článek mě bohužel přišel velmi neobjektivní a neprofesionální.
18. 4. 2018 at 15:11
Nevím, jak je daný balíček v Copru tvořený, jestli to sestavuje skutečně ze zdrojáků nebo jen přebaluje upstreamovou binárku, ale pokud sestavuje ze zdrojáků, tak jeden benefit by měl: svobodnou licenci.
VS Code jsou zdrojáky, ale to, co Microsoft nabízí ke stažení nemá svobodnou licenci. Podobná situace jako Chromium vs Chrome.
18. 4. 2018 at 13:58
Diky za kritiku. Delal jsem s chybkama a tjpama co se dalo, ale moje korektorka je ted marod. Priste budu min spechat a radsi pockam az vyleze z postele.
add VS. Ano, vim ze VScode ma svuj repozitar. Ale ten jsem nehledal. Ma snaha je hledat zajimave veci v officialnich repositarich a v Copr repositarich – cili kritika neni pouze na produkt samotny, ale i na to jak je zabalen. Temer vzdycky z otho plyne minimlane jeden bug proti baleni/upstreamu. A to to jen nainstlauju, zapnu a pozkousim zakaldni funkce.
Co se tyce dalsich informaci o VS code, ktere poskytujes, Vreli dik za ne!
Me debug a spol proste out-of-box nefungoval. Samozrejme jsem mohl jsme neco delat spatne. Ani plnohodnotny code-fromatting. Hledal jsme k tomu pluginy, a bud to nejelo nebo to nemelo zdrojak.
Jeste jednoudiky za kritku. Priste se polepsim.
19. 4. 2018 at 09:54
Ahoj Code….
Toz jsem dal vscode jeste jednu sanci. A spatny .. spatny to je. A je to moc skoda protoze ten jejich protokol a server pro podporu jazykuu (RLP – remote language protocol) JE velmi SLAVNY. A je v to co jsem doufal ze objevim.
Vyzkousel jsme bash, rust a java pluginy – tedy jazyky ktery pouizvam nejvic. Jop instalace pohodlna, dokonce mi to nabidlo o tom tweetovat. Ale pak uz nefungovalo nic. Pro Rust to po me dokoncoe vyzadovalo odinstalovat systemovy rust…A to jen kuli poradi v path jak jsm pozdeji zjistil.
Ale on ne za by na tom ten atom (jak je zabalen) byl o moc lepe. Pulka pluginuu mi spadla na nekompatibilitie s node.js.
Jeste jednu vec bych tomu vscode vytkl. Kdyz uz mi to hlasilo nejakou chybu (jako ne moji, ale pluginu/vscode smaotneho) tak se nedali dopatrat detajli. Jup. monza jsem proti M$ zaujaty. A leVisual Studio mam celkem v dobre vzpomince, ( i kdyz to je asi jedina dobra vzpominka na M$). Tohle se opravdu nedalo. Mozna to je packagingem, ale (narozdil od atomu si ) to nemyslím. Mozna kdyby to slo cestou predinstalovanych pluginu pro rust/c/javu/python ala idea, mozna by se d toho clovek dostal vice.