Linux Ubuntu 部署SVN

news2024/11/17 21:54:41

最近需要在ubuntu server上部署一个svn,记录

不需要特定版本

如果不需要特定版本,这样安装就是最简单的

sudo apt update

 然后开始安装

sudo apt install subversion

等到安装完成之后执行查看版本命令,如果正常输出那就没问题了

svnadmin --version

安装特定版本

这就需要手动下载包和安装依赖,我这边就用1.14.1举例了

sudo apt update

安装必要的依赖 

sudo apt-get install libapr1-dev libaprutil1-dev libsqlite3-dev zlib1g-dev liblz4-dev libutf8proc-dev

下载 Subversion 1.14.1 的源代码。在浏览器中打开 Apache Subversion 下载页面 并复制链接地址,然后在终端中使用 wget 命令下载:

wget https://archive.apache.org/dist/subversion/subversion-1.14.1.tar.gz

解压源代码:

tar -xzvf subversion-1.14.1.tar.gz

进入解压后的目录:

cd subversion-1.14.1

配置 
如果这个命令当中报错缺少什么包,就进行单独apt安装就行了(我这边缺的包在开头已经在第一步单独进行安装,但是不排除某些特殊版本可能依赖不一样)

./configure

编译:

make

安装

sudo make install

等待命令完成就可以执行版本命令检查是否安装正确

svnadmin --version

 如果报错

svnadmin: error while loading shared libraries: libsvn_fs_fs-1.so.0: cannot open shared object file: No such file or directory


就参考我这篇blog:
SVN手动下载安装包编译安装之后,执行svnadmin命令报错svnadmin: error while loading shared libraries: libsvn_fs_fs-1.so.0-CSDN博客

新建repo

创建一个新的 SVN 仓库:

svnadmin create /path/to/new/repository

将 /path/to/new/repository 替换为你希望创建仓库的路径。

如果你有个某个svn的备份文件dump,可以运行这个进行导入

svnadmin load /path/to/new/repository < your_dump_file

创建用户 

进入你的 SVN 仓库目录:

cd /path/to/new/repository

将 /path/to/new/repository 替换为你创建的 SVN 仓库路径。

创建一个新的 SVN 用户:

htpasswd -c conf/passwd username

将 username 替换为你希望创建的用户名。回车之后需要输入你想要设置的密码

如果报错

Command 'htpasswd' not found, but can be installed with:

sudo apt install apache2-utils

 这个错误表明系统中没有安装 apache2-utils 软件包,而 htpasswd 命令是该软件包的一部分,安装就行了

sudo apt install apache2-utils

配置 SVN 权限

打开 SVN 仓库的 conf 目录:           

cd /path/to/new/repository/conf

 编辑 svnserve.conf 文件:(ctrl+o保存,ctrl+x退出)

nano svnserve.conf

