Linux Operation学习------SVN/RPM打包

1、Subversion基本操作
是一个自由/开源的版本控制系统(SVN)
多人协作文档并跟踪所做的修改
1.1基本概念:
版本库:是版本控制的核心;任意数量客户端;客户端通过写数据库分享代码
Subversion特点:记录每一次改变
1.2版本模型
版本控制系统的核心任务是协作编辑和数据共享

1.3搭建subversion服务
[root@Web1 ~]# yum -y install subversion #装包
[root@Web1 ~]# mkdir /var/svn
[root@Web1 ~]# svnadmin create /var/svn/project #创建共享目录
[root@Web1 ~]# ls /var/svn/project
conf db format hooks locks README.txt
[root@Web1 system]# cd /usr/lib/systemd/system
#导入数据(实验以此路径作为数据导入)
[root@Web1 system]# svn import . file:///var/svn/project/ -m "First Code"
#-m “注释”
[root@Web1 ~]# svn list file:///var/svn/project #查看共享目录内的内容
[root@Web1 ~]# cd /var/svn/project/ #这样是看不到的
1.4修改配置文件
[root@Web1 ~]# vim /var/svn/project/conf/svnserve.conf
19 anon-access = none #匿名无任何权限
20 auth-access = write #输入密码的账户(有效账户)可读写
27 password-db = passwd #密码文件
34 authz-db = authz #ACL访问控制列表文件
[root@Web1 ~]# vim /var/svn/project/conf/passwd #用户名,密码文件
[root@Web1 ~]# vim /var/svn/project/conf/authz #针对每个文件做权限
[/] #定义ACL访问控制 = rw #所有人可以对共享目录rw
[/test] #对/test定义 tom = rw #tom 可rw harry = r #harry可r
[/abc]
= #所有人不可以
对于本案例:[/] tom = rw harry = rw
1.5启动服务(2种方法)
[root@web1 ~]# svnserve -d -r /var/svn/project/ #指定一个目录共享出去 -d放后台
[root@web1 ~]# systemctl start svnserve #所有目录都共享出去
1.6客户端测试
[root@web2 ~]# cd /tmp
[root@web2 tmp]# svn co --username tom --password 123456 svn://192.168.2.100/
code #co : checkout(检查下载) 用户名 密码 从哪下载 存的目录(自动创建本地副本)
[root@web2 code]# vim user.slice #在目录code下随便修改一个文件
[root@web2 code]# svn ci -m "code2" #改完之后上传 ci (comit)
此时服务器端所保存的文件有2个版本
1.7其他命令
[root@web2 code]#svn update #更新数据
[root@web2 ~]# svn info svn://192.168.2.100 #查看版本仓库信息
[root@web2 ~]# svn log svn://192.168.2.100 #查看版本修改历史
add命令
写两个脚本test.sh test1.sh
[root@web2 ~]# cd /tmp/code #需要在本地副本内操作
[root@web2 code]#svn add +文件名 #本地版本库添加新文件
当前位置必须是下载文件的位置操作,新加的文件也需要放在该目录下
[root@web2 code]# svn list svn://192.168.2.100 | grep test #添加的test.sh并没有找到
[root@web2 code]# svn ci -m "add test"
[root@web2 code]# svn list svn://192.168.2.100 | grep test
test.sh
test1.sh
mkdir命令
[root@web2 ~]#svn mkdir +目录
[root@web2 code]# svn mkdir test
[root@Web2 code]# cd test
[root@web2 test]# echo "add test file" > abc.txt
[root@Web2 test]# svn add abc.txt
[root@web2 test]# svn ci -m "mkdir and add file"
del命令
[root@web2 ~]#svn del +文件
#不会自动提交到版本库,本地已删除,服务器上还存在,需要svn ci -m
[root@web2 code]# svn ci -m "del test.sh" #真正在库内删除
list命令
[root@web2 ~]#svn list svn://192.168.2.100 #文件列表
[root@web2 ~]#svn mv/cp/rm
[root@web2 code]#svn diff #本地副本库和服务器中文件对比

两种修改副本情况
1、本地修改,未提交
[root@web2 code]# vim zram.service #本地删除里面数据
[root@web2 code]# svn revert zram.service #数据恢复
已恢复“zram.service”
revert 本地副本修改后,但未ci提交,可以数据恢复
2、本地修改,提交
[root@web2 code]# svn merge -r7:5 zram.service #将7版本还原为5版本
[root@web2 tmp]# svn -r1 co svn://192.168.2.100 code2
取出第一个版本放在code2中

1.8多人协同:
环境:在不同客户端不同用户登录的操作
1、修改不同文件
[root@Web1 code]# svn update
[root@Web2 code]# svn update
#两台保持相同内容
Web1修改一个文件,并上传 版本更新+1
Web2修改另一个文件,上传,版本更新+2
此时web1修改的web2没有修改,web2修改的web1没有修改
分别svn update 两边版本相同,相对原来+2
2、修改相同文件的不同内容
Web1修改一个文件,并上传 版本更新+1
Web2修改同一个文件,上传,提示过期,svn update 版本更新+1(修改的地方没有被覆盖!!),并上传 版本更新+1 (共+2)
Web1 svn update 版本更新+1
3、修改相同文件的相同内容(冲突,认为解决)
Web1修改一个文件,并上传 版本更新+1
Web2修改同一个文件,上传,提示过期,svn update,提示:在 “/tmp/code/user.slice”中发现冲突。
选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,
(mc) 我的版本, (tc) 他人的版本,
(s) 显示全部选项:
选p后会在目录下多出好几个版本,删除不要的,然后再上传

[root@Web1 code]# svnadmin dump /var/svn/project/ > my.bak #所有版本都进行了备份
[root@Web1 code]# svnadmin load /var/svn/project2/ < my.bak #还原

2、RPM包
1).rpm 是压缩包(源码安装后的目录)
2).rpm包含一些描述信息
2.1实现步骤:
1)安装rpm-build软件包
[root@web1 ~]# yum -y install rpm-build
2)生成rpmbuild目录结构
[root@web1 ~]# rpmbuild -ba xx.spec #生成rpmbuild目录以及子目录
[root@web1 ~]# ls rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
SOURCES:存放源码包的目录
SPECS:配置文件(基本信息,源码安装)
BUILDROOT:假根(对于rpmbuild这个软件,装包装在这个根下,不影响真实根)
RPMS:成品的位置,RPM包
3)准备工作,将源码软件复制到SOURCES目录
以nginx的源码包为例:
[root@web1 ~]# cp lnmp_soft/nginx-1.8.0.tar.gz /root/rpmbuild/SOURCES/
4)创建并修改SPEC配置文件
[root@web1 ~]# vim rpmbuild/SPECS/nginx.spec
填写软件信息
License:GPL #此软件定义为开源
%prep #源码包解包,并cd进去
%setup -q

%build #配置编译
%configure #模块化配置,可替换为./configure --with-http_ssl_module
make %{?_smp_mflags}

%files
%doc
/usr/local/nginx/* #将该路径下所有打包
5)安装依赖关系以及打包
[root@Web1 ~]# yum -y install gcc pcre-devel zlib-devel
openssl-devel(http_ssl_module)需要装这个
[root@web01 ~]# cd rpmbuild/
[root@web01 rpmbuild]# rpmbuild -ba SPECS/nginx.spec
[root@web01 ~]# ls rpmbuild/RPMS/x86_64/
nginx-1.8.0-40.x86_64.rpm nginx-debuginfo-1.8.0-40.x86_64.rpm
6)可以使用自定义yum仓库安装

转载于:https://blog.51cto.com/13452945/2060177

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值