时间从2022/7来到了2022.12,又来找虐了。。。这次安装成功了哈哈哈哈。感谢arch ros2-humble的开发者。
我已经把编译好的包上传,有需要(又相信我不会做手脚的)可以直接使用,省得编译浪费时间了。看这里:Github: realysy/ros_packages_for_arch_manjaro_linux (不用Gitee是因为Gitee创建公开仓库太麻烦了),跟着README.md安装应该就没问题了。
如果你仍然想尝试编译源码安装,下面的记录应该会有帮助。
仍然是manjaro, 仍然是ros2, 只不过现在的最新版为humble. 主要的安装步骤:
-
全面更新系统,防止出现依赖问题、软件源不够新等问题
sudo pacman -Syyu --noconfirm -
安装必要的基础开发工具
yay -S base-devel -
yay -Sy ros2-humble
(通过yay -Ss humble搜索得到,版本信息:2022.11.23-1)-
安装时如果报错“python-sip4”,“sip4”,“python-vcstool”等找不到目标,则yay -S安装缺少的东西,比如yay -S python-sip4, 解决之后再次执行安装命令
yay -S ros2-humble
-
安装时如果没翻墙的话会卡到prepare()步骤,是github访问的问题
-
解决办法同之前,见文章最后几段,替换ros2.repos中的github链接为镜像地址,比如github.com替换为hub.yzuu.cf;然后修改替换vcs文件。 修改之后再次执行安装命令,顺利安装完成,/opt/ros下能看到安装的东西。
- 评论区朋友提到可尝试修改hosts加速github访问 https://github.com/521xueweihan/GitHub520
-
另一种解决方法:使用
makepkg -f
手动编译然后手动安装,不使用yay了-
修改
~/.cache/yay/ros2-humble/PKGBUILD
文件中的source中的github链接为镜像链接source=( "ros2::git+https://hub.yzuu.cf/ros2/ros2#tag=release-humble-20221123" )
或终端运行如下命令替换所有的github.com为镜像地址:
cd ~/.cache/yay/ros2-humble/ su sed -i "s/github.com/hub.yzuu.cf/g" $(grep -rl github.com ./) su [你的用户名]
-
然后在此文件夹处打开终端,删除原来的ros2文件夹,执行
makepkg -f
进行编译打包,然后执行sudo pacman -U *.pkg.tar.zst
进行安装
-
-
-
prepare()之后编译时也会访问github, 所以注意网络;
-
编译比较耗时,我设置线程为8, 1小时左右才编完
-
如果刚开始编译时报错cmake patch啥的没成功,可以尝试降低编译时的并行线程数,或者yay -S重新安装试试。
PKGBUILD中colcon添加参数 --parallel-workers 8 可设置线程数- 如果第145个软件包qt_gui_cpp编译时报错,callprocess啥的,是python,pyqt和sip之间的版本冲突造成的,可以尝试更换sip4:
教程(软件包官方仓库) https://aur.archlinux.org/packages/ros2-humble
教程(软件包官方Github) https://github.com/m2-farzan/ros2-galactic-PKGBUILD/issues/9
安装下面这两个都行:我由于找不到第一个,就安装的第二个,这个编译也挺慢,不过好在解决了这个就没什么问题了
python-pyqt5-sip4-compat
python-pyqt5-sip4
- 如果第145个软件包qt_gui_cpp编译时报错,callprocess啥的,是python,pyqt和sip之间的版本冲突造成的,可以尝试更换sip4:
-
-
安装完成后的提示信息:
IMPORTANT NOTE: You should add something like this to your ~/.bashrc file: export ROS_DOMAIN_ID=42 source /opt/ros/humble/setup.bash This quick command will do it for you: printf "\nsource /opt/ros/humble/setup.bash\n" >> ~/.bashrc Note 1: If you use zsh, replace '.bash' in the above lines with '.zsh' and add the lines to ~/.zshrc . Note 2: This will slow down terminal startup for a few seconds on cold start, and a fraction of a second for terminals that open later. If you know a better transparent solution, you are welcome to edit this. END OF IMPORTANT NOTE.
-
- 首先ROS的官网显示目前ROS有3个版本,ROS1, ROS2 LTS, ROS2 Latest, 我想安装ROS2 Latest最新版—名字叫做galactic.
- 其次ROS官网显示对系统的支持只有ubuntu,Win10等,没有Manjaro;
- 然后Arch Wiki上显示Aur库中已经有ROS1, ROS2了,那安装起来就简单, ROS2在Aur库里的名字叫做ros2-galactic
- 安装之前首先全面更新系统:sudo pacman -Syyu
- 直接安装:yay -Sy ros2-galactic
- 报错python-numpy与/usr/bin/f2py, /usr/bin/f2py3冲突,将这两个文件mv到桌面备份,然后重新执行命令安装——如果遇到从github下载失败的错误,就重试、更换为github镜像、或使用其他方法避免下载失败,很顺利就安装完成了
网络、环境顺利的话,上面一句命令就安装成功了,然而下面才是我的真实安装过程:
我在遇到 python-numpy冲突的时候,首先用Pip安装了numpy, 然后想根据安装ros2-galactic时的输出信息,逐个安装依赖的软件包,但没想到最后安装ros的时候仍然需要安装python-numpy, 而且仍然提示冲突,就想到了移动走的办法(因为这两个文件的权限为root, 担心移动走会搞坏系统)。
- yay -Sy apr apr-util asio assimp bullet eigen gtest log4cxx mariadb-libs poco python-apipkg python-argcomplete python-argparse python-attrs python-coverage python-dateutil python-docutils python-empy python-iniconfig python-lark-parser python-netifaces python-nose python-notify2 python-pluggy python-py python-pyaml python-pytest python-pytest-cov python-pytest-repeat python-pytest-rerunfailures python-pytest-runner python-sip4 sip sip4 tinyxml tinyxml2 unixodbc
- python-numpy也在这里,跳过不安装
- yay -Sy python-vcstool python-colcon-core python-colcon-argcomplete python-colcon-bash python-catkin_pkg python-colcon-cmake python-colcon-defaults python-colcon-devtools python-colcon-library-path python-colcon-metadata python-colcon-notification python-colcon-output python-colcon-package-information python-colcon-package-selection python-colcon-pkg-config python-colcon-parallel-executor python-colcon-powershell python-colcon-python-setup-py python-colcon-recursive-crawl python-colcon-ros python-colcon-test-result python-colcon-zsh python-colcon-common-extensions python-rospkg python-rosdistro python-rosdep ros2-arch-deps ros2-pyqt5-sip-compat ros2-galactic
- 安装完上面两大串依赖之后,再安装
yay -Sy ros2-galactic
总是卡在perpare()步骤(一个小时左右报错无法连接github),Log很多E说明还是网络问题。走到prepare()这一步,~/.cache/yay/ros2-galactic/src/ros2/
这个github仓库就应该已经clone下来了,修改其中的ros2.repos
文件,将所有的github.com链接替换为github镜像(一共428M的东西,大约100个仓库),比如:- 将:https://github.com/ros2/yaml_cpp_vendor.git
- 替换为:https://api.mtr.pub/ros2/yaml_cpp_vendor.git
- 替换之后先不要再次运行yay -Sy ros2-galactic, 因为你修改了ros2仓库,yay安装的时候会再尝试把它更新回去;
- 也不要尝试先手动执行
vcs import src < ros2.repos
clone需要的库,因为这个aur软件包安装脚本有点蠢,每次都会把src删除再重新生常; - 可以这样:将修改后的
ros2.repos
移动到桌面备份; 将原来的/usr/bin/vcs可执行文件重命名为vcs_raw, 然后写一个脚本命名为vcs, 放到/usr/bin下,内容为:
然后赋予可执行权限cp ~/Desktop/ros2.repos ~/.cache/yay/ros2-galactic/src/ros2/ /usr/bin/vcs_raw $*
chmod +x /usr/bin/vcs
,这样执行yay -Sy ros2-galactic
至少不会卡在prepare(),能够进入编译过程了; - 需要编译300+软件包,并且编译的时候仍然需要从github下载东,仍然可能有网络问题,感谢党!!除了网络问题也可能遇到软件包不兼容的问题,比如没有include某个头文件,然后就又要重新开始,感觉不如手动编译源码;但是手动编译到第120个软件包左右又遇到sip4与pyqt5不兼容的问题,,,放弃,换ubuntu或者win10,按官方教程安装。
- 清理的话,先Rs第二串,再Rs第一串。
- 也不要尝试先手动执行