创建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
相关推荐
Me4神秘31 分钟前
Linux国产与国外进度对垒
linux·服务器·安全
牛奶咖啡133 小时前
Linux系统的常用操作命令——文件远程传输、文件编辑、软件安装的四种方式
运维·服务器·软件安装·linux云计算·scp文件远程传输·vi文件编辑·设置yum的阿里云源
weixin_437398213 小时前
转Go学习笔记(2)进阶
服务器·笔记·后端·学习·架构·golang
tan77º4 小时前
【Linux网络编程】Socket - UDP
linux·服务器·网络·c++·udp
szxinmai主板定制专家5 小时前
【精密测量】基于ARM+FPGA的多路光栅信号采集方案
服务器·arm开发·人工智能·嵌入式硬件·fpga开发
你不知道我是谁?5 小时前
负载均衡--四层、七层负载均衡的区别
运维·服务器·负载均衡
九丝城主7 小时前
2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--中篇
服务器·flutter·macos·vmware
码出钞能力7 小时前
linux内核模块的查看
linux·运维·服务器
小皮侠9 小时前
nginx的使用
java·运维·服务器·前端·git·nginx·github
ddfa123411 小时前
XML 笔记
xml·服务器