Vin*_*nce 13 apt auto-completion 14.04 docker
我正在 docker 中运行一个 ubuntu 容器。我尝试了我在网上找到的所有内容,包括:
自动完成对“sudo apt-get install”不起作用
但是按“tab”仍然没有效果
dpb*_*dpb 13
我知道这很旧,但我也遇到了。很明显的是与调试模式在bash帮助失败:set -x。
一旦您进入您的 docker 容器和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)
Run Code Online (Sandbox Code Playgroud)
那里的“--no-generate”应该给你一个线索是怎么回事(某事,某事,缓存丢失)。如果你没有它运行,你会得到一个包列表。
这导致我在我的一些参考链接中搜索该系统应该如何工作,并最终检查 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 "";
Run Code Online (Sandbox Code Playgroud)
请注意,'pkgcache' 为空。在正常安装(如 lxd 容器)上尝试一下,您会注意到它已设置。这把我带到了存储配置信息的地方,/etc/apt/apt.conf.d/. 在 docker 容器上:
# grep cache *
[...]
docker-clean:Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";
Run Code Online (Sandbox Code Playgroud)
您会在上面注意到 docker images 正在主动取消设置此值,以防止 apt 在本地存储缓存文件(以减小图像大小)。我注释掉了该文件中的所有内容,因此该文件现在看起来像:
# 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 "";
Run Code Online (Sandbox Code Playgroud)
现在,一切正常(运行apt update一次后:
# apt update
[...]
# apt install firefox-d<tab>
firefox-dbg firefox-dev
Run Code Online (Sandbox Code Playgroud)
这些帮助我弄清楚了这个系统是如何工作的......
| 归档时间: |
|
| 查看次数: |
4154 次 |
| 最近记录: |