使用 reprepro 搭建私有软件源

本文最后由 森林生灵 于 2020/07/03 23:32:28 编辑

文章目录 (?) [+]

    软件源的创建

    # 安装软件包
    sudo apt install -y gnupg reprepro
    
    # 创建 GPG 密钥
    gpg --full-gen
    
    # 列出系统中的 GPG 密钥
    gpg --list-keys
    
    # 创建站点目录
    mkdir -p /data/wwwroot/ppa/key /data/wwwroot/ppa/conf /data/wwwroot/ppa/deb
    
    # 导出 GPG 公钥
    gpg --armor --export 9D22BF79E2549604 > /data/wwwroot/ppa/public/key/public.key
    
    # 配置文件
    nano /data/wwwroot/ppa/conf/distributions
    
    Origin: (库的名字, 如 deepin)
    Label: (库的名字, 如 deepin)
    Suite: (stable 或 unstable)
    Codename: (发行版代号, 如 lanseyujie)
    Version: (发布版本, 如 15.9)
    Architectures: (软件包所支持的架构, 比如 i386 或 amd64)
    Components: (包含的部件, 如 main restricted universe multiverse contrib non-free)
    Description: (描述)
    SignWith: (GPG Key-ID)
    
    # 本站 distributions 配置
    Origin: deepin
    Label: deepin
    Suite: unstable
    Codename: lanseyujie
    Version: 2019
    Architectures: amd64
    Components: main contrib non-free
    Description: Personal Package Archives
    SignWith: 9D22BF79E2549604
    
    # 添加 deb 到 lanseyujie/main 源
    reprepro --ask-passphrase -Vb /data/wwwroot/ppa --outdir /data/wwwroot/ppa/public/deepin -C main includedeb lanseyujie /data/wwwroot/ppa/deb/main/*.deb


    Nginx 站点配置

    server {
      listen 80;
      listen 443 ssl http2;
      server_name ppa.lanseyujie.com;
    
      ssl_certificate /etc/nginx/ssl/lanseyujie.com.cer;
      ssl_certificate_key /etc/nginx/ssl/lanseyujie.com.key;
      ssl_protocols TLSv1.2 TLSv1.3;
      ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
      ssl_prefer_server_ciphers on;
      ssl_session_timeout 10m;
      ssl_session_cache builtin:1000 shared:SSL:10m;
      ssl_buffer_size 1400;
      ssl_stapling on;
      ssl_stapling_verify on;
    
      charset utf-8;
      access_log /var/log/nginx/access.log combined;
      root /data/wwwroot/ppa/public;
      index index.html index.htm;
    
      if ($ssl_protocol = "") {
        return 301 https://$host$request_uri;
      }
    
      # error_page 404 /404.html;
    
      location / {
        autoindex on;
        autoindex_exact_size on;
        autoindex_localtime on;
      }
    
      location ~ /\. {
        deny all;
      }
    }


    站点目录

    ppa
    ├── conf
    │   └── distributions
    ├── db
    │   ├── checksums.db
    │   ├── contents.cache.db
    │   ├── packages.db
    │   ├── references.db
    │   ├── release.caches.db
    │   └── version
    ├── deb
    │   ├── contrib
    │   ├── main
    │   └── non-free
    └── public
        ├── deepin
        │   ├── dists
        │   │   └── lanseyujie
        │   │       ├── contrib
        │   │       │   └── binary-amd64
        │   │       │       ├── Packages
        │   │       │       ├── Packages.gz
        │   │       │       └── Release
        │   │       ├── InRelease
        │   │       ├── main
        │   │       │   └── binary-amd64
        │   │       │       ├── Packages
        │   │       │       ├── Packages.gz
        │   │       │       └── Release
        │   │       ├── non-free
        │   │       │   └── binary-amd64
        │   │       │       ├── Packages
        │   │       │       ├── Packages.gz
        │   │       │       └── Release
        │   │       ├── Release
        │   │       └── Release.gpg
        │   └── pool
        │       ├── main
        │       └── non-free
        └── key
            └── public.key


    软件源的使用

    # 添加源
    echo "deb [arch=amd64] https://ppa.lanseyujie.com/deepin lanseyujie main contrib non-free" | sudo tee -a /etc/apt/sources.list
    
    # 添加公钥
    wget -O - https://ppa.lanseyujie.com/key/public.key | sudo apt-key add -
    
    # 更新软件源
    sudo apt update



    参考文献

    [1] https://manpages.debian.org/stretch/reprepro/reprepro.1.en.html

    本文标题:使用 reprepro 搭建私有软件源
    本文链接:https://www.lanseyujie.com/post/build-ppa-with-reprepro.html
    版权声明:本文使用「署名-非商业性使用-相同方式共享」创作共享协议,转载或使用请遵守署名协议。
    点赞 0 分享 0