abilitare il completamento automatico per apt-get install in docker (ubuntu 14.04)


Risposte:


11

So che questo è vecchio, ma mi sono imbattuto anche in esso. E 'chiaro che cosa sta venendo a mancare con l'aiuto di modalità di debug in bash: set -x.

Dopo aver inserito il contenitore nel docker apt install bash-completione aver modificato gli utenti .bashrcper ottenere la directory corretta e disconnettersi / accedere (in pratica, seguire i passaggi nella q / a cui si fa riferimento .

Il comando che sta fallendo è:

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

Il "--no-generate" lì dentro dovrebbe darti un indizio su cosa sta succedendo (manca qualcosa, qualcosa, cache). Se corri senza di essa, otterrai un elenco di pacchetti.

Questo mi ha portato a cercare in alcuni dei miei collegamenti di riferimento con come dovrebbe funzionare questo sistema, e alla fine ispezionare la configurazione 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 "";

Si noti che "pkgcache" è vuoto. Provalo su una normale installazione (come un contenitore lxd) e noterai che è impostato. Questo mi ha portato al posto che le informazioni di configurazione vengono memorizzate, /etc/apt/apt.conf.d/. Sul contenitore della finestra mobile:

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

Noterai sopra che le immagini della finestra mobile stanno attivamente disattivando questo valore, per impedire a apt di archiviare il file della cache localmente (per ridurre le dimensioni dell'immagine). Ho commentato tutto in quel file, quindi il file ora assomiglia a:

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

E ora, le cose funzionano (dopo aver eseguito apt updateuna volta:

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

Riferimenti

Mi hanno aiutato a capire come funzionava questo sistema ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.