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源

  1. (首次初始化环境需要)安装FTP工具
sudo apt-get install filezilla #安装Ubuntu端FTP工具
  1. 上传
filezilla -a ~/catkin_ws/src/ #用FTP工具打开deb所在文件夹
填入服务器地址: packages.spfrobotics.com
用户名: debupload
密码: debupload112233
端口号: 21
对于Ubuntu 16.04,找到远程目录/xenial,将本地更新的文件上传上去,稍后远程的文件会消失,此时远程源更新。
对于Ubuntu 20.04,找到远程目录/focal,将本地更新的文件上传上去,稍后远程的文件会消失,此时远程源更新。
posted @   alvinlyb  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示