С помощью Python apt я могу устанавливать пакеты. До и после установки пакета я обновил кеш. Однако до и после установки пакета is_installed возвращает то же самое, другими словами, он дает неправильный результат.
После установки пакета мне нужно проверить, установлен ли пакет или нет. Вот мой код:
import apt.cache
def cache_update():
cache = apt.cache.Cache()
cache.update()
pkg = cache["p7zip-full"]
print pkg.is_installed # prints false
if pkg.is_installed:
print "it is already installed. Invalid request! "
pkg.mark_delete()
else:
print "it is not installed.Now you are installing..."
pkg.mark_install()
cache.commit()
print "DONE."
cache.update()
print pkg.is_installed # prints false.
if __name__ == '__main__':
cache_update()
По некоторым причинам Python не переносит переменную после cache.commit()
. При определении его снова впоследствии это возвращает право pkg.is_installed
ответ.
#!/usr/bin/python
import apt.cache
pack1 = 'p7zip-full'
def cache_update():
cache = apt.cache.Cache()
cache.update()
pkg = cache[pack1]
print pkg.is_installed # prints false
if pkg.is_installed:
print "it is already installed. Invalid request! "
pkg.mark_delete()
else:
print "it is not installed.Now you are installing..."
pkg.mark_install()
cache.commit()
print "DONE."
cache = apt.cache.Cache()
pkg = cache[pack1]
print pkg.is_installed # prints true.
if __name__ == '__main__':
cache_update()
Вы можете re-init с открытым () как так:
cache.commit()
cache.open()
print cache[pack1].is_installed