この前 ROS の公式 Docker イメージをベースに独自の Docker イメージを作成していた際に、RUN apt-get update で以下の GPG エラーが発生しました。
W: GPG error: http://snapshots.ros.org/foxy/final/ubuntu focal InRelease: The following signatures were invalid: EXPKEYSIG AD19BAB3CBF125EA ROS Spanshot builder <rosbuild@ros.org>
E: The repository 'http://snapshots.ros.org/foxy/final/ubuntu focal InRelease' is not signed.
そのため解消方法を調べたところ、以下の方法で解消できたのでメモしておきます。
ROS 2 Foxy と ROS Melodic の両方で同様のエラーが発生して、両方解消方法が見つかったので、それぞれ記載します。
ROS 2 Foxy
FROM ros:foxy
ENV DEBIAN_FRONTEND noninteractive
# start
RUN rm /etc/apt/sources.list.d/ros2-snapshots.list
RUN apt-get update && apt-get install -y curl
RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# end
RUN apt-get clean && apt-get update && apt-get install -y wget
この方法は以下の ROS Discourse のスレッドで見つけました。
ROS Melodic
FROM ros:melodic
ENV DEBIAN_FRONTEND noninteractive
# start
RUN rm /etc/apt/sources.list.d/ros1-snapshots.list
RUN apt-get update && apt-get install -y curl
RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros1.list > /dev/null
# end
RUN apt-get clean && apt-get update && apt-get install -y wget
ROS 2 Foxy の解消方法を見つけてから ROS Melodic を試していて、少してこずったのですが、今 ROS 2 Foxy のと見比べるとほぼ同じでした。
こちらは ROS Melodic の場合の方法について言及している ROS Discourse 等は見つけられませんでした。EOL なので当然かもですが。