Notes
  • 简介
  • Linux
    • Ubuntu
      • Ubuntu 20.04 ARM64 修改PAGE_SIZE 64k
    • Samba
      • CentOS7安装Samba
      • 简单案例
      • 审计
      • 相关命令
    • Systemd
    • FPM 打包 nginx rpm 包
    • rpm 打包-从二进制文件进行打包
    • Centos7 重置密码
    • CentOS7搭建kvm并创建虚拟机
    • CentOS7-KVM 嵌套虚拟化
    • CentOS7 KVM GPU 穿透
    • Bonding
    • CentOS7 发送邮件
    • CentOS7 安装 OpenVPN
    • Linux 多线路由策略
    • Webmin 安装
    • NoVNC 安装
    • SRS-RTMP 服务部署
    • CentOS7 安装 MongoDB
    • confluence 安装
    • jira 安装
    • crowd 安装
    • ScriptRunner For Jira
    • ScriptRunner For Confluence
    • Ubuntu VNC
    • Ubuntu18.04-VNC 安装
    • deb 打包
    • iptables
    • debian 保持软件包一致
    • Ubuntu18.04 编译安装 grpc
    • CentOS7 安装 odoo13
    • Pacemaker 入门
    • Firewalld Rich Language
    • PHP Xdebug
    • CentOS7.3 编译安装 Python3.6
    • 葫芦儿打包
    • CentOS7 安装 Tomcat8
    • CentOS7 安装 JDK
    • GuacamoleServer 编译安装
    • FreeBSD7.0安装AMP
    • CentOS7 换源
    • deb下载并离线安装
    • pip下载并离线安装
  • Network
    • 案例一
  • AI
    • 微调Qwen2.5
    • Qwen2.5 VL AWQ量化
    • qwen2.5 填充权重
  • JavaScript
  • Zabbix
    • CentOS7 安装 Zabbix4.0 LTS
    • Zabbix 加密连接
    • Zabbix 主动和被动模式
    • Zabbix 配置邮件报警
    • Zabbix 监控 MySQL
  • 数据库
    • MySQL
      • CentOS7 Install MySQL5.7
      • MySql 主从配置
      • CentOS7 安装 Percona XtraDB Cluster
      • MySql 压力测试-sysbench
      • MariaDB Galera Cluster
      • 备份脚本
    • MongoDB
      • 启用账号密码登录
      • 备份脚本
  • Nginx
    • CentOS7 安装 Nginx
    • Nginx 配置
    • nginx-http-flv-module
    • Nginx-WebDAV
  • Docker
    • CentOS7 安装 Docker
    • Dockerfile
    • DockerSwarm 集群
    • Docker 安装 guacamole
  • Python
    • 虚拟环境
  • Windows
    • Windows 问题集合
    • 迅雷自动安装 Chrome 插件
    • RDP 注册表
    • Rdp File Setting
    • 本地组策略对象(LGPO)工具
    • 禁用应用联网
    • SQL Server 问题处理
    • SQL Server Trigger
    • NSIS 脚本
    • 使用QEMU运行ARM64 CentOS7
    • DOS 脚本
    • Windows 11 设置旧版右键菜单
    • 远程桌面二次验证
  • Apple
    • AppStore 应用开发及上架
    • Apple 打包 Golang WebDav 制作 pkg 安装包
  • Android
    • Android Studio创建具有root权限的虚拟机
    • Android读写挂载system
    • Android安卓CA至系统
  • 证书
    • 证书名称(主题)
    • 证书扩展
    • SSL 自签
    • 免费 https 证书申请
  • 树莓派
    • 树莓派系统烧录及系统打包制作
    • 树莓派基础操作
    • 树莓派安装 NextCloud
    • 树莓派安装 LNMP
    • 树莓派自定义开机界面和登录提示
    • 树莓派安装 HomeAssistant
    • HomeAssistant 配置
    • 树莓派自动挂载 U 盘
    • 树莓派安装 vsftpd
    • vsftpd 配置文件详解
  • ceph
    • ceph-deploy 部署 ceph nautilus 版本
    • ceph dashboard
  • OpenStack
    • OpenStack VM 配置 Virtual IP
    • OpenStack Glance 对接 Ceph RBD 存储
    • OpenStack Cinder Volumes 对接 Ceph RBD 存储
    • OpenStack 集群搭建
    • OpenStack Rocky 单节点部署
    • OpenStack Rocky 集群部署
    • OpenStack CentOS6 镜像制作
    • OpenStack-Ubuntu 镜像制作
    • Openstack-Windows 镜像制作
    • OpenStack-RBD 导入镜像
    • OpenStack-Rocky 灾备
    • rbd-mirror
  • FFmpeg
    • CentOS7 静态编译FFmpeg
    • MacOS10.12静态编译FFmpeg
    • CentOS7 Arm64静态编译FFmpeg
    • 使用NVIDIA显卡
    • 脚本
  • Other
    • 华为一碰传标签制作
    • 常用软件
    • wireguard
