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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Operation学习------SVN/RPM打包相关的知识,希望对你有一定的参考价值。

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

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

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

1.8多人协同:
环境:在不同客户端不同用户登录的操作
1、修改不同文件
[[email protected] code]# svn update
[[email protected] 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后会在目录下多出好几个版本,删除不要的,然后再上传

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

2、RPM包
1).rpm 是压缩包(源码安装后的目录)
2).rpm包含一些描述信息
2.1实现步骤:
1)安装rpm-build软件包
[[email protected] ~]# yum -y install rpm-build
2)生成rpmbuild目录结构
[[email protected] ~]# rpmbuild -ba xx.spec #生成rpmbuild目录以及子目录
[[email protected] ~]# ls rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
SOURCES:存放源码包的目录
SPECS:配置文件(基本信息,源码安装)
BUILDROOT:假根(对于rpmbuild这个软件,装包装在这个根下,不影响真实根)
RPMS:成品的位置,RPM包
3)准备工作,将源码软件复制到SOURCES目录
nginx的源码包为例:
[[email protected] ~]# cp lnmp_soft/nginx-1.8.0.tar.gz /root/rpmbuild/SOURCES/
4)创建并修改SPEC配置文件
[[email protected] ~]# 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)安装依赖关系以及打包
[[email protected] ~]# yum -y install gcc pcre-devel zlib-devel
openssl-devel(http_ssl_module)需要装这个
[[email protected] ~]# cd rpmbuild/
[[email protected] rpmbuild]# rpmbuild -ba SPECS/nginx.spec
[[email protected] ~]# 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打包的主要内容,如果未能解决你的问题,请参考以下文章

Linux Operation学习------Nginx

Linux Operation学习------Nginx

Linux Operation学习------Squid/Varnish

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

linux学习记录-----vsftpd文件上传(550 create directory operation failed)

sv零星知识点