Рос внезапно перестал работать

Я давно использую ro-kinetic на своем компьютере, используя Ubuntu 16.04LTS. Но несколько дней назад он внезапно перестал работать, сказав, что никакая связанная с rosxxx программа не установлена. Я попытался переустановить ros-kinetic (без очистки), но я получил неудовлетворенную зависимость от ros-kinetic-simulator . Смотрите вывод:

The following packages have unmet dependencies:
ros-kinetic-desktop-full : Depends: ros-kinetic-simulators but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Я видел в другом месте, что если ros установлен из нескольких источников, таких как packages.ros.org или из исходных пакетов debian, он может работать странно или вообще не работать. Но я не думаю, что это так со мной. Вот вывод /etc/apt/sources.list.d/ros-latest.list

deb http://packages.ros.org/ros/ubuntu xenial main

Я не знаю, решит ли это проблему, но я бы хотел избежать необходимости очищать ros полностью и переустановите его, и это также не гарантирует, что это будет работать. Пожалуйста, дайте мне знать, если я могу редактировать этот вопрос с дополнительными входами, если это необходимо. Некоторая помощь будет принята с благодарностью!

Правка № 1: Я посмотрел на то, что я установил последним, перед которым работала моя установка ROS. Я устанавливал виртуальную среду тестирования, во время которой я запустил следующий скрипт, найденный в репозитории github PX4:

#!/bin/bash
echo "Downloading dependent script 'ubuntu_sim_common_deps.sh'"
# Source the ubuntu_sim_common_deps.sh script directly from github
common_deps=$(wget https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_common_deps.sh -O -)
wget_return_code=$?
# If there was an error downloading the dependent script, we must warn the user and exit at this point.
if [[ $wget_return_code -ne 0 ]]; then echo "Error downloading 'ubuntu_sim_common_deps.sh'. Sorry but I cannot proceed further :("; exit 1; fi
# Otherwise, source the downloaded script.
. <(echo "${common_deps}")

###
# Gazebo (9) simulator dependencies
echo "Installing Gazebo9"
sudo apt-get install protobuf-compiler libeigen3-dev libopencv-dev -y
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
## Setup keys
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
## Update the debian database:
sudo apt-get update -y
## Install Gazebo9
sudo apt-get install gazebo9 -y
## For developers (who work on top of Gazebo) one extra package
sudo apt-get install libgazebo9-dev -y

# Go to the firmware directory
cd $clone_dir/Firmware

Когда я заглянул в 'ubuntu_sim_common_deps.sh', я получил

#!/bin/bash

# Preventing sudo timeout https://serverfault.com/a/833888
trap "exit" INT TERM; trap "kill 0" EXIT; sudo -v || exit $?; sleep 1; while true; do sleep 60; sudo -nv; done 2>/dev/null &

# Ubuntu Config
echo "We must first remove modemmanager"
sudo apt-get remove modemmanager -y

# Common dependencies
echo "Installing common dependencies"
sudo apt-get update -y
sudo apt-get install git zip qtcreator cmake build-essential genromfs ninja-build exiftool astyle -y
# make sure xxd is installed, dedicated xxd package since Ubuntu 18.04 but was squashed into vim-common before
which xxd || sudo apt install xxd -y || sudo apt-get install vim-common --no-install-recommends -y
# Required python packages
sudo apt-get install python-argparse python-empy python-toml python-numpy python-dev python-pip -y
sudo -H pip install --upgrade pip
sudo -H pip install pandas jinja2 pyserial pyyaml
# optional python tools
sudo -H pip install pyulog

# Install FastRTPS 1.7.1 and FastCDR-1.0.8
fastrtps_dir=$HOME/eProsima_FastRTPS-1.7.1-Linux
echo "Installing FastRTPS to: $fastrtps_dir"
if [ -d "$fastrtps_dir" ]
then
    echo " FastRTPS already installed."
else
    pushd .
    cd ~
    wget https://www.eprosima.com/index.php/component/ars/repository/eprosima-fast-rtps/eprosima-fast-rtps-1-7-1/eprosima_fastrtps-1-7-1-linux-tar-gz -O eprosima_fastrtps-1-7-1-linux.tar.gz
    tar -xzf eprosima_fastrtps-1-7-1-linux.tar.gz eProsima_FastRTPS-1.7.1-Linux/
    tar -xzf eprosima_fastrtps-1-7-1-linux.tar.gz requiredcomponents
    tar -xzf requiredcomponents/eProsima_FastCDR-1.0.8-Linux.tar.gz
    cpucores=$(( $(lscpu | grep Core.*per.*socket | awk -F: '{print $2}') * $(lscpu | grep Socket\(s\) | awk -F: '{print $2}') ))
    (cd eProsima_FastCDR-1.0.8-Linux && ./configure --libdir=/usr/lib && make -j$cpucores && sudo make install)
    (cd eProsima_FastRTPS-1.7.1-Linux && ./configure --libdir=/usr/lib && make -j$cpucores && sudo make install)
    rm -rf requiredcomponents eprosima_fastrtps-1-7-1-linux.tar.gz
    popd
fi

# jMAVSim simulator dependencies
echo "Installing jMAVSim simulator dependencies"
sudo apt-get install ant openjdk-8-jdk openjdk-8-jre -y

# Clone PX4/Firmware
clone_dir=~/src
echo "Cloning PX4 to: $clone_dir."
if [ -d "$clone_dir" ]
then
    echo " Firmware already cloned."
else
    mkdir -p $clone_dir
    cd $clone_dir
    git clone https://github.com/PX4/Firmware.git
fi

Я не вижу ничего, что могло бы вызвать проблему, но я все еще неопытен в этом типе отладки. Я приветствовал бы любой ответ, который может по крайней мере направить меня к какому-то решению.

Правка № 2: Я выяснил причину, не зная «точно», почему это пошло не так. Установка Gazebo9 привела к сбою ros-kinetic, имея в виду, что Gazebo7, который по умолчанию используется с ro-kinetic, уже установлен. Я предполагаю, что это связано с некоторыми дополнительными зависимостями / ссылками, которые были созданы, и система не знала, как с ними обращаться. После удаления Gazebo9 было достаточно простого

sudo apt-get install ros-kinetic-desktop-full

. Однако мне все еще любопытно, чтобы кто-то объяснил это более концептуально.

0
задан 29 July 2019 в 16:46

0 ответов

Другие вопросы по тегам:

Похожие вопросы: