Docker Ubuntu resminin içine paketler yüklenemiyor


289

Ubuntu 14.04 görüntüsünü docker'a yükledim. Bundan sonra, ubuntu görüntüsünün içine paketleri yüklemeye çalıştığımda, paket hatasını bulamıyorum:

apt-get install curl

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package curl

Bu hatayı nasıl düzeltirim?

Yanıtlar:


622

Bunun nedeni, görüntüde paket önbellek bulunmamasıdır, çalıştırmanız gerekir:

apt-get update

paketleri yüklemeden önce ve komutunuz bir Dockerfile dosyasındaysa, aşağıdakilere ihtiyacınız olacaktır:

apt-get -y install curl

Komut kullanımından standart çıktıyı bastırmak için -qq. Örneğin

apt-get -qq -y install curl

1
Bu benim için çalışıyor, ben her zaman -qq çalıştırmak gerekir
Geliştirici

6
-qq Dockerfile içinde genellikle ihtiyacınız olmayan çıktıları gizler. Başka bir güzel hile - debconf'a etkileşimli olmayan bir ortamda çalıştığını söyleyin: echo 'debconf debconf / frontend select Etkileşimli olmayan' | debconf-set-selectionler
ISanych

7
Nedense bu benim için çalışmıyor, hala aynı "E: Paket bulunamıyor .." mesajı
tblancog

"apt-get-update" ve "apt-get install curl" iyi çalıştı!
Sindhu

Bu hatanın alan bittiğinde docker'da da olduğunu gördüm. Yer docker image pruneaçmak için koştum ve bu benim için düzeltildi.
Jonathan Rys

123

Gönderen docs içinde mayıs2017 2018 2019 2020

Her zaman birleştirmek RUN apt-get updateile apt-get installaynı içinde RUNörneğin açıklamada

RUN apt-get update && apt-get install -y package-bar

(...)

apt-get updateBir RUNifadede tek başına kullanmak önbellek sorunlarına neden olur ve sonraki apt-get installtalimatlar başarısız olur.

(...)

Kullanarak RUN apt-get update && apt-get install -yDockerfile'ınız daha fazla kodlama veya manuel müdahale olmadan en son paket sürümlerini yüklemenizi sağlar. Bu teknik “önbellek bozma” olarak bilinir.



4

Dockerfile dosyanızda herhangi bir sözdizimi hatası olmadığından emin olun, çünkü bu da bu hataya neden olabilir. Doğru bir örnek:

RUN apt-get update \
    && apt-get -y install curl \
    another-package

Bir sözdizimi hatasını düzeltmenin apt-get updateve sorunu benim için çözdüğünü eklemenin bir kombinasyonuydu .


1

"Apt-get update" çalıştığında yerel bir birim / tmp üzerine bağlanmanın izin sorunlarına neden olabileceğini ve paket önbelleğinin doldurulmasını engellediğini gördüm. Umarım, bu çoğu insanın yaptığı bir şey değildir, ancak bu sorunu görürseniz aramak başka bir şeydir.


-3

Ubuntu'nuzdaki paket listesini güncellemeniz gerekir:

$ sudo apt-get update
$ sudo apt-get install <package_name>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.