Ubuntu 17.04에서 Gazebo를 컴파일하려고 합니다.
나는 이것을 팔로우하고 있다지시하다, 그러나 다음은 버그인 것 같습니다.
sudo apt-get install $(sed 's:\\ ::g' <<< $BASE_DEPENDENCIES) $(sed 's:\\ ::g' <<< $GAZEBO_BASE_DEPENDENCIES)
여기서 무슨 일이 일어나고 있는지 이해하지 못합니다.sed 's:\\ ::g'
이전 명령을 실행하면 sudo apt-get install ...
다음 오류가 42번 발생합니다.
E: 패키지를 찾을 수 없습니다\
나는 두 가지 변수에 모두 응답했습니다.
echo $BASE_DEPENDENCIES
build-essential \ cmake \ debhelper \ mesa-utils \ cppcheck \ xsltproc \ python-psutil \ python \ bc \ netcat-openbsd \ gnupg2 \ net-tools \ locales
또 다른:
echo $GAZEBO_BASE_DEPENDENCIES
libfreeimage-dev \ libprotoc-dev \ libprotobuf-dev \ protobuf-compiler \ freeglut3-dev \ libcurl4-openssl-dev \ libtinyxml-dev \ libtar-dev \ libtbb-dev \ libogre-1.9-dev \ libxml2-dev \ pkg-config \ qtbase5-dev \ libqwt-qt5-dev \ libltdl-dev \ libgts-dev \ libboost-thread-dev \ libboost-signals-dev \ libboost-system-dev \ libboost-filesystem-dev \ libboost-program-options-dev \ libboost-regex-dev \ libboost-iostreams-dev \ libbullet-dev \ libsimbody-dev \ \ libignition-transport3-dev \ libignition-math3-dev \ libignition-msgs-dev \ libtinyxml2-dev \ libsdformat5-dev
이 명령의 출력은 다음 sed 's:\\ ::g' <<< $BASE_DEPENDENCIES
과 같습니다.
build-essential \
cmake \
debhelper \
mesa-utils \
cppcheck \
xsltproc \
python-psutil \
python \
bc \
netcat-openbsd \
gnupg2 \
net-tools \
locales
고쳐 쓰다sed 's:\\[[:space:]]::g' <<< $BASE_DEPENDENCIES
다음 출력으로 명령을 시도했습니다.
user@Mpc:~$ sed 's:\\[[:space:]]::g' <<< $BASE_DEPENDENCIES
build-essential \
cmake \
debhelper \
mesa-utils \
cppcheck \
xsltproc \
python-psutil \
python \
bc \
netcat-openbsd \
gnupg2 \
net-tools \
locales
업데이트 2
sed 명령이 괜찮은 것 같습니다. 환경 변수를 사용하지 않고 다음을 수행하면 올바른 문자열을 얻습니다.
user@pc:~$ echo 'build-essential \ cmake \ debhelper \ mesa-utils \ cppcheck \ xsltproc \ python-psutil \ python \ bc \ netcat-openbsd \ gnupg2 \ net-tools \ locales' | sed 's:\\ ::g'
build-essential cmake debhelper mesa-utils cppcheck xsltproc python-psutil python bc netcat-openbsd gnupg2 net-tools locales
업데이트 3
내가 환경을 둘러싸고 있다면. 변하기 쉬운. 이에 대한 응답으로 나는 개행과 공백을 얻습니다. 하지만 따옴표 없이 응답하면 모든 내용이 한 줄에 표시됩니다.
따옴표 없이 env.var과 함께 sed를 사용하면 새 줄과 공백이 포함된 변수 값을 얻습니다.
이 오류를 어떻게 해결할 수 있나요?
답변1
이 sed
명령은 변수 내용에서 모든 백슬래시를 제거해야 하지만 백슬래시 뒤에는 공백이 와야 합니다. 그러나 그 뒤에 개행 문자가 오는 것 같으므로 다음을 사용하십시오.
sed -z 's:\\[[:space:]]::g'
대신 (이것은 GNU에만 적용되지만 sed
Ubuntu를 사용하고 있기 때문에...)