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ď č. 1Budem 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