创建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
相关推荐
_F_y1 小时前
Linux:多线程
linux·运维·服务器
Ha_To2 小时前
2025.12.18 NAT地址转换、PAT
linux·服务器·网络
vortex52 小时前
Linux 命令行入门:命令的构成与选项用法
linux·运维·服务器
山风wind3 小时前
网络分层模型:OSI和TCP/IP参考模型
服务器·网络·tcp/ip
像风一样的男人@3 小时前
linux --防火墙
linux·运维·服务器
skywalk81633 小时前
使用Trae 自动编程:为小学生学汉语项目增加不同出版社教材的区分
服务器·前端·人工智能·trae
网硕互联的小客服3 小时前
Centos系统如何更改root账户用户名?需要注意什么?
linux·运维·服务器·数据库·安全
wunianor3 小时前
[高并发服务器]DEBUG日志
linux·运维·服务器·c++
lx7416026984 小时前
百度网盘bypy使用
服务器
为什么不问问神奇的海螺呢丶4 小时前
服务器巡检报告-基于categraf 采集数据-存入Prometheus-写入mysql后生成报告
服务器·mysql·prometheus