将 anon-access 和 auth-access 设置为 none,并确保 authz-db 行没有注释(去掉前面的 #):

anon-access = none
auth-access = write
authz-db = authz

#anon-access = none:

#意义:该配置项指定匿名用户(未经身份验证的用户)的访问权限。在这里,none 表示禁止匿名用户访问,他们无法读取或写入版本库。
#其他可能的值:
#read:允许匿名用户只读访问版本库。
#write:允许匿名用户读写访问版本库。
#auth-access = write:

#意义:该配置项指定经过身份验证的用户的访问权限。在这里,write 表示身份验证用户具有读写访问版本库的权限。
#其他可能的值:
#read:身份验证用户只有读取版本库的权限。
#write:身份验证用户具有读写访问版本库的权限。
#authz-db = authz:

#意义:该配置项指定用于访问控制的权限数据库文件的路径。在这里,authz 表示使用名为 authz 的文件作为权限数据库。
#默认情况下,authz 文件中定义了用户和组的权限规则,用于更精细地控制用户对特定路径的访问权限。

保存并关闭文件。

创建并编辑 authz 文件:

nano authz

在文件中添加用户权限配置,例如:

[groups]
developers = username

[/]
@developers = rw

这将创建一个组 developers,其中包含名为 username 的用户,并为该组授予对仓库的读写权限。 

在 SVN 的 authz 文件中,你可以通过在 groups 部分为组添加多个用户,然后在权限部分为该组分配相应的权限。以下是一个示例,演示如何添加多个用户到组:

[groups]
developers = user1, user2, user3

[/]
@developers = rw

在这个例子中,developers 组包含了三个用户:user1、user2 和 user3。然后,@developers 表示将权限赋予该组。这意味着 user1、user2 和 user3 都将具有对整个仓库的读写权限。

如果要为不同的目录或项目设置不同的权限,你可以在 authz 文件中添加更多的部分,例如:

[groups]
developers = user1, user2, user3

[/project1]
@developers = rw

[/project2]
@developers = r

在这个例子中,/project1 目录对 developers 组开放读写权限,而 /project2 目录只开放读权限。

记得在修改 authz 文件后重新启动 SVN 服务器,以使更改生效。

然后保存并关闭文件。

启动 SVN 服务器

返回到 SVN 仓库的根目录:

cd /path/to/new/repository

启动 SVN 服务器:

svnserve -d -r /path/to/new/repository

-d 选项表示以守护进程(后台)模式运行,-r 选项指定 SVN 服务器的根目录。

 配置SVN自启动

这边如果想要server启动的时候svn就自动启动,就需要配置service

打开文本编辑器,创建一个新的服务文件,例如 svnserve.service:

sudo nano /etc/systemd/system/svnserve.service

在编辑器中添加以下内容(替换 /path/to/new/repository 为你的 SVN 仓库路径):

[Unit]
Description=Subversion SVN Serve

[Service]
ExecStart=/usr/bin/svnserve -d -r /path/to/new/repository
Restart=always
User=your_username

[Install]
WantedBy=multi-user.target

将 your_username 替换为运行 SVN 服务的用户名

保存并关闭文件。

重新加载 systemd 配置:

sudo systemctl daemon-reload

启用 SVN 服务,使其在系统启动时自动启动:

sudo systemctl enable svnserve.service

手动启动 SVN 服务:

sudo systemctl start svnserve.service

现在,SVN 服务将在系统启动时自动启动。你可以使用以下命令检查服务状态:

sudo systemctl status svnserve.service

确保在 Active 行中看到 running 表示服务正在运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1492536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rust 开发的高性能 Python 包管理工具,可替换 pip、pip-tools 和 virtualenv

最近&#xff0c;我在 Python 潮流周刊 中分享了一个超级火爆的项目&#xff0c;这还不到一个月&#xff0c;它在 Github 上已经拿下了 8K star 的亮眼成绩&#xff0c;可见其受欢迎程度极高&#xff01;国内还未见有更多消息&#xff0c;我趁着周末把一篇官方博客翻译出来了&a…

绝地求生:调整不同血雾颜色效果,显著提升抽靶击中时的反馈效果

嗨&#xff0c;我是闲游盒~ 有很多玩家在玩游戏时&#xff0c;游戏设置方面默认的偏多&#xff0c;其中就有击中敌人时&#xff0c;血雾颜色呈暗绿色&#xff0c;导致抽靶时不好判断是否击中敌人。 在补枪方面也有很大影响&#xff0c;尤其在植被茂密的地形中。 你看得出来被击…

EPSON RA8000CE (RTC模块)压电侠

RA8000CE是一个集成了32.768 kHz数字温度补偿晶体振荡器(DTCXO)的RTC模块。它包括各种功能&#xff0c;如具有闰年校正的秒到年时钟/日历&#xff0c;时间警报&#xff0c;唤醒计时器&#xff0c;时间更新中断&#xff0c;时钟输出和时间戳功能&#xff0c;可以在外部或内部事件…

【Photoshop2020版本】零基础笔记(一)

哈喽大家好~最近博客内容换方向了哈哈哈~换成“实用版”了。 今天给大家带来的是 PS 相关内容 其实我也是刚学PS&#xff0c;所以想着自己做笔记还不如发布出去&#xff0c;让大家都能看到&#xff0c;有兴趣的伙伴们&#xff0c;可以跟着我的笔记一块学习&#xff0c;这个专…

出现身份验证错误,无法连接到本地安全机构 顺利解决这个问题希望能帮助大家

出现身份验证错误&#xff0c;无法连接到本地安全机构&#xff0c;远程计算机&#xff1a;XX&#xff0c;这可能是由于密码过期&#xff0c;如果密码已过期请更新密码。 我们可以在系统属性中对远程进行设置&#xff0c;以解决远程桌面无法连接到本地安全机构这一问题。 步骤…

HTML常用的五种标签,太棒了

form表单细节 一、表单 1.表单 标签用于为用户输入创建 HTML 表单 2.表单能够包含 input 元素&#xff0c;比如文本字段、复选框、单选框、提交按钮等等。 3.表单还可以包含 menus、textarea、fieldset、legend 和 label 元素。 4.表单用于向服务器传输数据。 二、表单form 的…

大语言模型在科技研发与创新中的角色在快速变化

在技术研发与创新中&#xff0c;比如在软件开发、编程工具、科技论文撰写等方面&#xff0c;大语言模型可以辅助工程师和技术专家进行快速的知识检索、代码生成、技术文档编写等工作。在当今的软件工程和研发领域&#xff0c;尤其是随着大语言模型技术的快速发展&#xff0c;它…

算法46:动态规划专练(力扣198: 打家劫舍 力扣740:删除并获取点数)

打家劫舍问题&#xff1a; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定…

flutter框架优缺点,最新Android大厂高频面试题

部分面试常问的面试专题 一、Java篇 1.多线程并发&#xff1b; sleep 和 wait 区别join 的用法线程同步&#xff1a;synchronized 关键字等线程通信线程池手写死锁 2.Java 中的引用方式&#xff0c;及各自的使用场景 3.HashMap 的源码 4.GC(垃圾回收)是什么&#xff1f;如何…

运维随录实战(8)之搭建数据库

docker搭建mysql5.7 如果出现no matching manifest for windows/amd64 10.0.18363 in the manifest list entries错误,则将docker desktop的settings->Docker Engine中的experimental值设为true。 touch : 无法将“touch”项识别为 cmdlet、函数、脚本文件或可运行程序的…

is not valid JSON at JSON.parse

在后台读取一个文件里的JSON数据&#xff0c;转换成字符串返回给前端&#xff0c;前端使用JSON.parse转换JSON报错。在将JSON校验和压缩后发现前端还是转换失败。在返回结果的时候可以看见一个小红点 最后排查&#xff0c;不带BOM的识别是Java遗留的一个bug。 解决方案&#…

【排序】详解插入排序

一、思想 插入排序是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。具体步骤如下&#xff0c;将数组下标为0的元素视为已经排序的部分&#xff0c;从1开始遍历数组&#xff0c;在遍历的过程中当前元素从…

CSS的文本样式属性值,web前端开发规范

正文 介绍下半连接队列 服务器第一次接收到客户端的SYN后&#xff0c;会处于SYN-REVD阶段&#xff0c;此时双方还没有建立完全的连接&#xff0c; 服务器会把此种状态下请求连接放在一个队列里&#xff0c;我们把这种队列称为半连接队列 已经完成三次握手并建立连接&#xff…

springboot+xjar加密打包部署教程

需求背景 为了跟上时代的步伐&#xff0c;为了更好的生存。开个玩笑&#xff0c;就是心血来潮&#xff0c;使用xjar加密部署jar包&#xff0c;于是就测试一下。 xjar教程 1-maven配置文件修改 首先找到自己ideal配置的maven文件夹&#xff0c;然后找到apache-maven-3.9.3\co…

「爬虫职海录」三镇爬虫

HI&#xff0c;朋友们好 「爬虫职海录」第三期更新啦&#xff01; 本栏目的内容方向会以爬虫相关的“岗位分析”和“职场访谈”为主&#xff0c;方便大家了解一下当下的市场行情。 本栏目持续更新&#xff0c;暂定收集国内主要城市的爬虫岗位相关招聘信息&#xff0c;有求职…

uniapp微信小程序获取当前位置

uni-app微信小程序uni.getLocation获取位置&#xff1b;authorize scope.userLocation需要在app.json中声明permission&#xff1b;小程序用户拒绝授权后重新授权-CSDN博客

HTML实体字符列表,知识点详解

css盒模型 1&#xff0c;css盒模型基本概念&#xff1f; 2&#xff0c;标准模型和IE模型的区别&#xff1a;计算高度和宽度的不同&#xff0c;怎么不同&#xff0c;高度宽度是怎么计算的&#xff1f; 3&#xff0c;css如何设置这两种模型&#xff1f; 4&#xff0c;js如何设置…

uniapp实现---类似购物车全选

目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 四、小结 注意事项 一、实现思路 点击商家复选框&#xff0c;可选中当前商家下的所有商品。点击全选&#xff0c;选中全部商家的商品 添加单个多选框&#xff0c;在将多选…

javaWebssh题库管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh题库管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Mye…

第七篇:人工智能与机器学习技术VS量测(Measurement)- 我为什么要翻译介绍美国人工智能科技巨头IAB公司 - 它是如何赋能数字化营销生态的?

IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;自1996年成立以来&#xff0c;先后为700多家媒…