由 GitBook 提供支持
在本页
  • 简介
  • 文件
  • 步骤
  • 参考
  1. Linux

rpm 打包-从二进制文件进行打包

简介

文件

  • webdav

    访问 https://github.com/hacdias/webdav/releases 下载 linux-amd64-webdav.tar.gz

    获取压缩包里面的 webdav 文件

  • webdav.service

    [Unit]
    Description=WebDAV server
    After=network.target
    
    [Service]
    Type=simple
    User=root
    ExecStart=/usr/bin/webdav --config /etc/webdav.config
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
  • config.yaml

    # Server related settings
    address: 0.0.0.0
    port: 8888
    auth: true
    tls: false
    cert: cert.pem
    key: key.pem
    prefix: /
    
    users:
      - username: admin
        password: admin
        modify: true
        scope: /data/webdav
  • webdav.spec

    Name:           webdav
    Summary:        WebDAV for Linux
    Version:        3.0.0
    Release:        linux
    BuildArch:      x86_64
    Group:          Applications/Internet
    URL:            https://github.com/hacdias/webdav
    Distribution:   Linux/x64
    Packager:       Zhxlp<zhxlp@zhxlp.com>
    License:        MIT
    
    %description
    A WebDAV server program
    
    %install
    cp -r %{_builddir}/* %{buildroot}/
    
    # 安装前
    %pre
    systemctl stop webdav.service || true
    
    # 安装后
    %post
    mkdir -p /data/webdav || true
    chmod 777 /data/webdav || true
    systemctl daemon-reload || true
    
    # 卸载前
    %preun
    systemctl stop webdav.service || true
    
    # 卸载后
    %postun
    systemctl daemon-reload || true
    
    %clean
    rm -rf %{buildroot}
    
    # 添加到安装包的文件
    %files
    %attr(755,root,root) /usr/bin/webdav
    /usr/bin/webdav
    /etc/webdav.config
    /usr/lib/systemd/system/webdav.service
  • 脚本执行顺序及参数

    rpm script

    install

    upgrade

    uninstall

    %pre 1

    运行新包的%pre 2

    %preun 0

    安装文件

    安装新文件

    删除文件

    %post 1

    运行新包的%post 2

    %postun 0

    运行旧包的%preun 1

    删除新文件未覆盖的任何旧文件

    运行旧包的%postun 1

  • build.sh

    #!/bin/bash
    set -e
    version=3.0.0
    if [ -L $0 ]; then
        BASE_DIR=`dirname $(readlink $0)`
    else
        BASE_DIR=`dirname $0`
    fi
    bashpath=$(cd $BASE_DIR; pwd)
    cd $bashpath
    
    sed -i "s#Version: .*#Version: $version#" $bashpath/SPECS/webdav.spec
    echo '%_topdir' "$bashpath" > ~/.rpmmacros
    rpmbuild -bb $bashpath/SPECS/webdav.spec

步骤

  • 安装依赖

    yum install -y rpm-build
  • 创建目录结构

    mkdir {BUILD,BUILDROOT,SPECS,RPMS}
  • 复制文件到制定目录

    ./
    ├── BUILD
    │   ├── etc
    │   │   └── webdav.config
    │   └── usr
    │       ├── bin
    │       │   └── webdav
    │       └── lib
    │           └── systemd
    │               └── system
    │                   └── webdav.service
    ├── BUILDROOT
    ├── build.sh
    ├── RPMS
    └── SPECS
        └── webdav.spec
  • 打包

    bash build.sh

    打包好的 rpm 包生成在 RPMS 目录

参考

https://rpm-packaging-guide.github.io/

https://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package/zh-cn

https://blog.csdn.net/get_set/article/details/53453320

https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/ https://www.golinuxhub.com/2018/05/how-to-execute-script-at-pre-post-preun-postun-spec-file-rpm/

上一页FPM 打包 nginx rpm 包下一页Centos7 重置密码

最后更新于3年前