docker에서 apt-get 설치를위한 자동 완성 활성화 (ubuntu 14.04)


답변:


11

나는 이것이 오래되었다는 것을 알고 있지만 그것도 만났다. bash의 디버그 모드를 사용하여 무엇이 실패했는지 분명합니다 set -x.

일단 도커 컨테이너에 들어가서 apt install bash-completion, 및 .bashrc올바른 디렉토리를 소싱하도록 사용자 를 편집 하고 로그 아웃 / 로그인하십시오 (기본적으로 참조 된 q / a 단계를 따르십시오) .

실패한 명령은 다음과 같습니다.

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

거기에있는 '-생성되지 않음'은 무슨 일이 일어나고 있는지를 알려줄 것입니다 (무언가, 무언가, 캐시가 없습니다). 그것없이 실행하면 패키지 목록이 다시 나타납니다.

이로 인해이 시스템의 작동 방식과 관련된 일부 참조 링크를 검색하고 적절한 구성을 검사했습니다.

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 "";

'pkgcache'가 비어 있습니다. lxd 컨테이너와 같은 일반 설치에서 시도하면 설정되어 있음을 알 수 있습니다. 이로 인해 구성 정보가 저장되는 위치가되었습니다 /etc/apt/apt.conf.d/. 도커 컨테이너에서 :

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

위의 그림은 docker 이미지가 캐시 파일을 로컬로 저장하지 않도록 (이미지 크기를 줄이기 위해)이 값을 적극적으로 설정 해제하고 있음을 알 수 있습니다. 해당 파일의 모든 내용을 주석 처리 했으므로 이제 파일은 다음과 같습니다.

# 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 "";

이제는 일이 apt update한 번 실행됩니다 .

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

참고 문헌

이것들은이 시스템이 어떻게 작동했는지 알아내는 데 도움이되었습니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.