J'utilise un conteneur Ubuntu dans Docker. J'ai essayé tout ce que j'ai trouvé en ligne, y compris:
l'auto-complétion ne fonctionne pas pour "sudo apt-get install"
mais en appuyant sur "tab" n'a toujours aucun effet
la source
J'utilise un conteneur Ubuntu dans Docker. J'ai essayé tout ce que j'ai trouvé en ligne, y compris:
l'auto-complétion ne fonctionne pas pour "sudo apt-get install"
mais en appuyant sur "tab" n'a toujours aucun effet
Je sais que c'est vieux, mais je l'ai rencontré aussi. Il est clair que échoue avec l'aide du mode de débogage dans bash: set -x
.
Une fois que vous obtenez votre dans votre conteneur Docker et apt install bash-completion
, et éditez vos utilisateurs .bashrc
pour trouver le bon répertoire, et vous déconnecter / vous connecter (suivez essentiellement les étapes du q / a que vous avez référencé .
La commande qui échoue est:
# apt-cache --no-generate pkgnames firefox
E: Could not open file - open (2: No such file or directory)
Le '--no-generate' devrait vous donner une idée de ce qui se passe (quelque chose, quelque chose, le cache est manquant). Si vous courez sans, vous récupérez une liste de packages.
Cela m'a amené à rechercher dans certains de mes liens de référence la façon dont ce système est censé fonctionner, et finalement à inspecter la configuration 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 "";
Notez que «pkgcache» est vide. Essayez cela sur une installation normale (comme un conteneur lxd), et vous remarquerez qu'il est défini. Cela m'a conduit à l'endroit que les informations de configuration sont stockées, /etc/apt/apt.conf.d/
. Sur le conteneur docker:
# grep cache *
[...]
docker-clean:Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";
Vous remarquerez ci-dessus que les images de docker désactive activement cette valeur, pour éviter de stocker le fichier cache localement (pour réduire la taille de l'image). J'ai tout commenté dans ce fichier, donc le fichier ressemble maintenant à:
# 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 "";
Et maintenant, les choses fonctionnent (après avoir exécuté apt update
une fois:
# apt update
[...]
# apt install firefox-d<tab>
firefox-dbg firefox-dev
Cela m'a aidé à comprendre comment ce système fonctionnait ...