创建ROS的软件包服务器

创建ROS的软件包服务器

前提

1台有公网ip的服务器, 最好有域名

服务器配置

  1. 连接到服务器

    shell 复制代码
    ssh root@域名或ip
  2. 创建要存放包的路径

    shell 复制代码
    mkdir -p /var/ros/ubuntu
  3. 安装必要的软件

    shell 复制代码
    sudo apt update
    sudo apt install nginx dpkg-dev gnupg
  4. 在自己的主机编译好ros包, 具体可以看使用自定义包进行ros的.deb文件生成

  5. 将这个包从自己的主机上传到服务器

    shell 复制代码
    scp ros-noetic-xxxx-0focal_amd64.deb root@域名或ip:/var/ros/ubuntu
  6. 创建包索引以及公钥生成

    shell 复制代码
    ssh root@域名或ip
    # 创建公钥
    gpg --full-generate-key
    gpg --output ~/my_repo.gpg --armor --export 'Your Name'
    # 将公钥移动到/var/ros目录
    mv ~/mr_repo.gpg /var/ros
    
    # 创建包索引(该目录下存在deb包时再执行该命令)
    cd /var/ros/ubuntu
    dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
    # gpg签名
    gpg --default-key 'Your Name' -abs -o - Packages.gz > Packages.gz.gpg
  7. 配置nginx服务器

    shell 复制代码
    ssh root@域名或ip
    sudo vim /etc/nginx/sites-available/

    修改成这个样子就差不多了

    nginx 复制代码
    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        
    	# 这里是根目录的配置
        # 也就是 http://ip或域名/ 直接访问到的目录
        # 如果要去二进制目录下 http://ip或域名/ubuntu
        root /var/ros;
    
        index index.html index.htm index.nginx-debian.html;
    
        server_name _;
    
        location /ubuntu {
            autoindex on;
            try_files $uri $uri/ =404;
        }
    
        location / {
            try_files $uri $uri/ =404;
        }
    }

    重启nginx服务

    sudo systemctl restart nginx

客户端配置

  1. 获取公钥(这里不用apt-key add的原因是从 Ubuntu 20.04 LTS 开始,apt-key 命令已被弃用。)

    shell 复制代码
    curl -fsSL http://your-server/my_repo.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/my-repo-key.gpg >/dev/null
  2. 添加软件源

    shell 复制代码
    echo "deb [signed-by=/usr/share/keyrings/my_repo.gpg] http://域名或ip/ubuntu ./" | sudo tee -a /etc/apt/sources.list
  3. 更新软件源并下载包

    shell 复制代码
    sudo apt update
    sudo apt install ros-noetic-xxxx-0focal_amd64.deb

    如果无法更新, 显示

    shell 复制代码
    Err:2 http://ip或域名/ubuntu ./ Release                                    
      404  Not Found [IP: ip或域名]

    如果确定该服务器安全, 可以直接将/etc/apt/sourcelist.txt里面的deb [signed-by=/usr/share/keyrings/my_repo.gpg] http://域名或ip/ubuntu ./修改为 deb [trusted=yes] http://域名或ip/ubuntu ./ 这个问题暂时没解决, 后面再说

  4. 运行ros包

    注: 第一次可能要输入完整的命令, 暂时没弄清楚是为啥

    shell 复制代码
    roslaunch xxxx_xxx xxxx.launch
相关推荐
wanhengidc26 分钟前
双线服务器有哪些优点?
运维·服务器
jscxy52061 小时前
ospf综合实验
运维·服务器·网络
KaMeidebaby1 小时前
卡梅德生物技术快报|酵母双杂交 cDNA 文库构建与蛋白互作筛选流程
服务器·前端·数据库·人工智能·算法
csdn_aspnet1 小时前
Modbus TCP C# 客户端程序
服务器·网络·tcp/ip·c#
沐风___1 小时前
App 上架之后:如何看数据、获取用户与持续迭代产品
服务器·前端·数据库
小灰灰搞电子1 小时前
Rust 实现异步ModbusTCP主机源码分享
服务器·网络·modbustcp·rust
apcipot_rain1 小时前
计科八股20260529——连接协议连接线程池、模块拆解模块通信、WebSocket
运维·服务器·网络·八股
AAA大运重卡何师傅(专跑国道)2 小时前
力扣hot100
服务器·前端·数据库
qq3621967052 小时前
facebook是什么意思?新手从零到精通完全指南
运维·服务器·facebook
达达爱吃肉3 小时前
claude 接入deepseek 运行报错
java·服务器·前端