Por que os pacotes são listados como “instalados”, “instalados, automáticos” ou “instalados, locais”?

3

Eu li O que classifica um aplicativo como 'instalado' no Ubuntu ? mas não aborda o seguinte problema:

Quando executo apt list --installed no Kubuntu 16.04, vejo que todos os meus pacotes listados possuem [installed] ou [installed,automatic] . No entanto, vejo relatórios em que os usuários têm alguns, ou até mesmo a maioria dos pacotes, descritos como [installed,local] . E neste último caso, seus pacotes parecem estar desatualizados.

É [installed,local] o equivalente ao que o Gerenciador de Pacotes Synaptic descreveria como "local ou obsoleto", conforme discutido em O que significa" local ou obsoleto "no Synaptic ?

    
por DK Bose 18.10.2017 / 07:20

1 resposta

2

Verificando meu sistema usando:

apt list --installed | awk -F/ '/local]/{print }' | xargs apt-cache policy

Cada pacote marcado com local tem uma versão instalada que não está disponível nos repositórios. Por exemplo, instalei folly usando checkinstall . Em apt list --installed :

folly/now 57.0-1 amd64 [installed,local]

E para apt-cache policy :

folly:
  Installed: 57.0-1
  Candidate: 57.0-1
  Version table:
 *** 57.0-1 100
        100 /var/lib/dpkg/status

Você pode verificar isso a partir da fonte. apt list chama apt-private/private-list.cc ' DoList() function , que por sua vez acaba chamando apt-private/private-output.cc ' ListSingleVersion() , onde você pode veja:

 if (state.Upgradable() && state.CandidateVer != NULL)
    strprintf(StatusStr, _("[installed,upgradable to: %s]"),
      CandidateVerStr.c_str());
 else if (V.Downloadable() == false)
    StatusStr = _("[installed,local]");
 else if(V.Automatic() == true && state.Garbage == true)
    StatusStr = _("[installed,auto-removable]");
 else if ((state.Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto)
    StatusStr = _("[installed,automatic]");
 else
    StatusStr = _("[installed]");
    
por muru 18.10.2017 / 07:57