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 ...
随机推荐
- awk 字符串处理函数
awk提供了许多强大的字符串函数,见下表:awk内置字符串函数gsub(r,s) 在整个$0中用s替代rgsub(r,s,t) 在整个t中用s替代rindex(s,t) 返回s中字符 ...
- 《.NET 设计规范》第 5 章:成员设计
<.NET 设计规范>第 5 章:成员设计 5.1 成员设计的通用规范 要尽量用描述性的参数名来说明在较短的重载中使用的默认值. 避免在重载中随意地改变参数的名字.如果两个重载中的某个参数 ...
- python的pika模块操作rabbitmq
上一篇博文rabbitmq的构架和原理,了解了rabbitmq的使用原理,接下来使用python的pika模块实现使用rabbitmq. 环境搭建 安装python,不会的请参考Linux安装配置py ...
- CentOS6.9编译安装nginx1.4.7
1.系统安装开发包组和zlib-devel,关闭iptables [root@bogon ~]# yum groupinstall -y "Development Tools" [ ...
- 洛谷 [P2762] 太空飞行计划问题
最大权闭合子图 胡伯涛论文真是个好东西.jpg 求一个有向图的最大权闭合子图,常应用于有先决条件的最优化问题中 将所有正权点与源点相连,容量为点权; 将所有负权点与汇点相连,容量为点权的相反数; 将原 ...
- bzoj 3597: [Scoi2014]方伯伯运椰子 [01分数规划 消圈定理 spfa负环]
3597: [Scoi2014]方伯伯运椰子 题意: from mhy12345 给你一个满流网络,对于每一条边,压缩容量1 需要费用ai,扩展容量1 需要bi, 当前容量上限ci,每单位通过该边花费 ...
- Spring MVC的配置和使用
Spring MVC的配置和使用 笔记仓库:https://github.com/nnngu/LearningNotes Spring MVC需要的jar包 文章中 Spring MVC 使用的版本是 ...
- webstorm你不知道的秘密
相信你们用webstorm肯定都会用上下面介绍的Emmet插件这个可以自带的哦 Emmet语法 子代:> 兄弟:+ 父代:^ 重复:* 成组:() ID:# class:. 属性:[] 编号:$ ...
- pyhton:图像旋转
最近一个作业中要用到图像旋转,分享一下学习过程.如有讲错的地方,恳请指正! 图像旋转,想想真简单啊,不就是将图像矩阵乘上一个旋转平移矩阵就完了吗?实际上还真没这么简单.首先这个旋转平移矩阵怎么获得?通 ...
- 微信小程序模板发送,openid获取,以及api.weixin.qq.com不在合法域名内解决方法
主要内容在标题三,老手可直接跳到标题三. 本文主要解决个人开发者模板消息发送的问题(没有服务器,不能操作服务器的情况) 针对api.weinxin.qq.com不在以下合法域名列表内的问题提出的解决方 ...