安装checkinstall工具,Checkinstall会跟踪install命令行所创建或修改的所有文件的路径(例如:”make install”、”make install_modules”等)并建立一个标准的二进制包。
脚本如下:
apt-get install checkinstall上传代码包,也可以中Git拉取。 下载地址:https://github.com/ossrs/srs/releases
编译过程脚本如下
# 1 解压 tar -zxvf srs-3.0.tar.gz cd srs-3.0 # 2 编译 chmod +x ./configure ./configure --prefix=/usr/local/srs3 make -j12 && make install构建期间会让填入一些信息或则修改一些信息,名词、版本、维护者、架构、描述等。 构建脚本如下:
# 命令 包名称 版本号 刚刚的解压地址 checkinstall -D --pkgname=srs --pkgversion=3.0-1 --install=no --pkgsource=../srs-3.0这个时候已经可以编译好安装包了srs_3.0-1_arm64.deb,不过这个包只有运行程序,没有添加为系统服务。
解压脚本如下:
# 创建临时文件夹 mkdir srsdeb # 解压deb dpkg-deb -R srs_3.0-1_arm64.deb srsdeb注:安装deb文件时,解压deb文件后会执行这个文件
# 进入控制文件目录 cd srsdeb/DEBIAN/ # 编辑postinst文件,文件内容看下一步(第四点 -> 第3点) vim postinst # 编辑后修改权限 chmod +x postinst已经配置好了,可以直接使用
#!/bin/sh cat >/usr/local/srs3/conf/srs.conf <<EOF listen 1935; max_connections 1000; srs_log_tank file; srs_log_file ./objs/srs.log; http_server { enabled on; listen 8080; dir ./objs/nginx/html; } stats { network 0; disk sda sdb xvda xvdb; } vhost __defaultVhost__ { http_remux { enabled on; mount [vhost]/[app]/[stream].flv; } min_latency on; mr { enable off; } mw_latency 100; gop_cache off; queue_length 10; } EOF cd /usr/local/srs3/etc/init.d chmod +x ./srs cat >/etc/init.d/srs <<'EOF' #!/bin/sh ### BEGIN INIT INFO # Provides: srs # Required-Start: $local_fs $remote_fs $network $syslog $named # Required-Stop: $local_fs $remote_fs $network $syslog $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: srs service # Description: Start the srs service , Made by yiquan ### END INIT INFO case "$1" in start) /usr/local/srs3/etc/init.d/srs start ;; stop) /usr/local/srs3/etc/init.d/srs stop ;; restart) /usr/local/srs3/etc/init.d/srs restart ;; status) /usr/local/srs3/etc/init.d/srs status ;; reload) /usr/local/srs3/etc/init.d/srs reload ;; rotate) /usr/local/srs3/etc/init.d/srs rotate ;; grace) /usr/local/srs3/etc/init.d/srs grace ;; *) echo "Usage: $0 {start|stop|status|restart|reload|rotate|grace}" echo " reload Apply log file by not restarting SRS" echo " rotate For log rotate, to send SIGUSR1 to SRS to reopen the log file." echo " grace For gracefully quit, to send SIGQUIT to SRS." exit 1 ;; esac exit 0 EOF chmod +x /etc/init.d/srs update-rc.d srs defaults systemctl start srs.service如果不删除文档,那么整个包非常大,没有删快30M,删除之后不到1M
# 退回到deb解压目录 cd .. # 删除所有文档 rm -rf usr/share打包脚本如下:
# 这里更改了包名,是因为在ContOS下打包,包名自动生成。 # 保持名称一致,后缀不同 rpm和deb # -------------- srs-3.0-1.el7.aarch64.rpm cd .. dpkg-deb -b srsdeb srs-3.0-1.el7.aarch64.deb