Aktivieren der automatischen Vervollständigung für die Installation von apt-get im Docker (Ubuntu 14.04)

Antworten:

11

Ich weiß, dass das alt ist, aber ich bin auch darauf gestoßen. Es ist klar, was mit Hilfe des Debug-Modus in bash fehlschlägt : set -x.

Sobald Sie sich in Ihrem Docker-Container befinden und apt install bash-completionIhre Benutzer bearbeiten, .bashrcum das richtige Verzeichnis zu finden, und sich abmelden / anmelden (befolgen Sie im Wesentlichen die Schritte in den Fragen, auf die Sie verwiesen haben .

Der fehlgeschlagene Befehl lautet:

# apt-cache --no-generate pkgnames firefox
E: Could not open file  - open (2: No such file or directory)

Das '--no-generate' dort sollte Ihnen einen Hinweis geben, was los ist (etwas, etwas, Cache fehlt). Wenn Sie ohne ausführen, erhalten Sie eine Liste der Pakete zurück.

Dies führte mich dazu, in einigen meiner Referenzlinks zu suchen, wie dieses System funktionieren soll, und schließlich die passende Konfiguration zu überprüfen:

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 "";

Beachten Sie, dass 'pkgcache' leer ist. Versuchen Sie dies bei einer normalen Installation (wie einem lxd-Container), und Sie werden feststellen, dass es eingestellt ist. Dies führte mich zu dem Ort, an dem Konfigurationsinformationen gespeichert sind /etc/apt/apt.conf.d/. Auf dem Docker-Container:

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

Sie werden oben feststellen, dass Docker-Images diesen Wert aktiv deaktivieren, um zu verhindern, dass apt die Cache-Datei lokal speichert (um die Bildgröße zu verringern). Ich habe alles in dieser Datei auskommentiert, daher sieht die Datei jetzt so aus:

# 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 "";

Und jetzt funktionieren die Dinge (nach apt updateeinmaligem Laufen :

# apt update
[...]        
# apt install firefox-d<tab>   
firefox-dbg  firefox-dev

Verweise

Diese haben mir geholfen herauszufinden, wie dieses System funktioniert ...

dpb
quelle