habilitando o preenchimento automático para o apt-get install no docker (ubuntu 14.04)

6

Estou executando um contêiner do Ubuntu no Docker. Eu tentei tudo o que encontrei on-line, incluindo:

auto-conclusão não funciona para "sudo apt-get install "

mas pressionar "tab" ainda não tem efeito

    
por Vince 16.02.2016 / 07:06

1 resposta

1

Eu sei que isso é velho, mas eu também corri para ele. Está claro o que está falhando com a ajuda do modo de depuração no bash: set -x .

Uma vez que você tenha o seu no container docker e apt install bash-completion , edite seus usuários .bashrc para obter o diretório correto, e faça logout / login (basicamente siga os passos 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 dar uma idéia do que está acontecendo (algo, algo, cache está faltando). Se você correr sem ele, você recebe uma lista de pacotes.

Isso me levou a pesquisar 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 o '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 estão armazenadas, /etc/apt/apt.conf.d/ . No contêiner docker:

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

Você notará que as imagens do docker estão ativamente desativando esse valor, para evitar o armazenamento do arquivo de cache localmente (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

Referências

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

por dpb 21.04.2018 / 18:10