Jakub Vrána vydal Adminer ve verzi 6.0.0 s více než 130 změnami: "Většina změn vznikla s asistencí Claude Opus 5. Někteří lidi se bojí, že AI asistence může kód zamořit technickým dluhem. To je jistě pravda, pokud vývojář všechny změny bezduše odbouchne Enterem. Ale pokud si pořádně projde plán, vyjedná v něm změny a pak totéž udělá i s vygenerovaným kódem, kvalita kódu stoupne a technický dluh naopak klesne. Je to jako párové programování s
… více »Sam Aaron vydal novou major verzi 5.0.0 aplikace Sonic Pi (Wikipedie) určené také pro výuku programování pomocí skládání hudby. Přehled novinek na GitHubu. Instalovat lze také z Flathubu.
U příležitosti 30. výročí vydání počítačové hry Quake byla vydána nová epizoda s názvem Dawn of the Machine (Steam).
Vládní CERT upozorňuje (𝕏) na sérii bezpečnostních záplat (CVSS 9.9) v produktech Cisco řešících kritické zranitelnosti umožňující obejití autentizace, eskalaci oprávnění, vzdálené spuštění kódu a odepření služby. Úspěšné zneužití může útočníkům umožnit získat neoprávněný přístup k dotčeným systémům, kompromitovat zařízení Cisco Catalyst SD-WAN a Cisco IOS XE, spustit libovolný kód, zpřístupnit citlivé informace nebo narušit dostupnost postižených systémů.
Soud v americkém státě Nové Mexiko ve čtvrtek nařídil internetové společnosti Meta Platforms zaplatit 567 milionů dolarů (téměř 12 miliard Kč) za újmy, které její platformy působí mladým lidem. S přihlédnutím k dřívějšímu verdiktu tak má společnost celkem zaplatit 942 milionů dolarů, což je malý zlomek jejího ročního výnosu, který loni činil 60 miliard dolarů. Čtvrteční verdikt firmě také nařizuje, aby změnila způsob, jakým její
… více »Mark Russinovich (CTO v Microsoft Azure) se na LinkedIn pochlubil svým projektem MS Paint Doom napsaným pomocí Claude. Hru Doom umožňuje hrát v programu Malování (Microsoft Paint). Malování funguje jako monitor. Herní engine (ViZDoom) běží na pozadí a každý vykreslený snímek hry vkládá automaticky přes schránku (clipboard) do Malování.
Platformy ChatGPT i Roblox by mohly být zařazeny na seznam mimořádně velkých on-line platforem nebo internetových vyhledávačů, na něž se vztahují zvláštní podmínky podle nařízení o digitálních službách (DSA). Vzhledem k tomu, že ChatGPT i Roblox oznámily počet uživatelů nad prahovou hodnotou DSA, je toto označení „rozhodně možné“ a mohlo by „přijít dříve či později“. On-line platformy a vyhledávače zařazené na seznamy DSA musejí
… více »Společnost Cloudflare představila Cloudflare OS (GitHub), tj. open source platformu navrženou pro integraci umělé inteligence (agentů) přímo do pracovních procesů organizací.
Byla vydána nová verze 5.13 svobodného multiplatformního softwaru pro konverzi a zpracování digitálních fotografií primárně ve formátů RAW RawTherapee (Wikipedie). Vedle zdrojových kódů je k dispozici také balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.
Jean-Baptiste Kempf na svém blogu představil novou verzi 9.0 "Lei" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie).
Balíčkovací systémy jsou jistě tématem, které hodně hýbe světem GNU/Linuxu. Jedni je vynášejí, jiní zatracují. Co vlastně balíčkovací systémy přináší ?
První bod je jasný. Snadná instalace programů. I když pojem "snadná" je velmi
relativní, sám dobře vzpomínám na hodiny strávené na rpmfindu hledáním závislostí.
Závislosti jsou vůbec jednou z nejvíce kritizovaních vlastností balíčkovacích systémů.
Jenže narozdíl od skutečného světa mohou být tyto závislosti velmi užitečné.
Protože kdyby balíčkovací systém neřešil závislosti, nainstalovali byste program
a zjistili, že nejde. Chybí libxyzblbost.so.4. Ale kde sehnat libxyzblbost
ve správné verzi ? Bez balíčkovacích systémů vám zbývá google, najít správnou verzi
projektu, zkompilovat, případně nainstalovat a zjistit, že nefunguje, protože
se nesnese libnesmysl.so.5 verze 1.14.3. Balíčkovací systém alespoň ví, co
přesně potřebujete — který balíček. Ale ani tohle řešení není zcela ideální.
Když najdete a stáhnete potřebné balíčky (což je o něco jednodušší díky službám
typu rpmfind), zjistíte, že vyžadují další balíčky, a ty mají další závislosti.
Tomuto jevu se říká dependency hell a je často kritizován uživateli OS, který
se nejmenuje. Jenže zapomínají na obrovské výhody tohoto systému. Nemusíme
nic psát dvakrát. V nejmenovaném OS si každý program řeší všechno sám za sebe,
vznikají složité nesourodé balasty bez návaznosti na okolní prostředí. Ve
světě GNU/Linuxu je to jinak. Vývojáři se snaží o maximální využití existujícího
kódu a doboru spolupráci programů. A od tohu zde máme systém závislostí. Pravda,
instalece programů tímto způsobem nebyla nejjednodušší a dalo se tím strávit nějakých pár
hodin.
Ale samozřejmě vývoj jde kupředu a objevuje se nový trend — repozitáře. Ty zdánlivě řeší mnoho nevýhod stávajícího systému. Nemusíte hledat balíčky — chcete firefox ? Napište impkg install firefox a máte. Nemusíte řešit závislosti, balíčkovací systém je natolik inteligentní, že je všechny v repozitářích vyhledá a automaticky stáhne a nainstaluje (s vaším souhlasem). Je to výrazný pokrok oproti předchozí variantě, ale má jeden velký nedostatek. Co když se daný balíček nenachází v repozitářích vaší distribuce ani jiných kompatibilních repozitářích ? Většina balíčkovacích systémů založených na repozitářích nabízí i klasickou variantu — instalaci balíčků běžným způsobem ze souboru. Jenže na takovouto instalaci se zase většinou nevztahují výhody repozitářů a automatické řešení závislostí. Závislosti si proto musíte nainstalovat sami — většinou z repozitářů, což je celkem jednoduché, ale přesto je nepochopitelné, proč tato činnost často není balíčkovacím systémem vykonána automaticky. Ale závislosti, které nenajdeme v repozitářích, musíme sehnat a nainstalovat klasickým způsobem a opět se vracíme do raných dob rpm.
Jako taková menší odbočka se v této době začaly objevovat různé "nebalíčkové" systémy instalace, spíše podobné instalátorům v OS, který nesmíme jmenovat. Tyto nástroje často neřeší závislosti vůbec — spoléhají na určitou základní množinu knihoven, která musí být na cílovém systému přítomna (glibc, gtk+, ...) a zbytek je přibalen. Zde je zcela evidentní, že se nejedná o moc inteligentní řešení, o čemž svědčí i jeho původ.
Další změnou na poli balíčkových systémů byly systémy využívající balíčky ze zdrojového kódu. Tyto systémy kombinují většinu (ne)výhod balíčkovacích systémů s většinou (ne)výhod kompilace programů. Výrazně se zvyšuje čas potřebný k instalaci balíčků, zároveň se ale zvyšuje rychlost a přizpůsobitelnost programů, což ocení převážně pokročilí uživatelé. Ovšem i tyto nástroje kopírují klasické rysy balíčkovacích systémů, ať už jde o závislosti nebo repozitáře, a objevují se stejné problémy.
Proto rozumným krokem ve vývoji balíčkovacích systémů je sjednocení repository a non-repository balíčků. Jednou z mnoha myšlenek je identifikace balíčků pomocí URL, která tak vlastně vytváří z celého internetu jeden velký repozitář. Instalace je poté pohodlná i u programů, které nejsou součástí distribuce, prostě napíšete impkg install http://program.example.org/program-1.0. Ovšem zde je problém nejednoznačnosti. Jak mám balíčkovací systém poznat, že http://nesmysl.com/libgtk-2.6 a http://packages.imdistro.org/pkg/gtk2-2.6 jsou balíčky stejné knihovny ? Některé programy si jako závislost mohou vybrat první URL, jiné druhou. Systém potom nainstaluje oba (zdánlivě rozdílné) balíčky a vzniknou konflikty. V podstatě ať přemýšlíte nad otázkou správného řešení balíčků jakkoliv, ideální řešení neexistuje. Ale můžeme se mu libovolně přibližovat. Proto další rozšíření předchozího nápadu zahrnuje jednoznačné názvy balíčků. Tyto názvy by se měly vytvářet podle jednotných pravidel, ideálně po dohodě s autorem programu, aby byly skutečně jednotné. Potom je jedno, jestli instalujete http://gtk.org/gtk2/2.6 nebo http://impkg.nesmysly.com/gkt2-ultimate/gtk2/2.6-u. Systém rozliší stejný název a vybere nejvíc vyhovující verzi. Zároveň si sebou distribuce může nést připravený seznam vzorů URL, kde se dají hledat balíčky přímo podle názvu. Takže v /etc/impkg.conf bude např. http://packages.imaginarninesmysl.net/ a při požadavku impkg install program se vybere http://packages.imaginarninesmysl.net/program, pokud existuje. Pokud ne, zkusí další položku v seznamu atd.
I toto řešení má značnou nevýhodu v neexistenci seznamu balíčků, kde by si uživatel neznalý konkrétního názvu mohl vybrat, co hledá. To ale není příliš velký problém, stačí přidat katalog balíčků, který si nese popisy balíčků spolu s jejich URL. Ten by bylo možné vytvářet automaticky se zadáním URL zdrojů, které by obsahovaly potřebné metainformace.
Takže finální podoba tohoto návrhu je (nemám tušení, zda něco podobného někde existuje, či nikoliv; veškerá podobnost se skutečnými implementacemi je čistě náhodná): balíčky identifikujete podle jednoznačného názvu a podle URL, která také odpovídá fyzickému umístění balíčku. URL může vypadat jako http://server/cesta/název nebo http://server/cesta/název/verze pro instalaci kontkrétní verze. V adresáři /cesta/název/verze na serveru pak leží balíček verinfo s informacemi o balíčku, popisem, definicí závislostí, atd. Např:
#IS:text.config.impkg-verinfo
#impkg package file for package gtkBlbost
[Package]
pkgname=blbost
version=0.1
[Files]
data=http://server/data/blbost-0.1.tar.bz2
configfiles=/etc/blbost.conf /etc/.blbostrc #nebodou mazány ani přepisovány
scripts=preinstall postremove #seznam skriptů z dataarchivu (z adresáře např. .scripts),
#které jsou spouštěny při daných operacích (instalace, odstranění, update, ...)
[Locations]
#nutno uvést lokace všech vyžadovaných balíčků pro případ, že systém žádné implicitní nemá
#ale správce balíčků ma plné právo použít jiné lokace dle vlastního či uživatelova uvážení
gtk2=http://packages.impkg.org/gtk2
blbost-extras=http://server/cesta/blbost-extras
#nesmysl není definován, protože je vyžadována pouze jeho nepřítomnost
[Dependencies]
require gtk2 >=2.4
recommend gtk2 >=2.6
suggest blbost-extras =0.1
require !nesmysl #nesnese se s konkurenčním programem
[Changelog]
...
a v nadřazeném adresáři soubor pkginfo se souhrným obsahem, např.
#IS:text.conf.impkg-info [Package] pkgname=blbost url=http://server/cesta/blbost [About] #informace pro katalog category=misc #nezařaditelné name=gtkBlbost desc=Absolutní blbost [Versions] all=0.1 0.2 0.3b latest=0.3b stable=0.1 testing=0.2 devel=0.3bTakovýto systém by mohl fungovat jak pro kompilované balíčky ala Gentoo, tak pro binární. To ale pro tuto chvíli není podstatné. Takže každý balíček by měl podobné definice a soubory ke stažení. Vlastní balíčkovací systém také musí mít jednoduchou konfiguraci, např. /etc/impkg.conf:
#impkg configuration file [Prefs] preferred=devel #stable, testing, devel, cvs, ... [Locations] gtk2=http://gtk.impkg.org/gtk2 [Repositories] #url "repozitářů" ve kterých zkouší hledat balíčky http://packages.impkg.org http://packages.imdistro.org sftp://customer1453:heslo@store.impkg.comPotom by bylo možné instalovat klasickým způsobem:
impkg install http://server/cesta/blbost
impkg install http://server/cesta/blbost/1.0
impkg install http://server/cesta/blbost 1.0
impkg install http://server/cesta/blbost testing
impkg install blbost #za předpokladu, že je
impkg install blbost 1.0 #v některém z "repozitářů",
#tedy implicitních vzorů URL
Odstraňování by bylo ještě jednodušší prostě impkg remove blbost,
potom samozřejmě aktualizace typu impkg update blbost nebo rovnou
impkg system-update. Ovšem dalším faktem je, že spousta současných repository-based
správců balíčku opomíjí uživatele nedisponující připojením k internetu, přesněji disponující, ale
na jiném počítači. Ti se musí spokojit s klasickou zdlouhavou metodou. Přitom řešení je tak jednoduché.
Vyexportovat informace o nastavení balíčkovacího systému a nasinstalovaných balíčcích do jednoho souboru,
ten přenést na libovolném médiu na počítač s internetem, stáhnout vše potřebné do speciálního archivu,
který se opět importuje na cílovém počítači. Např. impkg export >/media/usbdisk/my.ipe,
a na druhém počítači se použije jednoduchá utilitka imdl, která nevyžaduje ani instalaci (pokud
v systému není přítomen impkg). Nejdříve se připraví a otevře cílový archiv, např. imdl open
/media/sdb1/my.ipe /media/sdb1/programy.ipi (první soubor jsou vyexportované informace o balíčcích
a druhý je název archivu, do kterého se budou ukládat stažené programy). Poté je možno používat imdl
stejným způsobem jako impkg, např imdl install blbost. Nakonec je třeba ukončit práci s
archivem, např imdl close. Archiv lze potom naimportovat na původním počítači, např.
impkg import /media/usbdisk/programy.ipi. Je to rozhodně o něco jednodušší než ruční stahování
balíčků...
V předchozím odstavci jsem jen tak zhruba nastínil, jak bych si představoval
implementaci dobrého balíčkovacího systému. Přemýšlel jsem o tom docela dlouho,
a žádné lepší řešení mě nenapadlo. Pokud máte nějaké rozumné nápady, můžete se
o ně podělit s ostatními v komentářích. Popsané kategorie balíčkovacích systémů
byly brány zcela obecně, avšak většina z nich doopravdy existuje minimálně v jednom
exempláři. Já jsem zatím víceméně spokojeným uživatelem gentoo, ale instalace čehokoliv
mimo repozitáře je hrozná. PORTDIR_OVERLAY už mi leze krkem a zdá
se mi, že k nainstalování takovéhoto balíčku je třeba až příliš mnoho úkonů,
nemluvě o udržování programu aktuálního. Jisté řešení se pokouší nabídnout layman,
ale stále jsou nejčastěji šířeny samotné ebuildy. impkg v tomto textu označuje
imaginární balíčkovací systém, pod kterým si můžete představit cokoliv. Nemám čas
ani chuť nastíněné myšlenky implementovat a nechat vzniknout tisícprvní balíčkovací systém,
už takhle je jich dost. Berte to jen jako námět k zamyšlení nad stávající implementací,
třeba to někoho inspiruje...
Tiskni
Sdílej:
. A toto nikdo jiny nez spravci hlavnich distribuci neporesi. Proto me prijdou vsechny tyhle system jako autopackage (ten zvlast) jako hnus^2
Také mi ten příklad připoměl PGFBUILD. Navíc spoustu zmíněných nevýhod balíčkovací systém Archu nemá.
ln -s /opt/program/share/program /usr/share/program. Kouzlo jednoduchosti...
Naopak musim rict ze je lepsi mit konfiguraky v /etc a nebo treba ikonky jsou docela pohromade, kdyz clovek neco hleda, libi se mi to tak jak to je
Navic mas vsechny binarky pohromade a muzes se podivat co vsechno v systemu mas.
Pokud nějaký program při make install přepíše systémové binárky, tak je jeho autor nebetyčné čuně.
hodně velkým písmem, ať to nikdo nezkouší instalovat příkazem make installAND
Balíčkovací systém by neměl dopustit, aby si dva balíčky přepsaly binárky nebo jakýkoli jiný soubor
make install asi nebude součáští nějakého balíčkovacího systému. :)
A myslím si, že by nebylo od věci mít možnost takový přepis povolit, pokud to explicitně balíkář povolí, zajisté po zralé úvaze. A myslím si, že se tak děje běžně, ale jen za předpokladu, že soubor nebyl změněn. Tedy pokud nainstaluješ apache z balíku a hned poté (ještě než upravíš konfiguráky) nainstaluješ php, tak si ten balík php upraví konfigurák apache, pokud dále nainstaluješ mysql a ještě si neupravil php.ini tak si to IMHO opět povolí dynamický modul pro spolupráci mysql a php.
jak nainstalovat program tenaten do adresáře tohoatohoTo je jednoduché:
./configure --prefix=/home/ja/mujvlastniadresar - a nic mimo nepocuchám. A žádné řeči o kompilaci, pokud vymýšlím kraviny, dostanu zákonitě kravskou odpověď.
Bez kompilování.
Proč by si běžný uživatel nemohl nainstalovat program? Běžný uživatel domácího desktopového PC si sám běžně instaluje operační systém a programy. Na tom není nic nenormálního. Každý nepotřebuje mít doma administrátora, aby mu to udělal.Odpověď se netýkala instalace samotné, ale umístění instalovaných souborů. Ale poslední větou jste si odpověděl sám: Právě že každý nemusí mít doma administrátora, aby mu určoval, kam který soubor má přijít, že... Takže to prostě nechám na balíčkovacím systému, a když chci vyvádět psí kusy, tak si je vyvádím pomocí prefixu při kompilaci
C:\Program Files, v horším případě C:\PROGRA~1, a basta fidli.