Ubuntu 制作SRS安装包
目录
一、安装制作工具
安装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
三、第一次构建Deb安装包
构建期间会让填入一些信息或则修改一些信息,名词、版本、维护者、架构、描述等。
构建脚本如下:
# 命令 包名称 版本号 刚刚的解压地址
checkinstall -D --pkgname=srs --pkgversion=3.0-1 --install=no --pkgsource=../srs-3.0
这个时候已经可以编译好安装包了srs_3.0-1_arm64.deb
,不过这个包只有运行程序,没有添加为系统服务。
四、修正Deb安装包
1、解压deb
解压脚本如下:
# 创建临时文件夹
mkdir srsdeb
# 解压deb
dpkg-deb -R srs_3.0-1_arm64.deb srsdeb
2、添加postinst
文件
注:安装deb文件时,解压deb文件后会执行这个文件
# 进入控制文件目录
cd srsdeb/DEBIAN/
# 编辑postinst文件,文件内容看下一步(第四点 -> 第3点)
vim postinst
# 编辑后修改权限
chmod +x postinst
3、postinst
文件内容
- 修改srs配置
- 创建系统服务
- 设置开启自启
- 启动srs服务
已经配置好了,可以直接使用
#!/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
4、删除帮助文档
如果不删除文档,那么整个包非常大,没有删快30M
,删除之后不到1M
# 退回到deb解压目录
cd ..
# 删除所有文档
rm -rf usr/share
5、重新打包
打包脚本如下:
# 这里更改了包名,是因为在ContOS下打包,包名自动生成。
# 保持名称一致,后缀不同 rpm和deb
# -------------- srs-3.0-1.el7.aarch64.rpm
cd ..
dpkg-deb -b srsdeb srs-3.0-1.el7.aarch64.deb