Docker: E: Unable to locate package

はじめに

サクッと環境を構築するのに、最初にapt-get updateを省略してしまったがために、ハマってしまった。今後同じ過ちを繰り返さない為にまとめ。

実施したDockerfile

実にシンプル。

ubuntuを持ってきて、wgetとnodejsとnpmでも入れて動かそうと思った。いろんなサンプルファイルではしっかりとapt-get updateの記載があったが、あえて外した。そして結果的に時間を要した。

実施したDockerfileはこちら

#利用するUbuntuのイメージ
FROM ubuntu:16.04

# wgetをインストール
RUN apt-get install -y wget 
RUN apt-get install -y nodejs 
RUN apt-get install -y npm

docker buildコマンド

$ docker build -t ubuntuuuu .
Sending build context to Docker daemon   4.57GB
Step 1/4 : FROM ubuntu:16.04
 ---> 7aa3602ab41e
Step 2/4 : RUN apt-get install -y wget
 ---> Running in 30312e88bc87
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package wget
The command '/bin/sh -c apt-get install -y wget' returned a non-zero code: 100
$ 

E: Unable to locate package

まずネットワーク周りを疑ったが、異常はなさそうだった。

対処

諸々installする処理の前にapt-get updateを入れたのみ。

#利用するUbuntuのイメージ
FROM ubuntu:16.04

# wgetをインストール
RUN apt-get update # 追加
RUN apt-get install -y wget 
RUN apt-get install -y nodejs 
RUN apt-get install -y npm

build結果

$ docker build -t ubuntuuuu .
Sending build context to Docker daemon   4.57GB
Step 1/5 : FROM ubuntu:16.04
 ---> 7aa3602ab41e
Step 2/5 : RUN apt-get update
 ---> Running in f929ef07a958
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
Get:2 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]

(略)

Removing intermediate container fc51f9cd4a4f
 ---> 3e9f68c18e10
Successfully built 3e9f68c18e10
Successfully tagged ubuntuuuu:latest
$ 

 

無事Successfullyになった。

なぜapt-get updateが無いと失敗するのか

憶測に過ぎないが、おそらくコンテナ版ubuntuを使わせる上で、必ず最新版のパッケージでないと使わせないというubuntu側(?)の意向のように感じる

所感

昨年発売され賑わっているAirPods ProだがAmazonでも販売を開始するようになり、Amazonでは今はポイントもつくようになっているようだ。自分は仕事しながら音楽聞かないが、ノイズキャンセルは気になる。