memungkinkan penyelesaian otomatis untuk pemasangan apt-get di docker (ubuntu 14.04)

Jawaban:

11

Saya tahu ini sudah tua, tetapi saya juga menabraknya. Sudah jelas apa yang gagal dengan bantuan mode debug di bash: set -x.

Setelah Anda memasukkannya ke dalam wadah buruh pelabuhan dan apt install bash-completion, dan edit pengguna Anda .bashrcuntuk mencari direktori yang benar, dan logout / login (pada dasarnya ikuti langkah-langkah dalam q / a yang Anda referensikan .

Perintah yang gagal adalah:

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

The '--tidak menghasilkan' di sana harus memberi Anda petunjuk apa yang sedang terjadi (sesuatu, sesuatu, cache tidak ada). Jika Anda menjalankan tanpa itu, Anda mendapatkan kembali daftar paket.

Ini mengarahkan saya untuk mencari di beberapa tautan referensi saya dengan bagaimana sistem ini seharusnya bekerja, dan akhirnya memeriksa konfigurasi 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 "";

Perhatikan bahwa 'pkgcache' kosong. Coba itu pada instalasi normal (seperti wadah LXD), dan Anda akan melihat itu sudah diatur. Ini membawa saya ke tempat informasi konfigurasi disimpan /etc/apt/apt.conf.d/,. Di wadah buruh pelabuhan:

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

Anda akan melihat di atas bahwa gambar buruh pelabuhan secara aktif mengurungkan nilai ini, agar tidak menyimpan file cache secara lokal (untuk mengurangi ukuran gambar). Saya mengomentari semua yang ada di file itu, jadi file itu sekarang terlihat seperti:

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

Dan sekarang, semuanya bekerja (setelah berjalan apt updatesekali:

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

Referensi

Ini membantu saya mengetahui bagaimana sistem ini bekerja ...

dpb
sumber