创建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
相关推荐
代码中介商1 小时前
Linux 帮助手册与用户管理完全指南
linux·运维·服务器
cccccc语言我来了2 小时前
C++轻量级消息队列服务器
java·服务器·c++
xiaoshuaishuai82 小时前
C# Codex 脚本编写
java·服务器·数据库·c#
Ai173163915793 小时前
GB200 NVL72超节点深度解析:架构、生态与产业格局
大数据·服务器·人工智能·神经网络·机器学习·计算机视觉·架构
思茂信息3 小时前
CST交叉cable的串扰(crosstalk)仿真
服务器·开发语言·人工智能·php·cst
weixin_449173653 小时前
Linux -- 项目中查找日志的常用Linux命令
linux·运维·服务器
琉璃榴4 小时前
Visual Studio Code连接远程服务器
服务器·vscode·github
深念Y4 小时前
赛米尼M02/海纳斯HiNAS系统-WiFi驱动安装教程
运维·服务器·网络·docker·nas·机顶盒·hinas
会飞的土拨鼠呀4 小时前
Ubuntu24.04安装open-vm-tools
运维·服务器
Gofarlic_OMS4 小时前
应对MathWorks合规审查的专项准备工作
大数据·服务器·网络·数据库·人工智能