Estou executando um contêiner ubuntu na janela de encaixe. Eu tentei tudo o que encontrei online, incluindo:
a conclusão automática não funciona para "sudo apt-get install"
mas pressionar "tab" ainda não tem efeito
Estou executando um contêiner ubuntu na janela de encaixe. Eu tentei tudo o que encontrei online, incluindo:
a conclusão automática não funciona para "sudo apt-get install"
mas pressionar "tab" ainda não tem efeito
Respostas:
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-completion
editar seus usuários .bashrc
para 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 update
uma vez:
# apt update
[...]
# apt install firefox-d<tab>
firefox-dbg firefox-dev
Isso me ajudou a descobrir como esse sistema funcionava ...