/ / Získať novú verziu v preinst. Debiane - skript, balíčky

Získajte novú verziu v preinst Debian údržbovom skripte - debian, packages

Chcem zabrániť staršiemu balíku Debianu dupať po novšej nainštalovanej verzii balíka Debian.

Snažím sa to urobiť porovnaním prúduVerzia balíčka Debianu na to, čo je aktuálne nainštalované v údržbovom skripte debian / preinst. V ideálnom prípade by som rád poskytol upozornenie a výzvu (pokračovať y / n?).

Táto otázka úzko súvisí Ako získať novo nainštalovanú verziu v rámci debianového skriptu Debianu?, Tento problém bol vytvorený v roku „09, takže si nie som istý, či je vhodné pridať otázku do tejto otázky alebo nie.

Odpoveď na staršie otázky bola: "Prečo nemôžete jednoducho napísať verziu vo vašom balíku?"

Moja odpoveď by bola, že nechcem spravovať verziu v inom umiestnení. Verzia je už v module debian / changelog a Python. init.py skript ako verzia, Táto logika musí byť tiež replikovanáNiekoľko ďalších interných balíkov Debianu, ktoré „udržiavame.

Prečítal som si príslušné dokumenty Debianu http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html a zatiaľ čo môžem dostať starú verziu, neexistuje spôsob, ako získať verziu, ktorú práve inštalujem.

Odozvula som env v debiane / preinst a toneposkytuje premennú prostredia, ktorá obsahuje verziu ...: SUDO_COMMAND = / usr / bin / dpkg -i python-mypkg_1.9.3-2_all.deb. Mal by som byť schopný získať verziu týmto spôsobom, ale "nie som si istý, či sa môžem spoľahnúť na túto premennú, že bude existovať v každej distribúcii, do ktorej bude tento balík nasadený. ​​Tiež to vyzerá ako hack na to, aby to tak urobilo."

Som si vedomý dpkg-parsechangelog, čo je skvelý nástroj !, ale funguje to len vtedy, keď je balík rozbalený.

Tiež som sa snažil pomocou modulu Python pckg_resources objaviť verziu s: pckg_resources.require ("mypkg") [0].verzia, Ak modul ešte nie je nainštalovaný na cieľovom počítači, zlyhá - čo dáva absolútny zmysel.

Zdá sa, že by mala existovať možnosť buď v debianovom / kontrolnom súbore, alebo nejakom nástroji, ktorý by som mohol použiť, aby sa tomu zabránilo bez toho, aby sa znovu objavilo koleso. Ďakujem všetkým!

odpovede:

0 pre odpoveď č. 1

Budem používať SUDO_COMMAND. To bude aspoň robiť to tak, že som don "t musieť hard-kód verziu do preinst údržby skriptu (To už existuje v dvoch ďalších miestach!). Je to extrémne hack, ale ja som nebol schopný nájsť akúkoľvek užitočnú dokumentáciu, ktorá by ma mohla nasmerovať k rozumnejšiemu prístupu.

Zdá sa, že FYI, premenná env, SUDO_COMMAND existuje v každom prostredí Debianu, ktoré som použil.


0 pre odpoveď č. 2

skúste:

dpkg-query --show --showformat="${Version}" packagename