Dockerでubuntuコンテナを実行しています。私はオンラインで見つけたすべてのものを試しました:
自動補完は「sudo apt-get install」では機能しません
しかし、「タブ」を押しても効果はありません
Dockerでubuntuコンテナを実行しています。私はオンラインで見つけたすべてのものを試しました:
自動補完は「sudo apt-get install」では機能しません
しかし、「タブ」を押しても効果はありません
回答:
私はこれが古いことを知っていますが、私もそれに遭遇しました。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)
そこにある「--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 "";
「pkgcache」が空であることに注意してください。通常のインストール(lxdコンテナーなど)で試してみてください。設定されていることがわかります。これにより、構成情報が保存されている場所に移動しました/etc/apt/apt.conf.d/
。Dockerコンテナで:
# grep cache *
[...]
docker-clean:Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";
上記のように、Dockerイメージはこの値を積極的に設定解除し、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 "";
そして今、物事は動作します(apt update
一度実行した後:
# apt update
[...]
# apt install firefox-d<tab>
firefox-dbg firefox-dev
これらは、このシステムがどのように機能するかを理解するのに役立ちました...