subversion(版本控制),RPM打包

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

subversion:

简介:

subversion是一个自由/开源的版本控制系统

-->subversion允许你的数据恢复到早期版本

-->或者是检查数据修改的历史

架构:

客户端—命令行,图形

通信方式—本地访问,svn服务器,web服务器

仓库存储—文件系统(FSFS),数据库(Berkeley DB)

基本概念:

典型的客户/服务器系统

--》版本库是版本控制的核心

--》任意数量的客户端

--》客户端通过写数据库分享代码

subversion特点

--》记录每一次改变

版本模型:

版本控制系统的核心任务是协作编辑和数据共享

文件共享的问题

--》如何允许用户共享信息

--》防止版本库数据被别人意外覆盖

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

服务端(192.168.4.1):

安装:

#yum -y install subversion

创建版本库:

#mkdir /var/svn

#svnadmin create /var/svn/project1

导入项目代码:

#svn import /etc/rc.d/init.d/ file:///var/svn/project1/ -m 'Init Data'  //-m 添加说明性字符串(相当于日志)

认证与授权:

#vim /var/svn/project1/conf/svnserver.conf

anon-access = none

//设置拒绝匿名访问,此处可以设置为none、read、write

auth-access = write

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

passwd-db = passwd

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

authz-db = authz

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

在passwd文件中设置账户信息:

#vim /var/svn/project1/conf/passwd

[users]

tom = tom123

jerry = jerry123 //用户名jerry密码jerry123

在authz文件在中设置访问控制权限:

#vim /var/svn/project1/conf/authz

[groups]

tom_and_jerry=tom,jerry //定义组账户,组成员tom和jerry

[/]

@tom_and_jerry = rw

* = r

//tom和jerry由读写权限,其他人只有读权限

启动服务:

#systemctl start svnserver

#systemctl enable svnserver

#netstat -lnpt | grep :3690

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

客户端测试:

1、客户端下载svn服务器上的项目文件

#cd /opt

#svn --username tom --password tom123 checkout  svn://192.168.4.1/project1 code1

//以tom身份下载服务端版本库文件到本地,命名为code1

#cd code1/

#svn log //查看日志信息

2、更新本地工作副本

#svn update

3.新建文件测试:

vim foo.sh

#!/bin/bash

if [ "$1" == "foo" ]; then

echo "bar"

elif [ "$1" == "bar" ]; then

echo "foo"

else

echo "$0 foo|bar"

fi

#svn add foo.sh //将foo.sh加入svn本地管理

#svn diff //显示服务器与本地的区别

将本地工作副本同步到服务器:

#svn commit -m "Add foo.sh to project1"

4、新建目录

# svn mkdir subdir

# svn status   #查看状态

5、删除文件

# rm cups.service   # 本地删除

# svn update        # cups.service将重新下载

# svn delete cups.service  # 在svn中删除文件

# svn status

# svn move foo.sh bar.sh  # 在svn中改名

# svn commit -m "rename foo.sh, del cups.service, mkdir subdir"

6、练习

# sed -i '1a###test###' sshd.service

# sed -i '2a###mytest###' sshd.service

# svn diff sshd.service //仅查看sshd.service中改变的内容

# svn diff

# svn log svn://192.168.4.1/project

# svn commit -m "modify sshd.service"

7、将sshd.service回退到增加两行之前的状态

# svn merge -r4:2 sshd.service //4指当前版本,2指要回到的版本

# vim sshd.service  第六步新增的两行消失

8、将svn的第2版本的文件全部下载下来,叫做code2

# svn co -r2 svn://192.168.4.1/project code2

多人协作

1、tom和jerry分别下载了svn上面的项目

# cd /opt/

# svn co --username tom --password tom123 svn://192.168.4.1/project tom

# svn ls --username tom --password tom123 svn://192.168.4.1/project

# cd /var/tmp/

# svn co --username jerry --password jerry123 svn://192.168.4.1/project jerry

2、不同用户修改不同文件

# cd tom/

# sed -i '3a#####my test####' vmtoolsd.service

# svn commit -m "tom modify vmtoolsd.service"

# cd jerry/

# sed -i '3a#####jerry test####' sshd.service

# svn commit -m "jerry modify sshd.service"

# svn update  #tom修改的vmtoolsd.service同步到本地

# svn update

//修改完只需要同步到服务器

3、不同用户改变相同文件的不同行

