deb版本定制流程
部署source服务
最新Ubuntu内网源部署方法(Ubuntu20、Ubuntu21)_搭建ubuntu内网软件源_大大的黄老鼠的博客-CSDN博客
安装apt-mirror
sudo apt install apt-mirror
发布deb前置操作
#Step 1:检查aicrobo的rosdep源是否已经添加
rosdep update #如果有信息 Hit [https://git.aicrobo.com/projects/AICROS/repos/aic_rodep_rules/raw/kinetic.yaml](https://git.aicrobo.com/projects/AICROS/repos/aic_rodep_rules/raw/kinetic.yaml) 则已添加
#(不要重复添加)如果未添加aicrobo的rosdep源,则用下面的命令添加:`
# 对于16.04,运行以下命令添加`
sudo sh -c 'echo "yaml [https://git.aicrobo.com/projects/AICROS/repos/aic_rosdep_rules/raw/kinetic.yaml](https://git.aicrobo.com/projects/AICROS/repos/aic_rosdep_rules/raw/kinetic.yaml) " >> /etc/ros/rosdep/sources.list.d/20-default.list' #添加aicrobo的rosdep源
# 对于20.04,运行以下命令添加
sudo sh -c 'echo "yaml [https://git.aicrobo.com/projects/AICROS/repos/aic_rosdep_rules/raw/noetic.yaml](https://git.aicrobo.com/projects/AICROS/repos/aic_rosdep_rules/raw/noetic.yaml) " >> /etc/ros/rosdep/sources.list.d/20-default.list' #添加aicrobo的rosdep源
#Step 2:检查aicrobo的本地deb源是否已经添加`
sudo apt-get update #先更新源列表`
sudo apt-cache search ros-noetic-aic-msgs #如果有信息 ros-noetic-aic-msgs - xxxxx 则已经添加,若空信息,则未添加`
#(不要重复添加)如果未添加aicrobo的本地deb源,则用下面的命令添加:`
wget -O https://packages.spfrobotics.com/spfrobotics/pool/main/a/aicrobo-keyring/aicrobo-keyring_2021.07.16.1~20.04.0_all.deb
sudo dpkg -i aicrobo-keyring_2021.07.16.1~20.04.0_all.deb #添加签名证书链`
sudo sh -c 'echo "deb [http://packages.spfrobotics.com/spfrobotics](http://packages.spfrobotics.com/spfrobotics) $(lsb_release -sc) main" > /etc/apt/sources.list.d/spfrobotics-source.list' #添加aicrobo的本地deb源`
下载安装AICRobo的deb包
rosdep update #更新rosdep list
sudo apt-get update #更新deb list
sudo apt-get install ros-noetic-aic* #安装aicrobo的以"aic"开头的package,"mr"开头的package类似。
制作deb包
整理本地repository (pacakge),规范化CMakeLists.txt和package.xml,以便顺利制作deb
#编辑CMakeList.txt,添加install标记
install(DIRECTORY include/${PROJECT_NAME}/
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
)
install(DIRECTORY launch
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)
install(FILES lib/libmsc.so
DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
)
install (TARGETS aic_driver_base
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
#生成install目标,确保目标完整正确。
catkin_make install #在~/catkin_ws/install里面查看
如果有BUG,请按照展开信息排查
#(首次初始化环境需要)安装bloom ([https://gist.github.com/awesomebytes/196eab972a94dd8fcdd69adfe3bd1152)](https://gist.github.com/awesomebytes/196eab972a94dd8fcdd69adfe3bd1152))
sudo apt-get install python3-bloom fakeroot dpkg-dev debhelper
#检查制作的deb包所依赖的package是否在rosdep list里面
rosdep update #更新rosdep list
rosdep resolve aic_msgs #例如检查 aic_msgs 是否在rosdep list里面,如果不在,需要通知管理员更新rosdep list。
#安装制作的deb包所依赖的deb包
sudo apt-get update #更新deb list
sudo apt-get install ros-noetic-aic-msgs #例如安装 aic_msgs 的对应deb包。
如果pacakge是新增的,或者改了名字,需要更新rosdep列表,否则后面的deb制作会出现找不到rosdep依赖的问题,而无法继续,通知有权限的人更新https://github.com/aicrobo/rosdep_rules。如果pacakge要开源发布到公网,参考官方教程:https://github.com/ros/rosdistro/blob/master/CONTRIBUTING.md
参考:http://answers.ros.org/question/173804/generate-deb-from-ros-package/
参考:http://blog.csdn.net/anhuidelinger/article/details/9632635
#主要操作:生成.deb
cd /path/to/your/repository #进入需要整理的库路径`
#bloom-generate rosdebian --os-name ubuntu --os-version trusty --ros-distro indigo #生成信息文件 Ubuntu14.04 + Indigo
#bloom-generate rosdebian --os-name ubuntu --os-version xenial --ros-distro kinetic #生成信息文件 Ubuntu16.04 + Kinetic
bloom-generate rosdebian --os-name ubuntu --os-version focal --ros-distro noetic #生成信息文件 Ubuntu20.04 + noetic
dpkg-buildpackage -us -uc -b #生成.deb文件,文件位置为 ../ros-xxxxxx.deb`
#次要操作:清理中间文件
git clean -fd
#测试制作的deb包
scp ros-noetic-aic-xxx.deb aicrobo@172.16.xxx.xxx:``/home/aicrobo/ #将deb拷贝到测试机器
sudo dpkg -i ros-noetic-xxx #安装测试,如果中间有什么依赖deb的,用dpkg命令安装一下
- 执行 bloom-generate rosdebian --os-name ubuntu --os-version focal --ros-distro xxxx 命令,可能出现以下错误:
![[Pasted image 20230517145331.png]]
解决办法:
确认任何ros进程已经关闭(常见的有roslaunch、rosrun等运行的ros程序)。
执行以下命令:
rosdep update
然后执行:
bloom-generate rosdebian --os-name ubuntu --os-version focal --ros-distro xxxx
定制版本
Review metting
由repository管理员主持,将个人branch合并到devel branch。
生成changelog和版本号
#前置操作
cd /path/to/your/repository #进入需要整理的库路径
git checkout devel
# 主要操作(生成过CHANGELOG.rst文件的)
catkin_generate_changelog #更新CHANGELOG.rst文件
git commit -am "Update CHANGELOG.rst"
catkin_prepare_release #生成版本号并上传新版本
# 主要操作(没有生成过CHANGELOG.rst文件的
catkin_generate_changelog --all #生成CHANGELOG.rst文件
git add .
git commit -m "Add CHANGELOG.rst"
catkin_prepare_release #生成版本号并上传新版本
#次要操作
git checkout master
git merge devel #将master移到devel的最新commit
git push origin master
通知个人更新自己的branch
git checkout <branch_id> #切换到自己的branch
git reset --hard devel #完全将自己的branch指向最新的devel branch
上传到aicrobo本地deb源
- (首次初始化环境需要)安装FTP工具
sudo apt-get install filezilla #安装Ubuntu端FTP工具
- 上传
filezilla -a ~/catkin_ws/src/ #用FTP工具打开deb所在文件夹
填入服务器地址: packages.spfrobotics.com
用户名: debupload
密码: debupload112233
端口号: 21
对于Ubuntu 16.04,找到远程目录/xenial,将本地更新的文件上传上去,稍后远程的文件会消失,此时远程源更新。
对于Ubuntu 20.04,找到远程目录/focal,将本地更新的文件上传上去,稍后远程的文件会消失,此时远程源更新。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具