도커에서 우분투 컨테이너를 실행 중입니다. 나는 다음을 포함하여 온라인에서 찾은 모든 것을 시도했다.
"sudo apt-get install"에 대해 자동 완성 기능이 작동하지 않습니다
"탭"을 눌러도 효과가 없습니다
도커에서 우분투 컨테이너를 실행 중입니다. 나는 다음을 포함하여 온라인에서 찾은 모든 것을 시도했다.
"sudo apt-get install"에 대해 자동 완성 기능이 작동하지 않습니다
"탭"을 눌러도 효과가 없습니다
답변:
나는 이것이 오래되었다는 것을 알고 있지만 그것도 만났다. 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
이것들은이 시스템이 어떻게 작동했는지 알아내는 데 도움이되었습니다 ...