Dockerでのapt-getインストールの自動補完を有効にする(ubuntu 14.04)


回答:


8

私はこれが古いことを知っていますが、私もそれに遭遇しました。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

参照資料

これらは、このシステムがどのように機能するかを理解するのに役立ちました...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.