svn基础,rpm打包

Subversion

  • subversion是一个自由/开源的版本控制系统
  • 在subversion管理下,文件和目录可以超越时空
  • subversion允许你的数据恢复到早期版本
  • 或者是检查数据修改的历史
  • 许多人将版本控制系统当作一种神奇的“时间机器”
  • 允许你和别人协作文档并跟踪所做的修改
  • svn 的默认端口是3690
  • squid默认监听的端口号3128

############################

Subversion是一个自由开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”

Subversion基本操作

本案例要求先快速搭建好一台Subversion服务器,并测试该版本控制软件:

  • 创建版本库
  • 导入初始化数据
  • 检出数据至用户本地副本
  • 对本地副本进行增删改查等操作

使用YUM安装subversion软件,使用svn客户端工具连接svnserver服务器并测试版本控制软件

步骤一:安装Subversion服务器

1)YUM安装subversion软件

[ root@web1 ~]# yum -y install subversion

[ root@web1 ~]# rpm -q subversion

2)创建版本库

# mkdir /var/svn/

# svnadmin create /var/svn/project //创建仓库名为project

# ls /var/svn/project/

3)本地导入初始化数据

# cd /usr/lib/systemd/system/

# svn import . file:///var/svn/project/ -m "lnit data" // . 当前目录,-m 后随便写

4)修改配置文件,创建账户与密码

# vim /var/svn/project/conf/svnserve.conf //去注释顶格

[ general]

19行 anon-access = none

20行 auth-access = write

27行 password-db = passwd

34行 authz-db = authz

//设置拒绝匿名账户访问,可设为none,read,write

//经过认证的账户权限为可写权限

//账户名与密码的存放文件名,该文件在conf目录下

//基于路径的访问控制文件名(可以对文件或目录设置权限)

 

# vim /var/svn/project/conf/passwd

[users]

harry = 123456 //用户名和密码

tom = 123456 //用户名和密码

 

# vim /var/svn/project/conf/authz //在最后追加写入

[/] //定义ACL访问控制

harry = rw //用户对项目根路径可读可写

tom = rw

* = r //其他人只读

5)启动服务

# svnserve -d -r /var/svn/project/ //只共享一个仓库

# systemctl start svnserve //共享所有仓库

# svnserve -d

# netstat -nutlp | grep svnserve

步骤二:客户端测试(192.168.2.200)

1)将服务器上的代码下载到本地

[ root@web2 ~]# cd /tmp

# svn --username harry --password 123456 co svn://192.168.2.100/ code

//建立本地副本,从服务器192.168.2.100上co下载代码到本地code目录

//用户名harry ,密码123456

# cd /tmp/code

# ls

# vim user.slice //挑选任意文件修改其内容

# svn ci -m "modify user" //将本地修改的数据同步到服务器

# svn update //将服务器上新的数据同步到本地

# svn info svn://192.168.2.100 //查看版本仓库基本信息

# svn log svn://192.168.2.100 //查看版本仓库的日志

# echo "test" > test.sh //本地新建一个文件

# svn ci -m "new file" //提交失败,该文件不被svn管理

# svn add test.sh //将文件或目录加入版本控制

# svn ci -m "new file" //再次提交,成功

# svn mkdir subdir //创建子目录

# svn rm timers.target //使用svn删除文件

# svn ci -m "xxx" //提交一次代码

# vim umount.target //任意修改本地的一个文件

# svn diff //查看所有文件的差异

# svn diff umount.target //仅查看某一个文件的差异

# svn cat svn: //192.168.2.100/reboot.target //查看服务器文件的内容

# sed -i 'd' tmp.mount //删除文件所有内容,但未提交

# svn revert tmp.mount //还原tmp.mount文件

# rm - rf *.target //任意删除若干文件

# svn update //还原

# sed - i '1a #test###' tuned.service //修改本地副本中的代码文件

# svn ci - m "xxx" //提交代码

# svn merge - r7: 2 tuned.service //将文件从版本7还原到版本2

##############################

使用svn命令测试svnserver服务时可以使用的命令列表如表-1所示

