Portál AbcLinuxu, 1. května 2025 20:55
Bylo rozhodnuto, že sestavíme oficiální API, které bude nezávislé na balíčkovacím systému.Kam tohle API bude instalovat software? A co udělá, když soubor, který se má nainstalovat, již existuje?
Kam tohle API bude instalovat software?Přece do
/Program Files/Company Label/Version/
.
A co udělá, když soubor, který se má nainstalovat, již existuje?Přepíše. Nač vymýšlet něco nového, když tu máme osvědčené
/opt/third_party/Company Label/Version/
.
A co udělá, když soubor, který se má nainstalovat, již existuje?
To by se při takové organizaci nemělo nikdy stát, a pokud přece, API by mělo odmítnout ten soubor přepsat, případně umožnit uživateli volbu (pokud je to možné).
/opt
, jak stanovuje FHS.
No nevím, raději bych, aby se tyto third-party věci dávali do /opt
, jak stanovuje FHS.
Nebojte, jistě si budete moci vybrat distribuci, která to bude dělat právě podle vašeho gusta dpkg
v takovém případě instalaci ukamžitě ukončí a NNF se tím pádem nenainstaluje.
A pokud ten soubor bude shodou okolností nějaká knihovna (.so) s nekompatibilní verzí, tak jste v háji, protože buď nebude fungovat NNF nebo zbytek systému. A už musíte buď dokopat výrobce ke změně umístění toho souboru (ale to vám dpkg
taky nedovolí nebo aspoň bude nadávat) nebo k jeho přejmenování.
Máte v plánu, jak vyřešit tohle?
To by se při takové organizaci nemělo nikdy stát, a pokud přece, API by mělo odmítnout ten soubor přepsat, případně umožnit uživateli volbu (pokud je to možné).A když to možné nebude?
rollback()
, která automaticky všecko vrátí. To je ten nejměkčí způsob, spoléhající na to, že autor instalátoru bude slušný a všechny změny bude opravdu dělat skrze to API a ne mimo. (Což se do jisté míry dá staticky ověřit, například ujištěním, že binárka instalátoru se linkuje jen proti našemu API a proti ničemu jinému.)
2. Celá instalace bude probíhat v nějakém druhu karantény (sandboxu), například pomocí chrootu nebo vrstveného filesystému (nemůžu si vzpomenout, jak se ten nástroj jmenuje, ale vy mi rozumíte, že? Uvědomuji si, že "vrácení zpět" není jednoduchá úloha, ale řešit se to dá, například:Je to jednoduché.
2. Celá instalace bude probíhat v nějakém druhu karantény (sandboxu), například pomocí chrootu nebo vrstveného filesystému (nemůžu si vzpomenout, jak se ten nástroj jmenuje, ale vy mi rozumíte, že?A přesně takhle to dělá Gentoo. Dokonce není potřeba žádný chroot, prostě instalační skript se na začátku zeptá na prefix cesty, kam má instalovat, a na konci se přesunou soubory na to samé umístění bez prefixu.), takže když instalátor neuspěje nebo se zhroutí, celý obsah karantény se zahodí a systém zůstane nezměněn.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.