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.
Od 3. listopadu 2025 budou muset nová rozšíření Firefoxu specifikovat, zda shromažďují nebo sdílejí osobní údaje. Po všech rozšířeních to bude vyžadováno někdy v první polovině roku 2026. Tyto informace se zobrazí uživateli, když začne instalovat rozšíření, spolu s veškerými oprávněními, která rozšíření požaduje.
Jste nuceni pracovat s Linuxem? Chybí vám pohodlí, které vám poskytoval Microsoft, když vás špehoval a sledoval všechno, co děláte? Nebojte se. Recall for Linux vám vrátí všechny skvělé funkce Windows Recall, které vám chyběly.
Společnost Fre(i)e Software oznámila, že má budget na práci na Debianu pro tablety s cílem jeho vyžívání pro vzdělávací účely. Jako uživatelské prostředí bude použito Lomiri.
Proběhla hackerská soutěž Pwn2Own Ireland 2025. Celkově bylo vyplaceno 1 024 750 dolarů za 73 unikátních zranitelností nultého dne (0-day). Vítězný Summoning Team si odnesl 187 500 dolarů. Shrnutí po jednotlivých dnech na blogu Zero Day Initiative (1. den, 2. den a 3. den) a na YouTube.
Byl publikován říjnový přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Pracuje se na podpoře M3. Zanedlouho vyjde Fedora Asahi Remix 43. Vývojáře lze podpořit na Open Collective a GitHub Sponsors.
Iniciativa Open Device Partnership (ODP) nedávno představila projekt Patina. Jedná se o implementaci UEFI firmwaru v Rustu. Vývoj probíhá na GitHubu. Zdrojové kódy jsou k dispozici pod licencí Apache 2.0. Nejnovější verze Patiny je 13.0.0.
Obrovská poptávka po plynových turbínách zapříčinila, že datová centra začala používat v generátorech dodávajících energii pro provoz AI staré dobré proudové letecké motory, konvertované na plyn. Jejich výhodou je, že jsou menší, lehčí a lépe udržovatelné než jejich průmyslové protějšky. Proto jsou ideální pro dočasné nebo mobilní použití.
Typst byl vydán ve verzi 0.14. Jedná se o rozšiřitelný značkovací jazyk a překladač pro vytváření dokumentů včetně odborných textů s matematickými vzorci, diagramy či bibliografií.
Přidáme si tedy repozitáře, pro které chceme balíček sestavit. To můžeme udělat například pomocí osc -e prj home:m4r3k, přičemž se nám opět spustí $EDITOR. Do něj pak napíšeme kód podobný tomu následujícímu:
<project name="home:m4r3k"> <title<m4r3k's Home Project</title> <description>My packages.</description> <person role="maintainer" userid="m4r3k"/> <repository name="openSUSE_10.3"> <path project="openSUSE:10.3" repository="standard"/> <arch>i586</arch> <arch>x86_64</arch> </repository> </project>
Jak vidíte, tento soubor má poměrně složitou syntaxi (alespoň já si ji ne a ne zapamatovat :-)), naštěstí se však repozitáře dají přidat i pomocí webového rozhraní. Přihlásíme se tedy na build.opensuse.org, v našem domovském projektu klikneme na tlačítko Add Repository a vybereme si některý z repozítářů, pro které chceme sestavovat. V našem příkladu se jedná o repozitáře openSUSE 10.3, Fedora 8 a Mandriva 2008.