命令

作用

add

添加文件

commit(ci)

提交更新

checkout(co)

检出代码

cat

查看代码文件内容

del

删除文件

diff

文件对比

import

导入代码

info

查看版本信息

list

查看文件列表

log

查看版本历史

update

更新

mkdir

创建目录

##################################

使用Subversion协同工作

沿用练习一,通过svn工具,对subversion版本库进行多人协同工作测试,要求如下:

  • 该版本库支持多个账户同时协作编辑文件
  • 测试演示多人协作编辑的具体操作
  • 手动解决版本冲突问题
  • 备份版本库数据
  • 注册使用Github

使用svn客户端工具连接subversion服务器并测试多人协同工作以及如何手动解决冲突问题,账户名称分别为harry和tom,最后使用svnadmin dump指令对版本库进行备份工作。

步骤一:多人协同工作

1)远程连接两个终端,每个人下载代码本地副本,注意web1(192.168.2.100)和web2(192.168.2.200)代表了两个不同的主机,看清楚操作是在哪一台计算机上执行!

[ root@web1 ~] # cd /tmp

[ root@web1 ~] # svn - - username tom - - password 123456 co svn: //192.168.2.100/project my code

[ root@web2 ~] # cd /tmp

[ root@web2 ~] # svn - - username harry - - password 123456 co svn: //192.168.2.100/project my code

[ root@web1 ~] # cd my code

[ root@web2 ~] # cd my code

2) harry和tom修改不同的文件

[ root@web1 my code] # sed - i "3a ###harry modify #####" tmp.mount

[ root@web1 my code] # svn ci - m "has modified"

[ root@web2 my code] # sed - i "3a ###tom modify #####" umount.target

[ root@web2 my code] # svn ci - m "has modified"

[ root@web2 my code] # svn update

[ root@web1 my code] # svn update

3)harry和tom修改相同文件的不同行

[ root@srv 5 ~] # cd harry

[ root@web1 my code] # sed - i "3a ###harry modify #####" user.slice

[ root@web1 my code] # svn ci - m "modified"

[ root@web2 my code] # sed - i "6a ###tom modify #####" user.slice

[ root@web2 my code] # svn ci - m "modified" //提交失败

[ root@web2 my code] # svn update //提示失败后,先更新再提交即可

[ root@web2 my code] # svn ci - m "modified" //提交成功

4) harry和tom修改相同文件的相同行

[ root@web1 my code] # sed - i '1c [ UNIT] ' tuned.service

[ root@web1 my code] # svn ci - m "modified"

[ root@web2 my code] # sed - i '1c [ unit] ' tuned.service

[ root@web2 my code] # svn ci - m "modified"

[ root@web2 my code] # svn update //出现冲突,需要解决

[ root@web2 my code] # ls

[ root@web2 my code] # mv tuned.service.mine tuned.service

[ root@web2 my code] # rm - rf tuned.service.r10 tuned.service.r9

[ root@web2 my code] # svn ci - m "modified" //解决冲突

步骤二:使用dump指令备份版本库数据

[ root@web1 ~] # svnadmin dump /var/svn/project > project.bak //备份

[ root@web1 ~] # svnadmin create /var/svn/project2 //新建空仓库

[ root@web1 ~] # svnadmin load /var/svn/project2 < project.bak //还原

步骤三:注册使用Github

1.登陆网站https://github.com,点击Sign up(注册)

2.填写注册信息(用户名,邮箱,密码),如图-2所示。

 

3. 初始化操作,如图-3和图-4所示

 

注意,初始化完成后,到邮箱中去激活Github账户

4. 创建仓库、使用仓库

点击Start a project(如图-5所示)

 

填写项目名称(项目名称任意),如图-6所示。

 

往仓库中上传文件或新建文件,如图-7所示

 

下载仓库中的代码,如图-8所示。

 

5. 命令行操作(需要联网的主机,如真实机)

[root@pc001 ~]# yum -y install git

[root@pc001 ~]# git clone https://github.com/账户名称/仓库名称

//clone指令用于将服务器仓库中的资料打包下载到本地

