Depois de instalar um pacote, o is_installed retorna ainda False, no python apt

0

usando python apt, eu posso instalar pacotes. Antes e depois de instalar o pacote, atualizei o cache. No entanto, antes e depois de instalar o pacote, is_installed retorna o mesmo, em outras palavras, dá resultado errado.

Depois de instalar o pacote, preciso verificar se o pacote está instalado ou não. Aqui está o meu código:

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()
    
por metis 02.06.2015 / 00:09

2 respostas

1

Por algum motivo, o python não carrega a variável após o cache.commit() . Se você definir novamente depois, ele retornará a resposta correta 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()
    
por Terrance 02.06.2015 / 01:51
1

Você pode re-iniciar com open () assim:

cache.commit()
cache.open()
print cache[pack1].is_installed
    
por Donn Lee 04.07.2018 / 04:17

Tags