включение автозаполнения для установки apt-get в Docker (Ubuntu 14.04)

Ответы:

11

Я знаю, что это старо, но я тоже столкнулся с этим. Понятно , что не удается с помощью режима отладки в Баш: 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)

Здесь '--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/. На док-контейнере:

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

Вы заметите выше, что образы докера активно сбрасывают это значение, чтобы избежать локального хранения файла кэша (чтобы уменьшить размер изображения). Я закомментировал все в этом файле, поэтому файл теперь выглядит так:

# 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

Ссылки

Это помогло мне понять, как работает эта система ...

РОП
источник