码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-01-12 14:16:52      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:访问控制   代码   sub   source   脚本   dd命令   数据导入   svn add   结构   

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仓库安装

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

标签:访问控制   代码   sub   source   脚本   dd命令   数据导入   svn add   结构   

原文地址:http://blog.51cto.com/13452945/2060177

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!