创建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
相关推荐
007php0076 小时前
linux服务器上CentOS的yum和Ubuntu包管理工具apt区别与使用实战
linux·运维·服务器·ubuntu·centos·php·ai编程
qq_429856577 小时前
linux 查看服务是否开机自启动
linux·运维·服务器
就爱学编程7 小时前
重生之我在异世界学编程之C语言:数据在内存中的存储篇(下)
java·服务器·c语言
hgdlip8 小时前
IP属地和所在地不一致什么意思?怎么换成另外一个地方的
服务器·网络协议·tcp/ip
KevinRay_8 小时前
命令行之巅:Linux Shell编程的至高艺术(中)
linux·运维·服务器·重定向·shell编程
DashVector9 小时前
如何通过HTTP API分组检索Doc
服务器·数据库·http·数据库开发·数据库架构
我叫czc9 小时前
【Python高级366】静态Web服务器开发
服务器·前端·python
nbsaas-boot10 小时前
如何更高效地使用乐观锁提升系统性能
java·服务器·数据库
努力的小T11 小时前
Linux apt-mirror 同步搭建本地源详解教程
linux·运维·服务器·ubuntu·云计算·debian
路飞雪吖~11 小时前
【Linux】编写简易shell && 深度理解命令行解释器 && 环境变量 && 内建命令
linux·运维·服务器