From 3a3b161b2f28348198e2e25f3e73282f22de779c Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Thu, 16 Oct 2025 03:44:55 +0000 Subject: automatic import of aops-mcp --- aops-mcp.spec | 75 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 56 insertions(+), 19 deletions(-) (limited to 'aops-mcp.spec') diff --git a/aops-mcp.spec b/aops-mcp.spec index be5d6c7..1db7e13 100644 --- a/aops-mcp.spec +++ b/aops-mcp.spec @@ -15,7 +15,8 @@ Source0: %{name}-%{version}.tar.gz BuildRequires: python3-setuptools BuildRequires: python3-pip -Requires: python3, systemd +Requires: python3 +Requires: systemd %description Aops MCP Service packaged as RPM. @@ -24,54 +25,90 @@ Aops MCP Service packaged as RPM. %setup -q %build +# 创建构建目录 +mkdir -p %{_builddir}/%{name}-build + # 创建虚拟环境 -%{__python3} -m venv %{_builddir}/%{name}-%{version}/venv +python3 -m venv %{_builddir}/%{name}-build/venv # 激活虚拟环境并安装依赖 -source %{_builddir}/%{name}-%{version}/venv/bin/activate +source %{_builddir}/%{name}-build/venv/bin/activate +pip install --upgrade pip -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pip install . -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple deactivate -rm -rf %{_builddir}/%{name}-%{version}/build + +# 修复虚拟环境中的shebang +find %{_builddir}/%{name}-build/venv/bin -type f -name "*.py" -exec \ + sed -i "1s|^#!.*|#!%{_builddir}/%{name}-build/venv/bin/python|" {} \; + +# 检查主要的可执行文件是否存在 +if [ ! -f "%{_builddir}/%{name}-build/venv/bin/aops-mcp" ]; then + echo "错误: aops-mcp 可执行文件未在虚拟环境中找到" + echo "虚拟环境中的文件:" + ls -la "%{_builddir}/%{name}-build/venv/bin/" + exit 1 +fi %install rm -rf %{buildroot} -# 创建应用目录 +# 创建应用目录结构 mkdir -p %{buildroot}/opt/%{name} +mkdir -p %{buildroot}%{_unitdir} +mkdir -p %{buildroot}%{_bindir} -# 复制整个项目(包括虚拟环境) -cp -r %{_builddir}/%{name}-%{version}/venv %{buildroot}/opt/%{name}/ +# 复制虚拟环境到目标位置 +cp -r %{_builddir}/%{name}-build/venv %{buildroot}/opt/%{name}/ +# 再次修复目标位置的shebang find %{buildroot}/opt/%{name}/venv/bin -type f -exec \ - sed -i "1s|^#!.*|#!/opt/%{name}/venv/bin/python|" {} \; + grep -l "^#!" {} \; | xargs sed -i "1s|^#!.*|#!/opt/%{name}/venv/bin/python|" -# 复制 systemd 服务文件 -mkdir -p %{buildroot}%{_unitdir} +# 确保可执行文件有正确权限 +chmod 755 %{buildroot}/opt/%{name}/venv/bin/aops-mcp + +# 安装systemd服务文件 install -m 644 aops-mcp.service %{buildroot}%{_unitdir}/ -# 创建可执行文件符号链接 -mkdir -p %{buildroot}%{_bindir} -ln -s /opt/%{name}/venv/bin/aops-mcp %{buildroot}%{_bindir}/aops-mcp +# 创建符号链接到/usr/bin +ln -sf /opt/%{name}/venv/bin/aops-mcp %{buildroot}%{_bindir}/aops-mcp + +# 创建日志和运行目录(如果需要) +mkdir -p %{buildroot}/var/log/%{name} +mkdir -p %{buildroot}/var/run/%{name} + +%pre +# 安装前脚本 - 创建必要的用户和组(如果需要) +# getent group aops >/dev/null 2>&1 || groupadd -r aops +# getent passwd aops >/dev/null 2>&1 || useradd -r -g aops -s /sbin/nologin -d /opt/%{name} aops %post -# systemd 配置 +# 安装后脚本 %systemd_post aops-mcp.service +# 设置目录权限(如果需要特定用户) +# chown -R aops:aops /opt/%{name} +# chown -R aops:aops /var/log/%{name} +# chown -R aops:aops /var/run/%{name} + %preun -# 卸载前停止服务 +# 卸载前脚本 %systemd_preun aops-mcp.service %postun -# 清理配置 +# 卸载后脚本 %systemd_postun_with_restart aops-mcp.service %files +%defattr(-,root,root,-) +%doc README.md LICENSE %dir /opt/%{name} -/opt/%{name}/* -%license LICENSE +/opt/%{name}/venv/ %{_bindir}/aops-mcp %{_unitdir}/aops-mcp.service +%dir /var/log/%{name} +%dir /var/run/%{name} %changelog -* Tue Sep 16 2025 ShiLei <845621916@qq.com> - 1.0-1 +* Tue Sep 16 2025 ShiLei <845621916@qq.com> - 1.0.0-1 - Initial package -- cgit v1.2.3