Po přidání repozitářů se nám začnou sestavovat jednotlivé balíčky. Průběh sestavování si můžeme vypsat pomocí příkazu osc buildlog distribuce architektura, například tedy:
osc buildlog openSUSE_10.3 i586
Po nějaké době by nám měly vzniknout balíčky pro distribuce openSUSE, Fedora a Mandriva. Každá by měla obsahovat jeden textový soubor umístěný v adresáři /etc/ s příslušným jménem. To si můžeme zkontrolovat tak, že si sestavené balíčky stáhneme a pomocí rpm -qlp balíček.rpm necháme vypsat jejich obsah.
for foo in *.rpm; do echo "balíček $foo obsahuje"; rpm -qlp $foo; echo "---"; done balíček fedora-testovaci-balik.rpm obsahuje warning: fedora-testovaci-balik.rpm: Header V3 DSA signature: NOKEY, key ID a575c4b8 /etc/Fedora.txt --- balíček mandriva-testovaci-balik.rpm obsahuje warning: mandriva-testovaci-balik.rpm: Header V3 DSA signature: NOKEY, key ID a575c4b8 /etc/Mandriva.txt --- balíček openSUSE-testovaci-balik.rpm obsahuje warning: openSUSE-testovaci-balik.rpm: Header V3 DSA signature: NOKEY, key ID a575c4b8 /etc/openSUSE.txt ---
Mezi verzemi distribucí se často přejmenovávají, rozdělují a slučují balíčky. Proto je výhodné mít k dispozici i rozlišování podle verze jednotlivých distribucí. Například, pokud chceme, aby se nějaká část kódu provedla jen v případě, že jde o distribuci openSUSE a zároveň se jedná o verzi novější než 10.2, pak použijeme tento kód:
%if 0%{?suse_version} > 1020
%patch0
%endif
| Distribution | Variable |
|---|---|
| openSUSE Factory | %if 0%{?suse_version} == 1031 |
| openSUSE 10.3 | %if 0%{?suse_version} == 1030 |
| openSUSE 10.2 | %if 0%{?suse_version} == 1020 |
| SUSE Linux 10.1 | %if 0%{?suse_version} == 1010 |
| SLE{S,D} 10 | %if 0%{?sles_version} == 10 |
| SUSE Linux 10.0 | %if 0%{?suse_version} == 1000 |
| SUSE Linux 9.3 | %if 0%{?suse_version} == 930 |
| SLES 9 | %if 0%{?sles_version} == 9 |
| CentOS 5 | %if 0%{?centos_version} == 501 |
| RHEL 5 | %if 0%{?rhel_version} == 501 |
| Fedora 8 | %if 0%{?fedora_version} == 8 |
| Fedora 7 | %if 0%{?fedora_version} == 7 |
| Fedora 6 with Extras | %if 0%{?fedora_version} == 6 |
| Fedora 5 with Extras | %if 0%{?fedora_version} == 5 |
| Fedora 4 with Extras | %if 0%{?fedora_version} == 4 |
| Mandriva 2008 | %if 0%{?mandriva_version} == 2008 |
| Mandriva 2007 | %if 0%{?mandriva_version} == 2007 |
| Mandriva 2006 | %if 0%{?mandriva_version} == 2006 |
Tabulka převzata, upravena a aktualizována z en.opensuse.org.
Porovnávací operátory nejsou samozřejmě omezeny jen na operátor ekvivalence (==), ale také jsou k dispozici operátory menší než (<) a větší než (>). Tyto operátory můžeme také skládat a sestavit tak operátor větší nebo rovno (>=), případně menší nebo rovno =<). Stejně tak můžeme také kombinovat jednotlivé podmínky a sestavit například následující konstrukci:
%if 0%{?suse_version} || 0%{?sles_version}
%patch1 -p1
%endif
Která provede makro %patch vždy, když je balíček sestavován v prostředí openSUSE nebo SLES(D). U sestavování balíčků se lze také rozhodovat podle architektury a tyto podmínky lze samozřejmě také kombinovat ve složitější celky. Například takto:
%if 0%{?suse_version} == 1030
%ifarch x86_64
%patch1
%endif
%endif
Makro %patch1 bude provedeno, jen když je balíček sestavován pro openSUSE verze 10.3 a cílová architektura je x86_64.
Často se stane, že si chcete udělat balíček na nový program a z ničeho nic zjistíte, že programů, na kterých tento program závisí, je obrovská spousta. To je ještě v pohodě, jednoduše je napíšete do BuildRequires nebo do Requires. V tom horším případě však zjistíte, že potřebné balíčky nejsou k dispozici v oficiálních stromech balíčků. Pokud máte štěstí, tak balíček který potřebujete, už vytvořil někdo jiný, kdo připravuje balíčky v rámci openSUSE Build Service. Pak máte několik možnosti, jak tyto balíčky zužitkovat. Můžete je zkopírovat do svého projektu pomocí příkazu osc copypac, který má následující syntaxi:
osc copypac home:jiny-balikar cool-balicek home:m4r3k cool-balicek
Což vytvoří identickou kopii balíčku u vás v home:m4r3k. To se hodí v případě, že hodláte balíček nějak významněji upravovat. Má to však tu nevýhodu, že zbytečně plýtváte strojový čas i místo na build serverech. Proto je k dispozici také příkaz osc linkpac, který provede nalinkování balíčku z jednoho projektu do jiného. Tam se balíček sestaví a bude k dispozici i pro váš projekt. Toto řešení také nabízí určitou míru volnosti. Pokud totiž ve svém nalinkovaném projektu vytvoříte soubor se stejným názvem jako je v tom původním, tak se použije ten váš. Můžete si tak třeba poupravit .spec soubor, aniž by se muselo udržovat několik kopií tarové koule se zdrojovými kódy.
osc linkpac home:jiny-balikar cool-balicek home:m4r3k cool-balicek
Vlastní .spec soubor vnutíte projektu tak, že si aktualizujete svou lokální kopii repozitáře pomocí příkazu osc up a přepnete se do adresáře s balíčkem (cd cool-balicek). Pak si vytvoříte třeba soubor cool-balicek.spec a v něm vlastní obsah. Častěji však využijete už hotový .spec soubor a jen si jej upravíte k obrazu svému. Stažení originálního souboru lze provést pomocí:
osc co home:jiny-balikar cool-balicek cool-balicek.spec
Nyní už stačí soubor jen otevřít ve svém oblíbeném editoru a dle libosti upravit. Soubor poté přidáme do projektu pomocí osc add cool-balicek.spec a výsledek pošleme na server pomocí osc commit. Balíček se nyní sestaví i s vašimi změnami. Tento způsob sice už tolik neplýtvá místem na disku, ale na druhou stranu stále plýtvá strojovým časem serverů. Proto je k dispozici i příkaz osc aggregatepac, který je vhodný v případě, že chceme balíček jen používat a nijak upravovat. Syntaxe je obdobná jako u předchozích příkazů.
osc aggregatepac home:jiny-balikar cool-balicek home:m4r3k cool-balicek
Stejně jakou u předchozích dvou příkazů, je i u tohoto příkazu poslední parametr cool-balicek nepovinný a v případě, že jej nepoužijete, tak se použije název stejný jako u zdrojového balíčku.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
(Program běží, ale nic nedělá a plní konzoli chybovýma hláškama).
(Program běží, ale nic nedělá a plní konzoli chybovýma hláškama).Což mi bez těch hlášek vůbec nepomůže. :D
. Všechny ostatní chyby se už jen od toho odvíjí (křik urllib).
michals@smrz:~> yabsc
user 'ilfirin' not found
Traceback (most recent call last):
File "/usr/bin/yabsc", line 597, in run
self.projects = self.bs.getWatchedProjectList()
File "/usr/bin/yabsc", line 101, in getWatchedProjectList
tree = ElementTree.fromstring(''.join(core.get_user_meta(self.apiurl, username)))
TypeError