Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).
Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.
Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.
Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.
NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.
IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.
Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.
Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.
Ebuild je speciální skript v bashi používaný balíčkovacím systémem Gentoo Linuxu - Portage. Obsahuje popis balíčku, licenci, adresu ke zdrojovým kódům, instrukce, jak je rozbalit a případně opatchovat, zkompilovat a nainstalovat. Musí být uložen v kódování UTF-8.
Může mít opravdu mnoho nejrůznějších podob, ale nejprve si ukážeme jeden z jednodušších:
# Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: \ # /var/cvsroot/gentoo-x86/x11-themes/ethemes/ethemes-0.16.8.ebuild, \ # v 1.1 2006/08/28 06:14:05 vapier Exp $ DESCRIPTION="Meta package for all the official Enlightenment themes" HOMEPAGE="http://www.enlightenment.org/" SRC_URI="" LICENSE="BSD" SLOT="0" KEYWORDS="alpha amd64 hppa ia64 ppc ppc64 sh sparc x86" IUSE="" DEPEND="x11-themes/etheme-BlueSteel x11-themes/etheme-BrushedMetal-Tigert x11-themes/etheme-Ganymede x11-themes/etheme-ShinyMetal"
Na začátku každého ebuildu z Portage najdete tři zakomentované řádky, kterých si vůbec nemusíte všímat: první je copyright, druhý licence a o třetí se stará CVS, takže je nejlepší, když se tam nechá jen "# $Header: $
".
V tomto článku se nebudu zabývat nastavením Portage; jen vysvětlím, co znamenají proměnné, o kterých se později zmíním.
Proměnná | Popis |
PORTDIR |
Adresář, ve kterém se nachází strom Portage. Výchozí hodnota je /usr/portage . Změnit ji můžete například podle FAQ: Jak přesunout Portage?. |
PORTDIR_OVERLAY |
Adresář(e), kam patří ebuildy buď vaše vlastní nebo neoficiální od třetích stran. |
PORTAGE_TMPDIR |
Dočasný adresář pro Portage. Výchozí hodnota je /var/tmp . |
Naše ebuildy určitě nebudeme ukládat do hlavního stromu Portage, tedy ${PORTDIR}
, protože by se za prvé míchaly mezi oficiální ebuildy a za druhé byste o ně hned při další synchronizaci přišli. Patří do adresáře, který si nadefinujete zmiňovanou proměnnou PORTDIR_OVERLAY
v souboru /etc/make.conf
.
Nyní je čas zvolit pro náš ebuild vhodnou kategorii ze seznamu dostupném v souboru ${PORTDIR}/profiles/categories
. Pokud by žádná nevyhovovala, nic vám nebrání vytvořit si kategorii vlastní - potom je ale třeba vytvořit soubor profiles/categories
i v overlayi a zapsat ji tam. Název kategorie může obsahovat malá písmena a-z a pomlčky.
V kategorii si vytvoříme adresář, který bude nést název balíčku. Je vhodné vyhnout se velkým písmenům, přestože je lze použít. Název může obsahovat, stejně jako kategorie, a-z, pomlčky a navíc ještě čísla 0-9, plus a podtržítko.
V tomto adresáři konečně vytvoříme ebuild. Jeho název musí obsahovat název balíčku ve tvaru, který jsme zvolili pro název adresáře. Následuje pomlčka a za ní verze a za ní případně další pomlčka a revize. Nakonec patří přípona '.ebuild
', takže například nazev-baliku-1.0-r1.ebuild
.
Verze se může skládat z jednoho nebo více čísel oddělených tečkou (např. 1.2.3 nebo 20070205). Poslední číslo může být následováno písmenem (např. 1.2b - nepoužívat b
místo _beta
!) nebo některým z řetězců vypsaných v následující tabulce. Řetězce jsou vypsány v pořadí, jak je bere Portage, od nejnižší verze po nejvyšší.
Řetězec | Význam |
_alpha | Alpha verze |
_beta | Beta verze |
_pre | Preview verze |
_rc | RC (release candidate) verze |
(nic) | Normální verze |
_p | Patch level |
Úplně nakonec patří revize. Pár příkladů, jak můžou vypadat takové verze: 0.1_alpha20, 5.0_pre12-r8, 2.3_rc5-r2, 3.6b-r5.
Následující proměnné jsou definovány jen pro čtení. Je vhodné je používat namísto zapisování verzí atp. "napevno". Vždy je totiž cílem to, aby pokud možno stačilo ebuild jen přejmenovat na novou verzi a on bez zásahů rovnou fungoval. To samozřejmě není vždy možné, ale často ano.
Proměnná | Popis |
P | Název a verze balíčku bez revize, například ethemes-0.16.8 . |
PN | Název balíčku, například ethemes . |
PV | Verze balíčku bez revize, například 0.16.8 . |
PR | Revize balíčku, nebo r0 , když nemá revizi. |
PVR | Verze balíčku s revizí, například 0.16.8 (zde bez revize, protože žádnou nemá). |
PF | Název, verze a revize balíčku, například ethemes-0.16.8-r0 . |
A | Všechny zdrojové soubory pro balíček (kromě těch, které jsou podmíněny USE flagy, které máte zakázány - o podmínkách si řekneme později). |
CATEGORY | Kategorie balíčku, například x11-themes . |
FILESDIR | Cesta k podadresáři files/ v adresáři s ebuildem (v tomto případě běžně /usr/portage/x11-themes/ethemes/files ), který je často využíván pro malé patche a soubory. Má hodnotu "${PORTDIR}/${CATEGORY}/${PN}/files ". |
WORKDIR | Pracovní adresář s výchozí hodnotou "${PORTAGE_TMPDIR}/portage/${PF}/work ". |
T | Dočasný adresář, který ebuild může využívat. Má hodnotu "${PORTAGE_TMPDIR}/portage/${PF}/temp ". |
D | Cesta k dočasné instalační cestě. Sem se nejprve nainstaluje každý ebuild, a teprve když projde sandboxem (tzn. nepokouší se nic smazat atp.), tak je nainstalován do ${ROOT} . |
ROOT | Cesta ke kořenovému adresáři systému. Vždy připojte na začátek cesty - vyjímkou je jen proměnná "${D} ". |
Proměnná | Popis |
DESCRIPTION | Stručný popis balíčku. |
HOMEPAGE | Domovská stránka balíčku. |
SRC_URI | Adresa ke zdrojovým kódům. Nepoužívejte v ní proměnnou HOMEPAGE . |
LICENSE | Pod jakou je balíček vydán licencí - název musí přesně (včetně velikosti písmen) odpovídat souboru v adresáři "${PORTDIR}/licenses ". |
SLOT | Určuje, zda bude možné instalovat více verzí paralelně. O slotování si povíme více později. |
KEYWORDS | Architektury, na kterých se balíček sestaví a funguje. Pokud ještě není řádně otestovaný, přidá se před název architektury tilda, takže například ~amd64 . |
IUSE | Všechny USE flagy, které budou u balíčku dostupné. |
Proměnná | Popis |
S | Cesta k dočasnému adresáři s rozbalenými zdrojáky. Výchozí hodnota je "${WORKDIR}/${P} " a ebuild by ji neměl předefinovávat, pokud se nemění - to záleží na názvu adresáře, který se rozbalí ze zdrojáků: pokud je ve tvaru "${P} ", pak není třeba tuto proměnnou definovat. |
DEPEND | Závislosti, které jsou nutné pro sestavení balíčku. |
RDEPEND | Závislosti, které jsou nutné pro spuštění balíčku. |
PDEPEND | Závislosti, které musí být nainstalovány až po balíčku. Zpravidla je vhodné se používání PDEPEND vyhýbat a používat RDEPEND , kromě případů, kdy by to způsobilo kruhové závislosti. |
RESTRICT | Vlastnosti oddělené mezerou, které budou pro daný balíček zakázány. O těch se zmíním jindy. |
PROVIDE | Tato proměnná by měla být použita jen v případě, když balíček poskytuje virtuální cíl. Například blackdown-jdk a sun-jdk poskytují virtual/jdk . Balíčky potom mohou záviset na virtual/jdk a není třeba je pokaždé vyjmenovávat. |
Příští díl bude o funkcích, eclass a příkazech.
Nástroje: Tisk bez diskuse
Tiskni Sdílej:
že ebuild je většinou v 7 bitA David hovoří o Ebuildech takže v čem jsou Changelogy je zcela irelevantní. Ale i kdyby byl jen jeden jediný ebuild uložen v kódování jiném než UTF8 a fungovalo to tak to znamená, že ebuildy v UTF8 být nemusí. A vzhledem k tomu že jich je většina v 7bit kódování tak jsou mé argumenty i podložené.
<|>pka
, což daném kódování může znamenat "stopka", a ono to bude fungovat :P Samozřejmě např. pro zobrazování ebuidu bude potřeba širší podpora daného kódování v systému.
Třeba můžeš zcela bezpečně do komentáře napsat // <|>pka, což daném kódování může znamenat "stopka", a ono to bude fungovat :PTo asi těžko, kódování dokumetu by bylo stále 7 bit ASCII. Protože kdyby platilo to co říkáš tak je html kódování což neplatí. HTML je značkovací jazyk. Kódování je o vrstvu níže. TZN můžu nadefinovat hexadeximální hodnotě 6F což je v ASCII
o
třeba význam stopka
. A pokud bych zahrnul podporu pro takovéto kódování do nějaké aplikace tak kdybych otevřel nějaký soubor kde by se vyskytovaly hodnoty 6F tak by se místo ASCII o zobrazilo stopka. A rozdíl mezi 7bit ASCII a UTF8 je hlavně tento. Slovo "ahoj" v HEXA je v jednom
64686F6A
a ve druhém FFFE610068006F006A00
. Jestli alespoň poznáš které je které.
A rozdíl mezi 7bit ASCII a UTF8 je hlavně tento. Slovo "ahoj" v HEXA je v jednomMam pocit, ze si tu nekdo plete UTF-8, UTF-16 a jeste navic do toho micha BOM... Byte Order Mark neni nutny a ASCII znaky v UTF-8 zabiraji jeden bajt.64686F6A
a ve druhémFFFE610068006F006A00
.
je odolné proti poškození dat (při náhodném porušení jednoho znaku je stále možné přečíst zbytek řetězce)Stejne jako utf-8
RESTRICT="nomirror"
RESTRICT="fetch"
No, spíš bych používal
- stahovanie z mirrorov a povolit iba stahovanie z oficialnej stranky
RESTRICT="nomirror"
RESTRICT="mirror"
, to je i v manuálu a je to logičtější (protože RESTRICT zakazuje ).
Ano, o tom píšu v druhém díle...
- stahovanie odkialkolvek, uzivatel si musi subor stiahnut sam (ebuild mu ponukne adresu, teda za predpokladu, ze sa dany SW stiahnut da)
RESTRICT="fetch"
Bych neřekl, že je to logičtější. Restrikce = omezení, okleštění, snížení, zmenšení počtuNo? Omezení mirrorů
/etc/make.conf
PROVIDE -- nepouzivaji se ted spise "new-style virtuals", tedy "normalni balicky" typu virtual/*?Používá se obojí:
$ grep PROVIDE /portage/net-print/cups/cups-1.2.7.ebuild PROVIDE="virtual/lpr"Ale virtual/* balíčky jsou podle mě určitě lepší...
Popis promenne $A neni jednoznacny -- ve skutecnosti jde (podle manualu) o vsechny zdrojove kody, ktere aktualne nastavena kombinace USE flagu vyzaduje pro kompilaci; mluvit v tomto kontextu o "zakazanych USE" zavani maskovanim USE flagu, coz mate.Kdybych měl na mysli maskované USE, napsal bych to. Jak mám říkat "zakázaným" USE flagům, aby to nebylo matoucí? Vypnuté?
Tedy neco jako DEPEND=">=media-libs/libtheora-1.0_alpha7 encode".
DEPEND="encode? ( >=media-libs/libtheora-1.0_alpha7 )"
Paklize vyse uvedene zavislosti neni mozne deklarovat, jak se k tomu stavi spravci portage? Nechavaji to na uzivateli (einfo) nebo vyvtareji ebulildy typu media-libs/libtheora-encode a media-libs/libtheora, aby mohli zavislost zapsat?Ano, USE-based dependencies je jedno z omezeni Portage, ktere celkem dost boli. Resi se to osklivym hackem, kdy se pred zacatkem instalace samotneho baliku zjisti, jestli je nejaky balicek sestaven s danym USE, a pokud ne, instalace "chcipne". Funguje to, ale problem je ten, ze tenhle test neprobiha pri sestavovani zavislosti, ale az tesne pred kompilaci. Kazdopadne se na tomhle pracuje, podporou ve stabilni verzi Portage si nejsem jisty, ale je to jedna z veci, ktere "drive nebo pozdeji" budou hotove. Za nekolik let pouzivani jsem na podobne problemy narazil v nekolika malo pripadech, takze si dovolim tvrdit, ze jde spise o "problem cistoty designu" a ne o nejaky realny showstopper.