银河麒麟V10源码编译SVN 1.8.14:依赖编译与配置避坑指南
简介本资源面向在银河麒麟操作系统上部署版本控制服务的运维与开发人员聚焦于从源码编译搭建完整SVN环境这一典型场景帮助读者解决国产化平台下组件依赖复杂、配置项繁多的问题。压缩包内共1个docx文档约202KB以图文步骤形式记录操作要点便于对照执行与查阅。内容涵盖apr、apr-util、SQLite与Subversion的下载编译安装环境变量配置版本库创建以及svnserve.conf、passwd、authz三个核心文件的权限与用户配置并延伸至服务启动、Windows客户端访问及开机自启脚本设置。目前已有2788人学习适合需要快速落地SVN服务、排查配置错误的中级运维人员参考。1. 银河麒麟装 SVN为什么源码编译比 yum 更值得折腾在银河麒麟 V10 上装 SVN很多人第一反应是yum install subversion但实际跑起来经常遇到版本对不上、依赖拉不全、离线环境直接卡死的情况。尤其是 ARM 架构的银河麒麟系统官方源里的 SVN 版本往往停在 1.8 甚至更早而项目上又要求用 1.8.14 这个特定版本做版本管理。这时候源码编译就成了绕不开的路。这份资源给的就是一套完整的源码编译方案从 apr、apr-util、sqlite 三个依赖开始到 subversion-1.8.14 本体编译再到版本库创建、svnserve.conf 三件套配置、开机自启脚本。整套流程在银河麒麟 V10 SP1 上验证过适合需要在国产化环境里搭 SVN 服务端、又不想被包管理器版本绑架的运维和开发。下面按实际动手顺序拆开讲。2. 依赖三件套apr、apr-util、sqlite 的编译顺序不能乱2.1 为什么 apr 必须第一个编SVN 的底层网络通信和内存池管理全靠 APRApache Portable Runtime。apr-util 又依赖 apr 的头文件和库sqlite 则是 SVN 用来存版本库元数据的嵌入式数据库。这三个的编译顺序是硬性的apr → apr-util → sqlite → subversion。顺序错了configure 阶段就会报找不到 apr 的错。下载地址在项目正文里给了 archive.apache.org 的归档链接我一般会先把三个包传到/home/dmdba/svn/下统一解压。注意银河麒麟默认可能没装wget离线环境直接用 U 盘或 scp 传。# 切换到 root避免后续 make install 权限不足 su - root # 进入工作目录 cd /home/dmdba/svn/ # 解压三个依赖包 tar -zxvf apr-1.6.5.tar.gz tar -zxvf apr-util-1.6.1.tar.gz unzip sqlite-amalgamation-3071501.zip解压完先别急着编 sqlite它不需要./configure后面直接拷进 SVN 源码目录就行。2.2 apr 和 apr-util 的 configure 参数编译 apr 时--prefix指定安装路径我习惯统一放到/usr/local/下方便后面 SVN 的--with-apr直接指过去。cd /home/dmdba/svn/apr-1.6.5 ./configure --prefix/usr/local/apr make make install--prefix/usr/local/apr这个参数决定了头文件去/usr/local/apr/include找库文件去/usr/local/apr/lib找。如果这台机器之前装过系统自带的 apr/usr/local/apr能避免和/usr/lib下的旧版本冲突。apr-util 的 configure 多一个关键参数--with-apr必须指向刚才 apr 的安装路径cd /home/dmdba/svn/apr-util-1.6.1 ./configure --prefix/usr/local/apr-util --with-apr/usr/local/apr make make install这里有个血泪经验如果--with-apr写成了/usr/local/apr/带尾部斜杠某些版本的 configure 脚本会拼出双斜杠路径导致检测失败。不带斜杠最稳。2.3 sqlite 的特殊处理方式sqlite-amalgamation 包解压出来是一个sqlite-amalgamation-3071501目录里面就一个sqlite3.c和一个sqlite3.h。SVN 编译时需要的是把这个目录整个拷到 subversion 源码的sqlite-amalgamation子目录下而不是单独编译安装 sqlite。# 确认 sqlite 解压后的目录名 ls /home/dmdba/svn/sqlite-amalgamation-3071501/ # 应该看到 sqlite3.c 和 sqlite3.h # 等 subversion 解压后把整个目录拷进去 # 这一步放到下一章 subversion 编译前做常见做法是先把 subversion 源码解压好再执行拷贝。如果先拷了但目录名不对SVN 的 configure 会报cannot find sqlite3.c。3. 编译 subversion-1.8.14configure 参数与 sqlite 嵌入3.1 解压与 sqlite 目录对接subversion-1.8.14 的源码包解压后根目录下没有sqlite-amalgamation文件夹需要手动创建并把 sqlite 的源码放进去。cd /home/dmdba/svn/ tar -zxvf subversion-1.8.14.tar.gz cd subversion-1.8.14 # 创建 sqlite-amalgamation 目录并拷贝源码 mkdir sqlite-amalgamation cp /home/dmdba/svn/sqlite-amalgamation-3071501/sqlite3.c sqlite-amalgamation/ cp /home/dmdba/svn/sqlite-amalgamation-3071501/sqlite3.h sqlite-amalgamation/注意目录名必须是sqlite-amalgamation这是 SVN 的 configure 脚本硬编码查找的路径。拷完后ls sqlite-amalgamation/应该能看到两个文件。3.2 configure 三参数与 make 编译subversion 的 configure 需要同时指定 apr 和 apr-util 的路径./configure --prefix/usr/local/svn \ --with-apr/usr/local/apr \ --with-apr-util/usr/local/apr-util make make install--prefix/usr/local/svn决定了 svn 命令、svnadmin、svnserve 都装到/usr/local/svn/bin/下。--with-apr和--with-apr-util分别指向前面编好的两个依赖。如果 configure 输出里看到checking for APR... yes和checking for APR-util... yes说明依赖识别成功。make 过程在 ARM 架构的银河麒麟上大概需要 3 到 5 分钟具体看 CPU 核数。如果 make 报错sqlite3.c: No such file or directory回头检查 3.1 的拷贝步骤。3.3 环境变量与版本验证装完后 svn 命令还不在 PATH 里需要改/etc/profilevim /etc/profile # 在末尾加入 PATH$PATH:/usr/local/svn/bin # 保存退出后使配置生效 source /etc/profile验证安装结果svnserve --version正常输出会显示svnserve, version 1.8.14。如果提示command not found先确认/usr/local/svn/bin/svnserve文件存在再检查 PATH 是否拼写正确。我一般会额外跑一句which svnserve确认实际调用的路径。4. 版本库创建与 svnserve.conf 三件套配置4.1 svnadmin create 与目录结构版本库根目录选/home/svn/项目名假设为projectmkdir -p /home/svn/project svnadmin create /home/svn/project执行完svnadmin create后/home/svn/project/下会多出conf、db、hooks、locks、format、README.txt这些文件和目录。其中conf下就是需要改的三个配置文件svnserve.conf、passwd、authz。4.2 svnserve.conf 的顶格陷阱svnserve.conf的配置项必须顶格写行首不能有空格。这是最容易翻车的地方——用 vi 编辑时如果开了自动缩进粘贴进去的配置前面会带空格SVN 启动时直接报配置错误。[general] anon-access none auth-access write password-db passwd authz-db authzanon-access none表示匿名用户无任何权限auth-access write表示认证用户可读写。password-db和authz-db分别指向同目录下的passwd和authz文件。注意vi 里用:set paste关闭自动缩进再粘贴能避免顶格问题。4.3 passwd 与 authz 的权限模型passwd文件定义用户和密码[users] admin 123456authz文件定义群组和目录权限[groups] g_admin admin [/] g_admin rw * [/]表示对版本库根目录的权限配置g_admin rw给 g_admin 群组读写权限* 表示其他所有用户无权限。这里* 后面留空就是拒绝不要写成* noneSVN 不认这个写法。配置完三个文件后启动服务svnserve -d -r /home/svn-d是守护进程模式-r /home/svn指定版本库根目录。注意路径只到/home/svn不要写到/home/svn/project否则客户端访问时 URL 会多一层。Windows 客户端访问地址格式svn://服务器IP/project。比如svn://123.206.73.117/project。5. 避坑排查从配置报错到开机自启失效5.1 svnserve.conf 首行留空导致启动失败现象svnserve -d -r /home/svn执行后无报错但客户端连接提示Authentication error或直接拒绝。原因svnserve.conf的[general]段前有空白行或者配置项行首有空格。SVN 解析配置文件时对首行和缩进敏感。解决用cat -A svnserve.conf查看如果行首出现^I或空格用:set paste重新编辑确保[general]和所有配置项都顶格。5.2 客户端能拉取但提交报权限不足现象svn checkout正常svn commit提示Authorization failed。原因authz里[/]的权限写成了r而不是rw或者用户不在g_admin群组里。解决检查authz中g_admin rw是否拼写正确以及passwd里的用户名是否和authz的群组成员一致。改完不需要重启 svnserve配置是每次请求时读取的。5.3 开机自启脚本路径写相对路径现象重启银河麒麟后ps -ef | grep svnserve看不到进程。原因/root/svn.sh里写的是svnserve -d -r /home/svn但开机时环境变量还没加载找不到 svnserve 命令。解决脚本里用绝对路径/usr/local/svn/bin/svnserve -d -r /home/svn。用which svnserve确认绝对路径。#!/bin/bash /usr/local/svn/bin/svnserve -d -r /home/svn赋执行权限chmod 777 /root/svn.sh然后在/etc/rc.d/rc.local末尾加/root/svn.sh。5.4 make install 后 svn 命令找不到现象source /etc/profile后svn --version仍然提示command not found。原因PATH 拼写错误或者/usr/local/svn/bin下确实没有可执行文件。解决先ls /usr/local/svn/bin/确认 svn、svnadmin、svnserve 是否存在。如果存在检查/etc/profile里 PATH 那行有没有多余空格或拼写错误。实在不行直接在命令行export PATH$PATH:/usr/local/svn/bin临时验证。5.5 防火墙拦截 3690 端口现象服务端ps能看到 svnserve但 Windows 客户端连接超时。原因银河麒麟默认防火墙没放行 SVN 的 3690 端口。解决firewall-cmd --add-port3690/tcp --permanent然后firewall-cmd --reload。如果用的是 iptables对应加一条 ACCEPT 规则。6. 开机自启脚本的绝对路径写法与验证习惯开机自启这块我踩过最深的坑就是脚本里用了相对路径。当时在命令行手动执行/root/svn.sh一切正常重启后就是起不来。后来bash -x /root/svn.sh跟了一遍才发现开机时/etc/rc.d/rc.local的执行环境 PATH 极简svnserve根本不在搜索路径里。所以脚本里所有命令都写绝对路径这是铁律#!/bin/bash # SVN 开机自启脚本 # 注意所有命令必须用绝对路径开机时环境变量未加载 /usr/local/svn/bin/svnserve -d -r /home/svn写完脚本后我一般会做三步验证第一步chmod 777 /root/svn.sh确保可执行第二步bash /root/svn.sh手动跑一遍确认不报错第三步ps -ef | grep svnserve确认进程起来了。然后reboot重启重启后再ps -ef | grep svnserve复查一次。只有重启后进程还在才算真正验证通过。还有一个细节/etc/rc.d/rc.local文件本身在某些银河麒麟版本上默认没有执行权限需要chmod x /etc/rc.d/rc.local。如果加了脚本路径但重启后没生效先检查这个文件的权限。另外如果后续要改版本库根目录或者加新项目记得svnserve的-r参数指向的是根目录新增项目只需要在/home/svn/下svnadmin create新目录然后改authz加权限即可不用重启服务。这个习惯让我在管理多个项目时省了不少事。从那以后我每次配完 SVN 都强制走一遍「手动执行脚本 → 查进程 → 重启 → 再查进程」的流程再也没出现过开机自启失效的问题。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

