Я создаю Docker-контейнер для выполнения пакета ROS.
FROM ros:melodic
COPY . /rosdata
WORKDIR /rosdata
RUN rm /bin/sh && ln -s /bin/bash /bin/sh && chmod +x setupROS.sh && bash -c "./setupROS.sh"
Этот сценарий установки, вероятно, немного более раздутый, чем это требуется от попыток отладки, и в настоящее время выглядит так:
#!/bin/sh
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y wget apt-utils
sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | apt-key add -
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y ros-melodic-pcl-conversions ros-melodic-pcl-ros
apt-get update
DEBIAN_FRONTEND=noninteractive rosdep install --as-root apt:false --from-paths src --ignore-src --rosdistro melodic -y
DEBIAN_FRONTEND=noninteractive catkin_make
Все выглядит нормально, пока последняя команда не завершится с
. / SetupROS.sh: строка 10: catkin_make: команда не найдена
ЕслиЯ закомментирую эту последнюю команду в сценарии оболочки, только автоматически выполняю предыдущие инструкции, а затем открываю интерактивный сеанс (docker run -it) и вручную запускаю этот catkin_make, он работает, как и ожидалось.Независимо от того, включаю ли я переменную DEBIAN_FRONTEND в эту строку, не имеет значения.
В чем может быть причина сбоя catkin_make при запуске в сценарии, вызываемом из файла Dockerfile, но не при запуске вручную?