Po Canonicalu a SUSE oznámil také Red Hat, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie).
TrueNAS (Wikipedie), tj. open source storage platforma postavená na Linuxu, byl vydán ve verzi 25.10 Goldeye. Přináší NVMe over Fabric (NVMe-oF) nebo OpenZFS 2.3.4.
Byla vydána OpenIndiana 2025.10. Unixový operační systém OpenIndiana (Wikipedie) vychází z OpenSolarisu (Wikipedie).
České základní a střední školy čelí alarmujícímu stavu kybernetické bezpečnosti. Až 89 % identifikovaných zranitelností v IT infrastruktuře vzdělávacích institucí dosahuje kritické úrovně, což znamená, že útočníci mohou vzdáleně převzít kontrolu nad klíčovými systémy. Školy navíc často provozují zastaralé technologie, i roky nechávají zařízení bez potřebných aktualizací softwaru a používají k nim pouze výchozí, všeobecně známá
… více »Během tradiční ceremonie k oslavě Dne vzniku samostatného československého státu (28. října) byl vyznamenán medailí Za zásluhy (o stát v oblasti hospodářské) vývojář 3D tiskáren Josef Průša. Letos byly uděleny pouze dvě medaile Za zásluhy o stát v oblasti hospodářské, druhou dostal informatik a manažer Ondřej Felix, který se zabývá digitalizací státní správy.
Tor Browser, tj. fork webového prohlížeče Mozilla Firefox s integrovaným klientem sítě Tor přednastavený tak, aby přes tuto síť bezpečně komunikoval, byl vydán ve verzi 15.0. Postaven je na Firefoxu ESR 140.
Bylo oznámeno (cs) vydání Fedora Linuxu 43. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách Fedora Magazinu: Fedora Workstation, Fedora KDE Plasma Desktop, Fedora Silverblue a Fedora Atomic Desktops.
Elon Musk oznámil (𝕏) spuštění internetové encyklopedie Grokipedia (Wikipedia). Zatím ve verzi 0.1. Verze 1.0 prý bude 10x lepší, ale i ve verzi 0.1 je podle Elona Muska již lepší než Wikipedia.
PSF (Python Software Foundation) po mnoha měsících práce získala grant ve výši 1,5 milionu dolarů od americké vládní NSF (National Science Foundation) v rámci programu "Bezpečnost, ochrana a soukromí open source ekosystémů" na zvýšení bezpečnosti Pythonu a PyPI. PSF ale nesouhlasí s předloženou podmínkou grantu, že během trvání finanční podpory nebude žádným způsobem podporovat diverzitu, rovnost a inkluzi (DEI). PSF má diverzitu přímo ve svém poslání (Mission) a proto grant odmítla.
Balík nástrojů Rust Coreutils / uutils coreutils, tj. nástrojů z GNU Coreutils napsaných v programovacím jazyce Rust, byl vydán ve verzi 0.3.0. Z 634 testů kompatibility Rust Coreutils s GNU Coreutils bylo úspěšných 532, tj. 83,91 %. V Ubuntu 25.10 se již používá Rust Coreutils místo GNU Coreutils, což může přinášet problémy, viz například nefunkční automatická aktualizace.
Nic není tak jednoduché, jak to napíši. Zabalení rpm balíčku, jež jsme zatím prováděli celé naráz, se ve skutečnosti skládá z několika fází (packaging stages), které lze spustit i samostatně. A co víc, mají samostatné sekce ve spec souboru. Každá sekce je skript v shellu, který vykoná, cokoli je v dané fázi balení zapotřebí. Sekce trochu připomínají pravidla makefile, na rozdíl od nich však opravdu obsahují skripty, nikoli seznamy příkazů – přejdeme-li např. jedním příkazem do jiného adresáře, bude se následující příkaz spouštět v novém adresáři.
Jednotlivé fáze lze spouštět pomocí voleb
-bněco. Při kompilaci za sebou následují ve
stejném pořadí, ve kterém je zde uvádím.
%prep a -bpPřípravná fáze. Rozbalí zdrojový kód, aplikuje patche, případně provede
další předkompilační úpravy. V lobster.spec obsahuje
jen:
%prep %setup
%setup je mocné makro, které umí mimo jiné rozbalit
zdrojový kód a přejít do vzniklého adresáře, což je vše, co od něj
zatím chceme.
%build a -bcVlastní překlad. Typicky spouští ./configure
a make. Shodou okolností máme přesně tohle
v lobster.spec:
%build %configure make
Tedy až na to, že namísto ./configure spouštíme
%configure, což je opět makro, které mimo jiné přidává
./configure argumenty s cestami
(--prefix=… a pod.), aby si program své soubory
hledal v /usr namísto implicitního
/usr/local.
Chceme-li přidat ./configure další argumenty, uvedeme je
jako argumenty %configure:
%configure --enable-sandals --without-money
%install a -biInstalace do dočasného adresáře, tedy do $RPM_BUILD_ROOT.
Je to obyčejně tentýž adresář jako BuildRoot, který jsme
definovali v hlavičce, ale lze ho při kompilaci změnit volbou
--buildroot=adresář nebo definicí makra
%buildroot v ~/.rpmmacros. Instalační sekce
typicky spouští make install, ovšem do dočasného adresáře:
%install [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT
Je tu jedna novinka, a to vymazání adresáře
$RPM_BUILD_ROOT, abychom měli jistotu, že bude obsahovat jen
to, co do něj teď nainstalujeme. Testování rozumné hodnoty
$RPM_BUILD_ROOT je pozůstatek z doby (zhruba RPM 2.0),
kdy se při balení instalovalo přímo do /. Dnes už to snad
nikdo nedělá a některé manuály výslovně označují testování za
zbytečné, na druhé straně jím nelze nic zkazit.
Kromě změny DESTDIR můžeme použít i standardní makro
%makeinstall, které mění nastavení cest
prefix=… a pod.
%install [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT %makeinstall
Změna DESTDIR je modernější, čistší a teoreticky
správnější; v praxi to může vypadat různě. Tedy tak, že správně
nefunguje ani jedno a musíme patchovat
Makefile[.in], aby se program nechal
nainstalovat, kam chceme. Důležité je, že míchání obou způsobu je zaručený
recept na katastrofu, tudíž musíme jeden zvolit. U programů
s vysokým poměrem svéráznosti instalace ku počtu instalovaných
souborů se může ukázat jako nejjednodušší neválčit s autorovým
Makefile a nainstalovat soubory ručně
installem.
%checkKontrola funkčnosti. Používá se zřídka a obvykle obsahuje
make check nebo nějaký jeho ekvivalent. Nelze ji spustit
explicitně, spouští se automaticky po instalaci.
V lobster.spec jsme %check nepoužili.
%cleanVymazání dočasného instalačního adresáře. Tuto fázi nelze spustit explicitně, ale provede se automaticky po úspěšném zabalení balíčku. Prakticky vždy obsahuje jediný řádek:
%clean [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
který už známe.
%files a -blSeznam souborů. Tato sekce neobsahuje skript, ale prostý seznam
souborů, které se mají do balíku zahrnout, a jejich vlastnosti. Lze
v něm používat žolíky (wildcards). Musí obsahovat všechny soubory,
které %install nainstalovalo, a samozřejmě nesmí
uvádět žádné, které neexistují. Mohlo by se zdát, že takový seznam je
zbytečný, protože by stačilo zabalit celý $RPM_BUILD_ROOT.
RPM však umí z jednoho zdrojového rpm vytvořit několik binárních,
a pak je takový seznam, určující, co patří kam, nezbytný. Kromě toho
v něm můžeme přiřadit souborům různé vlastnosti.
Práva souborů definujeme pomocí
%defattr(mód, vlastník, skupina[, mód_adresářů])
který se vztahuje na následující soubory (do případného dalšího
%defattr). Uvedeme-li jako mód pomlčku -,
zachová se mód souborů, jak byly nainstalovány; mód adresářů je nepovinný.
Deklarace nastavující vlastníka na roota
%defattr(-,root,root)
z lobster.spec je standardní a měli bychom ji
vždy uvádět, jinak by se soubory mohly do rpm zabalit s náhodným
vlastníkem – typicky uživatelem, který balíček kompiloval. To
je docela zrádné, protože kdo takový zmršený balíček vyrobil, má zrovna
nejmenší šanci si toho všimnout – že
/usr/bin/lobster vlastní pepa a ne root, nemusí mít na
jeho počítači na funkčnost žádný vliv. Zato ostatní, kdo si ho
nainstalují, se budou trochu divit. Přinejmenším na Red Hatu by se od
verze RPM 4.0.4 měla tato deklarace vkládat automaticky
(%files je tiše předefinováno makrem, které navíc vloží
%defattr), ale nespoléhal bych na to.
Chceme-li nastavit atributy jen pro jediný soubor, použijeme
%attr. Má stejné argumenty, ale píše se na začátek řádku před
název souboru:
%attr(2755,root,games) %{_bindir}/lobster
Další přívlastky (tags) jsou už vyloženě rpmoidní. Přívlastek
%doc označuje soubor jako dokumentaci (tu lze při instalaci
vynechat volbou --excludedocs):
%doc %{_mandir}/man1/lobster.1*
A %doc má ještě druhou funkci: uvedeme-li soubor bez cesty
(resp. s relativní cestou), vezme se z adresáře se zdrojovým
kódem a nainstaluje do adresáře s dokumentací balíčku
/usr/share/doc/%{name}-%{version}. Tak snadno doplníme
licenci a různé README a ChangeLogy, které
make install neinstaluje:
%doc README COPYING NEWS
Dokumentace uvedená v %doc se přesněji instaluje do
místa určeného makrem %docdir, resp. položkou hlavičky
Docdir. To by ovšem měla definovat distribuce
a jednotlivé balíčky už by je neměly měnit.
Další běžný přívlastek je %dir označující adresář.
Neuvedeme-li ho u adresáře, znamená to, že do balíčku patří všechno,
co adresář obsahuje.
Přívlastky lze kombinovat, napíšeme jich prostě několik za sebou a oddělíme mezerami:
%attr(0755,rpm,rpm) %dir /var/lib/rpm
Všímavějším jistě neuniklo, že se v seznamu souborů objevuje
%{_bindir} namísto /usr/bin
a %{_mandir} namísto /usr/share/man. Ke
každému standardnímu adresářovému argumentu ./configure je
pro každou distribuci a architekturu definováno odpovídající makro
s cestou, jež %configure předává jako argument
./configure. A dále je %makeinstall
využívá v argumentech make install. Je proto
konzistentní používat je i v seznamu souborů, byť se za
normálních okolností jejich hodnoty neliší se od cest, které bychom tam
napsali ručně.
Konkrétně jsou to tato makra:
Proměnná configure | Makro RPM |
|---|---|
${prefix} | %_prefix |
${exec_prefix} | %_exec_prefix |
${bindir} | %_bindir |
${sbindir} | %_sbindir |
${libexecdir} | %_libexecdir |
${datadir} | %_datadir |
${sysconfdir} | %_sysconfdir |
${sharedstatedir} | %_sharedstatedir |
${localstatedir} | %_localstatedir |
${libdir} | %_libdir |
${includedir} | %_includedir |
${oldincludedir} | %_oldincludedir |
${infodir} | %_infodir |
${mandir} | %_mandir |
Napsal jsem, že fáze lze spouštět samostatně, ale nic není tak
jednoduché, jak to napíši. Každá z fází -bb,
-bi, -bc a -bp obsahuje
implicitně všechny předchozí. Příkaz
rpmbuild -bi lobster.spec proto spustí nejen
%install, ale i %prep
a %build. Spustit opravdu jen %install lze
s volbou --short-circuit:
rpmbuild -bi --short-circuit lobster.spec
Tato volba je však ignorována u příkazů, které vytvářejí balíček
(-bb, -ba, -bs), ty provedou vždy
všechny fáze. RPM se nás tím snaží přimět k reprodukovatelným
kompilačním postupům, protože je tak o hodně obtížnější provést část
kompilace, v čemsi se jaksi povrtat, spustit další
kousek, …, tudíž se rozumný člověk raději zaměří na sepsání
pořádného spec souboru.
Volba -bl (kontrola seznamu souborů) je speciální
a nespouští předchozí fáze.
A nakonec zde uvedu ještě volbu --clean, která sice
neodpovídá žádné kompilační fázi, ale smaže adresář s rozbaleným
zdrojovým kódem v BUILD, což se po kompilaci neděje
automaticky (zato to dělá %setup před novou kompilací).
Nástroje: Tisk bez diskuse
Tiskni
Sdílej: