新闻详情

新闻详情

首页 / 资讯中心 / 详情

银河麒麟V10源码编译SVN 1.8.14:依赖编译与配置避坑指南

发布时间:2026/9/30 7:54:23来源:尧图网络
银河麒麟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 都强制走一遍「手动执行脚本 → 查进程 → 重启 → 再查进程」的流程再也没出现过开机自启失效的问题。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

“量子纠缠”式通灵:架构师视角下的幽灵Bug排查实战指南 2026/9/30 8:58:42

“量子纠缠”式通灵:架构师视角下的幽灵Bug排查实战指南

凌晨两点十七分,线上订单接口突然开始飘零星 500,日志里只有一行孤零零的 timeout,本地怎么压都不复现。我盯着屏幕,忽然理解了为什么有人会认真琢磨"用量子纠缠通灵:呼叫已故架构师改bug"这种梗——它不是玩…

阅读更多 →
从聆讯到挂牌:IPO流程机制与投资者打新关键指标解析 2026/9/30 8:58:42

从聆讯到挂牌:IPO流程机制与投资者打新关键指标解析

“飞速创新通过上市聆讯”这则消息,圈内人看到的是“临门一脚”,圈外人看到的可能只是一个“营收21.75亿、利润4.2亿”的数字。刚好最近有朋友在准备港股IPO,天天跟我聊聆讯的事,我就借着这个案例,把上市聆讯从流程机制…

阅读更多 →
大小端字节序详解:从线上事故到跨平台数据转换实战 2026/9/30 8:58:42

大小端字节序详解:从线上事故到跨平台数据转换实战

“大小端”(Endianness)在不少程序员眼里,是那种“面试题常客、平时用不上”的知识点。我刚工作时也这么认为,直到有一次线上故障让我在一个字节序问题上耗了一整天。那次项目的两块控制板分别跑 x86 和 ARM,它们共享同…

阅读更多 →
任意斜率直线绘制实战:Bresenham算法与常见坑解析 2026/9/30 8:58:42

任意斜率直线绘制实战:Bresenham算法与常见坑解析

简介:一份计算机图形学实验设计报告,聚焦绘制任意斜率直线段的主题,适合图形学课程设计、期末实验或算法入门学习者参考。报告以CLine直线类为主线,详细给出了MoveTo()与LineTo()成员函数的声明和实现,并基于中点Brese…

阅读更多 →
YOLOv5模型诊断:从指标幻觉到健康体检的完整框架 2026/9/30 8:58:42

YOLOv5模型诊断:从指标幻觉到健康体检的完整框架

1. 这不是“指标列表”,而是一套模型诊断的完整思维框架你有没有遇到过这样的情况:训练完一个YOLOv5模型,终端输出一堆数字——mAP0.50.82、Precision0.79、Recall0.85……你截图发到群里,大家纷纷点赞“不错啊”,但一…

阅读更多 →
Qwen-Image-2.1轻量化换脸:LORA微调与高级采样器协同优化实战 2026/9/30 8:58:35

Qwen-Image-2.1轻量化换脸:LORA微调与高级采样器协同优化实战

1. 项目概述:这不是“换脸APP”,而是一套可本地复现的轻量化图像生成增强方案Qwen-Image-2.1加速LORA,换脸LORA,搭配高级采样器——这个标题乍看像短视频平台的流量钩子,但拆开来看,它其实指向一个非常具体…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