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.