(本文系统为ubuntu16.04,ros版本为Kinetic)
安装前的软件源设置
ubuntu的国内镜像源为:阿里云、中科大、清华。我使用清华的源。
勾选第一个在更新时会出现一个仓库源的error,所以别勾选第一个选项。
这里的三个选项都要勾选,如果这三个没勾选会导致更新包和ros无法下载
接下来是正式安装
1.设置安装源:
sudo sh -c '. /etc/lsb-release && echo "deb https://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
实际效果是读取‘ ’里的字符作为命令进行执行,即读取/etc/lsb-release
文件里的命令进行执行,如果返回正确就将
deb https://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main
写入到 这个文件里/etc/apt/sources.list.d/ros-latest.list
这个网址是中科大的源
该步骤顺利执行。无错误。
以下是部分命令的解析参:
参考:
https://blog.csdn.net/qq_45569859/article/details/103684341?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
命令"sh -c"解析:
sh命令
语法 :
source [-options] [filename]
sh [options] [filename]
作用:
sh命令是shell命令语言解释器。执行从标准输入读取到的命令或文件中读取到的命令。
选项:
-c string:命令从-c后的字符串读取。
-i:实现脚本交互。
-n:进行shell脚本的语法检查。
-x:实现shell脚本逐条语句的跟踪。
命令 “.” 解析:
. 即source命令
语法:
source [-options] [filename]
作用:
执行从标准输入读取到的命令或文件中读取到的命令。
例:
source aaa.out
. aaa.out
两者等效
source命令通常用"."l来代替,因此上面两行命令的结果是一样的
2.设置keys:
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
下载顺利。无错误。
3.更新软件列表:
sudo apt-get update
好像在成功后软件源的其他软件源里会多出一项,即最后一项,里面是第一条命令里添加的源
更新软件列表的过程中出现erro:没有公钥,无法验证下列签名等问题。
已解决:输入以下指令下载公钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
须知秘钥&公钥下载成功后会在软件与更新的身份验证里出现,如此图的倒数一二个公钥即为下载成功的公钥
好像在成功更新软件列表后,在这里会出现第一条命令里的源
公钥下载完后重新更新一下软件列表
sudo apt-get update
接下来列表更新顺利。总共1个错误。
4.安装ROS(文件比较多,安装要一段时间):
sudo apt-get install ros-kinetic-desktop-full
安装过程中出现校验和不符,有几个软件包无法下载
图中可见下载地址不是https://mirrors.ustc.edu.cn/ros/ubuntu/ ,因此判断这两个包跟应该跟ROS本身无关,无法下载可能是被墙了。
这里参照了一位博主的解决办法:下载新立得软件包管理器,对系统软件进行更新。https://blog.csdn.net/weixin_30553837/article/details/96066597
sudo apt-get install synaptic
下载完synaptic后,忘记打开来更新可更新的软件包就直接下载ros了,而且让我没想到的是居然还下载成功了,难道是下载的时候synaptic顺带给我更新了一下?
参考资料:https://www.jianshu.com/p/a2a9103501c8
安装已经完成,下一步将更新rosdep初始化。