Я запускаю Ubuntu контейнер в докере. Я перепробовал все, что нашел в Интернете, в том числе:
автозаполнение не работает для "sudo apt-get install"
но нажатие на «вкладку» по-прежнему не имеет никакого эффекта
Я запускаю Ubuntu контейнер в докере. Я перепробовал все, что нашел в Интернете, в том числе:
автозаполнение не работает для "sudo apt-get install"
но нажатие на «вкладку» по-прежнему не имеет никакого эффекта
Я знаю, что это старо, но я тоже столкнулся с этим. Понятно , что не удается с помощью режима отладки в Баш: 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
Это помогло мне понять, как работает эта система ...