# sed -i '1a####tom modify###' user.slice

# svn commit -m "tom modify slice.user"

# sed -i '$a###jerry modify###' user.slice

# svn commit -m "jerry modify user.slice"  #失败,因为文件过时了(本地版本号低于服务器上的版本号)

# svn update  #更新到最新版本

# svn commit -m "jerry modify user.slice"  #重新提交

# vim user.slice  # tom和jerry的修改全部存在

//后修改需要先svn update与服务器版本号一致,才可上传

4、不同用户改变相同文件的相同行

# sed -i '8c#####tom tom tom####' zram.service

# svn commit -m "tom modify zram.service"

# sed -i '8c####jerry jerry####' zram.service

# svn commit -m "jerry modify zram.service"

# svn update    //选择p

//postpone 标记冲突,稍后解决

//df 对比不同

//edit 直接修改文件,修改后选择r

//mine-conflict 冲突以本地为主

//theirs-conflict 冲突以服务器为准

# ls zram.service*

# mv zram.service.mine zram.service //将自己的版本设置为服务器的版本

# ls zram.service*

# rm -f zram.service.r*

# ls zram.service*

# svn commit -m "jerry modify zram.service"

//需要通过选择手动解决冲突

5、svn服务器端备份

# svnadmin dump /var/svn/project/ > /var/tmp/project.bak

6、还原

# rm -rf /var/svn/project/

# ls /var/svn/

# svnadmin create /var/svn/project/

# svnadmin load /var/svn/project/ < /var/tmp/project.bak

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

RPM打包:

流程:

--》准备源码包

--》安装rpm-build

--》编写编译配置文件

--》编译RPM包

1.源码包

nginx-1.8.0.tar.gz

2.安装编译打包RPM的工具:

#yum -y install rpm-build

3.生成工作目录:

#vim nginx.spec //直接存盘退出

#rpmbuild -ba nginx.spec //出现任何错误,忽略,运行完后,生成了rpmbuild目录

4、把素材放到正确目录

# mv nginx-1.8.0.tar.gz rpmbuild/SOURCES/

# mv nginx.s* rpmbuild/SPECS/

5、修改说明文件

# vim rpmbuild/SPECS/nginx.spec

Name: nginx //软件名称

Version: 1.8.0 //版本信息

Release: 1%{?dist} //RPM版本

Summary: nginx high performance web server //描述

Group: application/web server //软件组

License: GPL //协议

URL: http://www.tedu.cn //网址

Source0:nginx-1.8.0.tar.gz //源码文件

BuildRequires: gcc pcre-devel openssl-devel zlib-devel //编译时的依赖包

Requires: pcre openssl zlib //安装时的依赖包

%description

nginx high performance web server compiled  by dcc //详细描述

%prep //安装前准备,解压

%setup -q //系统使用setup-q,安静模式

%build //编译时需要执行的命令

./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_ssl_module

make %{?_smp_mflags}

%install //安装是需要执行的指令

make install DESTDIR=%{buildroot} //实现systemctl启动

mkdir -p %{buildroot}/usr/lib/systemd/system

install /root/rpmbuild/SPECS/nginx.service %{buildroot}/usr/lib/systemd/system

%files //定义打包文件列表

%doc

/usr/local/nginx/*

/usr/lib/systemd/system/nginx.service

%pre //预先创建普通用户nginx

useradd -s /sbin/nologin nginx

%changelog //软件修改历史

6、安装依赖包

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

7、生成rpm包

# rpmbuild -ba rpmbuild/SPECS/nginx.spec

8、验证

# ls rpmbuild/RPMS/x86_64/

# rpm -q nginx

# rpm -ihv rpmbuild/RPMS/x86_64/nginx-1.8.0-1.el7.x86_64.rpm

# rpm -q nginx

# yum info nginx

# systemctl start nginx.service

# systemctl status nginx.service

时间: 2024-10-02 03:44:41

subversion(版本控制),RPM打包的相关文章

困扰一天的rpm打包问题

rpm打包我们经常会遇到,通过直接拷贝的方式达来打包的情况.但是发现打包的时候并不是想象中的那么顺利,比如你会遇到这种情况: 通常遇上上面的警告之后,你还是能打包完成的.但是你会发现打包完成的rpm包很不正常的,无论从大小和安装方面都不行.holy shit!,我只是简单的拷贝啊.我们的rpmbuild代码也很简单: # Disable the stupid stuff rpm distros include in the build process by default: #   Disabl

Centos6_64 rpm打包实践

安装rpmbuild sudo yum install rpm-build 普通用户的配置 /home/you/rpmbuild/ 假设是要构建rpm的目录 先说说rpmbuild有什么用,给一个例子: echo "%  _topdir/home/you/rpmbuild" > ~/.rpmmacros mkdir -p /home/you/rpmbuild/{SPECS,BUILD,SRPMS,RPMS,SOURCES} /usr/lib/rpm/macros 中配置可以更改具

使用spec与fpm 2种方式进行rpm打包

最近分享zabbix与ansible好多,大家看烦了,我也没啥存货了,现在就介绍一下如何进行rpm打包吧. rpm打包有2个,一个是自己写spec,另外要给是使用ruby的fpm,我个人比较倾向于第二种fpm,这个不需要写spec文件,特简单,不过为了让大家看明白,我分别介绍一下这2款软件是如何进行rpm打包的. 目录 一.使用spec构建rpm 二.使用fpm构建rpm 一.使用spec构建rpm 在构架rpm包的时候,需要经过3个过程 1.解压源码包 2.编译环境configure 3.ma

SubVersion版本控制

源自<Linux 运维之道>丁一明编著 一书的总结 三种访问方式 功能 Apache+DAV Svnserve Svnserve+SSH 认证 http基本认证.LDAP 支持md5 Ssh认证 权限 对版本整体设置,也可以指定设置权限 客队版本整体设置权限,也可以指定目录 仅对版本库整体设置权限 加密 支持ssl加密 无 支持ssh加密 日志 完善的apache日志 无 无 速度 慢 快 快 设置 相对复杂 简单 相对简单 安装: [[email protected] tcpcliserv]

openstack RPM打包

背景: 常见的Linux发行版主要可以分为两类,类ReadHat系列和类Debian系列,这里我们是以其软件包的格式来划分的,这两类系统分别提供了自己的软件包管理系统和相应的工具.类RedHat系统中软件包的后缀是rpm:类Debian系统中软件包的后缀是deb.另一方面,类RedHat系统提供了同名的rpm命令来安装.卸载.升级rpm软件包:类Debian系统同样提供了dpkg命令来对后缀是deb的软件包进行安装.卸载和升级等操作. rpm的全称是Redhat Package Manager,

使用rpm 打包开发的postgres extension

环境准备 安装依赖包 rpmdevtools rpm-build yum install -y rpm-build rpmdevtools 初始化rpm pacakge 项目 主要是rpm 打包的目录结构 使用rpmdev-setuptree 工具 效果如下: ── rpmbuild ├── BUILD ├── RPMS ├── SOURCES ├── SPECS └── SRPMS 创建简单pg extension 扩展 具体实现的功能很简单,可以参考github 项目https://gith

版本控制 SVN基础 实战案例 、 RPM打包

案例1:Subversion基本操作案例2:使用Subversion协同工作案例3:制作nginx的RPM包1 案例1:Subversion基本操作1.1 问题 本案例要求先快速搭建好一台Subversion服务器,并测试该版本控制软件:创建版本库导入初始化数据检出数据至用户本地副本对本地副本进行增删改查等操作1.2 方案 使用YUM安装subversion软件,使用svn客户端工具连接svnserver服务器并测试版本控制软件.1.3 步骤 实现此案例需要按照如下步骤进行.步骤一:安装Subv

以打包fuse为例介绍rpm打包工具rpmbuild的使用和SPEC文件的编写

一.rpmbuild命令的安装 yum install rpm-build 二.用法 rpmbuild -bb XXXX.spec或者rpmbuild -ba XXX.tar.gz 三.目录概述 rpmbuild在运行后会在用户目录下生成一个rpmbuild的文件夹:[[email protected] rpmbuild]# ls ~/rpmbuild/BUILD BUILDROOT RPMS SOURCES SPECS SRPMS有四个目录:BUILD:你要打包的文件将会在这里编译;BUILD

rpm打包

首先安装打包软件# yum install rpmbuild  rpmdevtools -y 生成打包路径1.使用rpmdev-setuptree ,会自动在用户家目录生成一个rpmbuild的文件夹,作为工作路径2.cd rpmbuild/SPECS路径,创建my.spec文件,仅仅需要以下内容################my.spec##############Name: shepherdVersion: 1.0Release: 1Summary: luckykrisLicense: [