habilitando a conclusão automática para a instalação do apt-get no docker (ubuntu 14.04)

Respostas:

11

Sei que isso é antigo, mas também o encontrei. É claro o que está falhando com a ajuda do modo de depuração no bash: set -x.

Depois de entrar no contêiner do docker ee apt install bash-completioneditar seus usuários .bashrcpara obter o diretório certo e fazer logout / login (siga basicamente as etapas no q / a que você referenciou .

O comando que está falhando é:

# apt-cache --no-generate pkgnames firefox
E: Could not open file  - open (2: No such file or directory)

O '--no-generate' deve conter uma pista do que está acontecendo (algo, algo, falta o cache). Se você executar sem ele, você receberá de volta uma lista de pacotes.

Isso me levou a procurar em alguns dos meus links de referência como esse sistema deveria funcionar e, eventualmente, inspecionar a configuração do apt:

root@edb76551d1dd:/var/cache/apt# apt-config dump |grep Dir::C
Dir::Cache "var/cache/apt/";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "";
Dir::Cache::pkgcache "";

Observe que 'pkgcache' está vazio. Tente isso em uma instalação normal (como um contêiner lxd) e você perceberá que está definido. Isso me levou ao local em que as informações de configuração são armazenadas /etc/apt/apt.conf.d/. No contêiner do docker:

# grep cache *
[...]
docker-clean:Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";

Você notará acima que as imagens do Docker estão ativamente desabilitando esse valor, para impedir o armazenamento local do arquivo de cache (para reduzir o tamanho da imagem). Eu comentei tudo nesse arquivo, então o arquivo agora se parece com:

# file: /etc/apt/apt.conf.d/docker-clean 
#DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };
#APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };
#Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";

E agora, as coisas funcionam (depois de executar apt updateuma vez:

# apt update
[...]        
# apt install firefox-d<tab>   
firefox-dbg  firefox-dev

Referências

Isso me ajudou a descobrir como esse sistema funcionava ...

dpb
fonte