[root@pc001 ~]# cd 仓库名称

[root@pc001 ~]# 任意修改文件,或新建文件

[root@pc001 ~]# git add . //add添加新文件

[root@pc001 ~]# git commit -m "test"

[root@pc001 ~]# git push //commit和push实现提交代码的功能

[root@pc001 ~]# git pull //pull更新,类似于svn update

#############################

制作nginx的RPM包

本案例使用nginx-1.12.2版本的源码软件,生成对应的RPM包软件,具体要求如下:

  • 软件名称为nginx
  • 软件版本为1.12.2
  • RPM软件包可以查询描述信息
  • RPM软件包可以安装及卸载

 

步骤一:安装rpm-build软件

1)安装rpm-build软件包

[ root@web1 ~] # yum - y install rpm- build

2)生成rpmbuild目录结构

# rpmbuild - ba nginx.spec //会报错,没有文件或目录

# ls /root/rpmbuild //自动生成的目录结构

BUILD BUILDROOT RPMS SOURCES SPECS SERPMS

3)准备工作,将源码软件复制到SOURCES目录

# cp nginx- 1.12.2.tar.gz /root/rpmbuild/SOURCES/

4)创建并修改SPEC配置文件

# vim /root/rpmbuild/SPECS/nginx.spec

Name: nginx

Version: 1.12.2

Release:10

Summary : Nginx is a web server software. //描述信息

#Group:

License:GPL //协议

URL:www.test.com

Source0:nginx- 1.12.2.tar.gz

#BuildRequires:

#Requires:

%description //详细信息

nginx [ engine x] is an HTTP and reverse proxy server.

%prep

%setup -q //自动解压源码包,并cd进入目录

%build

./configure

make %{?_smp_mflags}

 

%install

make install DESTDIR=%{buildroot}

#cp /root/rpmbuild/SPECS/nginx.sh %{ buildroot} /usr/local/nginx/

//注意,cp非必须操作,注意,这里是将一个脚本拷贝到安装目录,必须提前准备该文件

%files

%doc

/usr/local/nginx/* //对哪些文件与目录打包

%changelog

步骤二:使用配置文件创建RPM包

1)安装依赖软件包

# yum - y install gcc pcre-devel zlib-devel openssl-devel

2)rpmbuild创建RPM软件包

# rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec

# ls /root/rpmbuild/RPMS/x86_64/nginx-1.12.2-10.x86_64.rpm

# rpm -qpi RPMS/x86_64/nginx-1.12.2-10.x86_64.rpm

# rpm -qpl nginx- 1.12.2- 10.x86_64.rpm

步骤三:安装、卸载软件

# rpm - ivh RPMS/x86_64/nginx- 1.12.2- 10.x86_64.rpm

# rpm - qa | grep nginx

# /usr/local/nginx/sbin/nginx

# curl http: //127.0.0.1/

################################

svn版本控制(文件编辑,会产生很多版本)

配置文件,shell,php,java,html,ppt

ppt--->svn--->nginx[web]

核心是要有版本仓库(共享目录)

subversion

# mkdir /var/svn

# svnadmin create /var/svn/abc

# svn import 当前目录 file:///var/svn/project

# cd /var/svn/projict/conf

svnserve.conf passwd authz

# svnserve -d -r /var/svn/project/ //只共享一个仓库

#############################

svn co 下载

svn ci 上传

svn update 更新本地数据

svn info 查看版本信息

svn log 查看版本历史

svn add 增加文件

svn mkdir 创建目录

svn mv 移动

svn cp 复制

svn revert

svn merge

svn -r1 co

svn -r3 cat svn://192.168.2.100/a.txt

########################

rpm压缩

rpm-build

rpmbuild -ba xx.spec

/root/

BUTLD,BUTLDROOT,RPMS,SOURCES,SPECS,SRPMS

cp 源码 SOURCES/nginx-1.12.2.tar.gz

vim SPECES/nginx.spec

name:nginx

version:1.12.2

release:

sources0:nginx-1.12.2.tar.gz

summary:

description:

 

%pre

%setup -q

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值