OpenHarmony上Flutter应用的数据备份恢复实战指南

OpenHarmony上Flutter应用的数据备份恢复实战指南

1. 项目定位:为什么在鸿蒙上用Flutter做生活助手 先交代一下背景。我最近在做一个基于 OpenHarmony 的生活助手类 App,名字暂定叫“简生活”,核心功能是记日常、管待办、存小账本。跨端框架选的 Flutter,原因很简单:Op…

2026/9/30 7:54:30 阅读更多 →
CentOS 7 VMware剪贴板失效的根因与open-vm-tools正确配置

CentOS 7 VMware剪贴板失效的根因与open-vm-tools正确配置

1. 复制粘贴失效不是“没装好”,而是根本没走对路径 在 CentOS 7 虚拟机里,你右键选中一段文字,按 CtrlC,再切到主机 Windows 上按 CtrlV——结果什么都没粘出来;或者反过来,从 Windows 复制 Excel 单元格&…

2026/9/30 7:54:30 阅读更多 →
开源积木式AI搭建工具实测:可视化拖拽构建智能应用

开源积木式AI搭建工具实测:可视化拖拽构建智能应用

我最近在开源社区里翻到一个狠东西:一个把 AI 应用搭建硬生生做成“拼积木”的开源工具。它号称是北半球首个开源积木式 AI 搭建工具,说实话,刚看到“北半球首个”这种前缀的时候我是有点将信将疑的,但把一个可视化拖拽的工具下载…

2026/9/30 7:54:30 阅读更多 →

最新新闻

大语言模型推理优化实战:TensorRT与vLLM协同调优指南

大语言模型推理优化实战:TensorRT与vLLM协同调优指南

1. 项目概述:Model-Optimizer 不是工具名,而是一类工程实践的统称 “Model-Optimizer”这个标题乍看像某个开源库或商业软件的名字,但结合NVIDIA、TensorRT-LLM、vLLM、PT文件转换TensorRT等热搜词,它实际指向的是 大语言模型&a…

2026/9/30 8:48:14 阅读更多 →
2026国自然正文2000字新规:申请书写作的平衡技巧全拆解

2026国自然正文2000字新规:申请书写作的平衡技巧全拆解

先说个让人坐不住的消息:2026年的国自然申报指南,正文篇幅直接从4000字砍到2000字左右,科学问题属性那一大段阐述也被挪出了正文。很多人第一反应是“完了,这怎么写”,但我的真实感受恰恰相反——这次改革,…

2026/9/30 8:48:14 阅读更多 →
大模型推理性能调优:TensorRT-LLM与vLLM协同优化实战

大模型推理性能调优:TensorRT-LLM与vLLM协同优化实战

1. 项目概述:Model-Optimizer 不是“一键加速器”,而是一套面向生产级大模型推理的系统性调优方法论你搜“Model-Optimizer”,十有八九会跳出来一堆 TensorRT、vLLM、NVIDIA 驱动安装失败的报错截图,还有人问“vllm docker镜像中带…

2026/9/30 8:48:14 阅读更多 →
国自然26年大改后本子怎么写?篇幅砍半的高分重构方法论

国自然26年大改后本子怎么写?篇幅砍半的高分重构方法论

26年国自然大改的消息传了大半年,真到了申报季,很多人打开最新模板才发现:不是小修小补,而是整体篇幅直接砍半。群里有同事去年刚用一套“厚重打法”拿下面上,今年想改改再投,结果对着新模板算了半天字数&a…

2026/9/30 8:48:13 阅读更多 →
Agent记忆系统实战:基于MCP与Docker的hindsight架构设计

Agent记忆系统实战:基于MCP与Docker的hindsight架构设计

1. 从“hindsight”说起:为什么我们需要给Agent装上“后视镜”第一次看到“hindsight”这个词,是在做一个多轮对话Agent的复盘工具时。当时团队里有个争论:Agent到底需不需要“记住”上一次任务失败的原因?有人觉得每次请求都是独…

2026/9/30 8:48:13 阅读更多 →
SOAR+MSSP协同落地实操指南:三层能力矩阵与工程化交付

SOAR+MSSP协同落地实操指南:三层能力矩阵与工程化交付

简介:本资源是一份面向政企IT运维团队、安全服务提供商及等保合规建设人员的《网络及信息化安全运营服务项目方案》完整技术文档,聚焦大型IT数据中心全生命周期安全运营实践,覆盖风险识别、监测响应、补丁管理与应急处置等核心能力构建。文档…

2026/9/30 8:47:10 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →