linux 版本控制及rpm打包
版本控制
subversion:
是一个自由/开源的版本控制系统,
在subversion管理下,文件和目录可以超越时空
subversion允许你数据恢复到早期版本,或者是检查数据修改历史
许多人将版本控制系统当成一种神奇的时间机器
subversion架构
客户端:
命令行
图形
通信方式:
本地访问
svn服务器
web服务
仓库存储:
文件系统
数据库
版本库:
典型的客户/服务器系统
版本库是版本控制的核心
任意数量客户端
客户端通过写数据库分享代码
subversion特点:
记录每一次改变
版本模型:
版本控制系统的核心任务是协作编辑和数据共享
subversion控制系统使用拷贝-修改-合并模型
每个客户链接版本库,并建立个人工作副本
用户并行工作,修改自己的副本,最终,合并副本
个别冲突问题,需要人为手动解决
————————————————————————————————————————————————————
svn基础
服务器设置
安装subversion
[root@web ~]# yum -y install subversion
创建版本库
利用svnadmin命令可创建服务器版本库
subversion版本库管理工具,帮助:svnadmin help
用法:svnadmin 命令 /版本库路径 [选项]
命令:create,创建一个新的版本库
[root@web ~]# mkdir /var/svn/(生成目录)
[root@web ~]# svnadmin create /var/svn/project(生成仓库)
[root@web init.d]# svn import /etc/rc.d/init.d/* file:///var/svn/project -m "first"(测试把代码导入(import)到仓库-m 随便写一些注释信息)
认证与授权
[root@web ]# vim/var/svn/project/conf/svnserve.conf(主配置文件)
anon-access = none(匿名用户没任何权限)
auth-access = write(认证用户可读可写)
。。。。。
password-db = passwd(用户密码文件)
authz-db = authz(访问权限)
[root@web ]# vim/var/svn/project/conf/passwd(用户密码文件)
[users]
hydra = 123456(用户名 密码)
tom = 123456
[root@web ~]# vim /var/svn/project/conf/authz (访问权限)
users = hydra,tom(添加用户)
[/](根下的目录)
@users = rw(用户可读可写)
svnserver服务
svnserver命令即可开启svn服务进程
-d(以守护进程方式运行svnserver)
--listen-port=port(监听的端口,默认端口为3690)
-r(设置一个虚拟路径,默认客户机要,不指定虚拟路径,会默认将所有版本库发布至网络)
[root@web ~]# svnserve -d -r /var/svn/project/(指定project版本库发布)
[root@web ~]# netstat -nutlp | grep svn(查看服务起没起)
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 27821/svnserve
[root@web ~]# svn list file:///var/svn/project/(测试本地访问)
客户端命令行工具:
svn命令 [选项]
--password:密码
--username:用户名
--revision:指定要检查的特定版本
客户端测试访问
[root@web2 ~]# svn --username hydra --password 123456 co svn://192.168.2.100/ /var/tmp/mydaima(客户机访问测试)
[root@web2 ~]# cd /var/tmp/mydaima
。。。。。。
[root@web2 mydaima]# vim sshd(测试改代码)
[root@web2 mydaima]# svn commit -m "sshd"(提交代码commit提交)
[root@web2 svn]# svn -r2 co svn://192.168.2.100/xx2(将版本库的第二个版本下载到本地)
[root@web mydaima]# svn update(更新服务器的东西到本地)
[root@web2 mydaima]# svn log svn://192.168.2.100/(查看修改日志)
[root@web2 mydaima ~]# svn info svn://192.168.2.100/(查看版本仓库信息)
[root@web2 mydaima~]# svn add test.sh(创建一个脚本)
[root@web2 mydaima ~]# svn commit -m "add test"(提交test.sh脚本)
[root@web2 mydaima]# svn rm sshd(删除)
[root@web2 mydaima]# svn commit -m 'rm sshd'(提交)
[root@web2 mydaima]# svn diff(对比和服务器上的数据)
[root@web2 mydaima]# svn revert mysqld(恢复)
[root@web2 mydaima]# svn merge -r 10:5 netfs(从10个版本还原到5版本)
备份版本库
[root@web svn]# svnadmin dump /var/svn/project > log(dump备份)
[root@web svn]# svnadmin create /var/svn/project2(创建新的)
[root@web svn]# svnadmin load /var/svn/project2 < project(load还原)
——————————————————————————————————————————————————————————————
rpm打包
官方没提供rpm包,官方rpm无法自定义,
大量源码包,希望提供统一的软件管理机制
源码包分析
源码
库文件
makefile文件
rpm包构成
metadata(元数据)
版本,软件名称,依赖关系,发布日期
file(文件)
rpm所需所有文件的打包文件
scripts(脚本)
安装后,卸载后需要运行的脚本
打包流程:
准备源码软件
安装rpm-build
编译rpm包
测试打包(需要工具rpmbuild)
[root@web2 ~]# yum -y install rpm-build
[root@web2 ~]# rpmbuild -ba hydra.spec(随便加一个文件名,会自动生成一个目录)
[root@web2 ~]# ls
rpmbuild
[root@web2 rpmbuild]# ls
BUILD 临时目录
BUILDROOT 假根
RPMS 生成后的rpm包
SOURCES 放源码
SPECS 如何编译
SRPMS 源码rpm包
[root@web2 rpmbuild]# cp /root/lnmp_soft/nginx-1.8.0.tar.gz /root/rpmbuild//SOURCES/(找个包测试,放到源码包目录下)
[root@web2 SPECS]# vim nginx.spec(新建一个spce文件)
Name:nginx(名字)
Version:1.8.0(nginx版本)
Release:1.0(rpm版本)
Summary:nginx http server(服务)
#Group:(不想写可以注释)
License:GPL(GPL协议)
URL:www.nginx.net(网址)
Source0:nginx-1.8.0.tar.gz(要写成和外面的nginx的名字一样)
#BuildRequires:
#Requires:
%description(软件信息)
%prep
%setup -q(解压)
%build
./configure(指定安装目录。安装模块)
make %{?_smp_mflags}
%install
%make_install
%files
%doc(对谁打包)
/*
[root@web2 ~]# rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec(在虚拟根安装一遍)
[root@web2 ~]# ls /root/rpmbuild/RPMS/x86_64(查看打包好的程序)
nginx-1.8.0-1.0.x86_64.rpm nginx-debuginfo-1.8.0-1.0.x86_64.rpm
找客户机安装测试
————————————————————————————————————————————————————————————————
linux 版本控制及rpm打包的更多相关文章
- 在Linux下通过rpm打包发布Java程序
这个东西涉及的内容较多,根据下面这些文章慢慢学习 一个简单的例子 http://blog.csdn.net/king_on/article/details/7169384 按照文章中的步骤来,打包之后 ...
- 版本控制,svn基础,实战案例,RPM打包
版本控制,svn基础,实战案例,RPM打包 案例1:Subversion基本操作 案例2:使用Subver ...
- Centos6_64 rpm打包实践
安装rpmbuild sudo yum install rpm-build 普通用户的配置 /home/you/rpmbuild/ 假设是要构建rpm的目录 先说说rpmbuild有什么用,给一个例子 ...
- rpm打包过程
[需求] 接触那么久的Linux,还没有试验过怎么打rpm包 [过程] 1.rpm打包准备工作 系统默认的rpmbuild的相关路径
- RPM打包原理、示例、详解及备查
原文地址:https://blog.csdn.net/qq_16542775/article/details/80961213 RPM(Redhat Package Manager)是用于Redhat ...
- RPM打包原理、示例、详解及备查( 转)
RPM(Redhat Package Manager)是用于Redhat.CentOS.Fedora等Linux 分发版(distribution)的常见的软件包管理器.因为它允许分发已编译的软件,所 ...
- 用 RPM 打包软件,第 1 部分
http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part1/ RPM(Red Hat Package Manager ...
- Rpm打包程序
1.Rpm打包程序1.1为什么要使用rpm打包1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长.2.yum安装软件 ...
- 第五部分 linux 软件安装RPM SRPM与YUM
第五部分 linux 软件安装RPM SRPM与YUM 软件管理员简介 RPM与DPKG两大主流 rpm: redhat centos suse 命令:yum ...
随机推荐
- 【PHP】学习中遇到的php方法
[1]range()快速创建一个范围内数组 <?php range(0,20); 创建一个包含从 "0" 到 "20" 之间的元素范围的数组: range ...
- 使用CefSharp开发一个12306“安心刷票弹窗通知”工具
有需求就要改进 最近两年没有在春节回家过年了,主要是票太难买,虽然之前写了一个12306“无声购票弹窗”工具,解决了抢票问题,但是全家老小一起回去还是很累,干脆就在北京过年了.这两天突然有一个朋友问我 ...
- Java并发系列[4]----AbstractQueuedSynchronizer源码分析之条件队列
通过前面三篇的分析,我们深入了解了AbstractQueuedSynchronizer的内部结构和一些设计理念,知道了AbstractQueuedSynchronizer内部维护了一个同步状态和两个排 ...
- 10_set集合
一.集合类型 集合是一组无序排列的可哈希的值(可哈希的值->不可变),集合成员可以做字典中的键.但集合本身是不可哈希的. 集合是无序没有索引,也没有像字典的key,所以集合不能更改元素.只能增删 ...
- java重定向
package com.sn.servlet; import java.io.IOException; import javax.servlet.ServletException; import ja ...
- 自动化测试KPI考评的一种方法
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6856204.html 众所周知,在IT ...
- BZOJ 3879: SvT [虚树 后缀树]
传送门 题意: 多次询问,给出一些后缀,求两两之间$LCP$之和 哈哈哈哈哈哈哈竟然$1A$了,刚才还在想如果写不好这道题下节数学就不上了,看来是上天让我上数学课啊 $Suffix\ Virtual\ ...
- 【自适应辛普森积分】hdu1724 Ellipse
Ellipse Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- VUE2.0 elemenui-ui 2.0.X 封装 省市区三级
1. 效果图 2. 版本依赖 vue 2.X , elementui 2.0.11 使用element ui <el-form>标签 3. 源码 components/CityL ...
- pip install 提示"no previously-included directories found matching"及"no previously-included files matching found anywhere in distribution",且偶发无法关联安装 PyPI 库的故障
环境描述: Python 2.7.5 CentOS-7.2 报错现象: (1).在虚拟环境下运行 pip install 命令安装 PyPI 第三方库,出现类似如下告警. Running setu ...