linux 版本控制及rpm打包

时间:2022-09-08 19:48:23

版本控制

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打包的更多相关文章

  1. 在Linux下通过rpm打包发布Java程序

    这个东西涉及的内容较多,根据下面这些文章慢慢学习 一个简单的例子 http://blog.csdn.net/king_on/article/details/7169384 按照文章中的步骤来,打包之后 ...

  2. 版本控制,svn基础,实战案例,RPM打包

                                                   版本控制,svn基础,实战案例,RPM打包 案例1:Subversion基本操作 案例2:使用Subver ...

  3. Centos6&lowbar;64 rpm打包实践

    安装rpmbuild sudo yum install rpm-build 普通用户的配置 /home/you/rpmbuild/ 假设是要构建rpm的目录 先说说rpmbuild有什么用,给一个例子 ...

  4. rpm打包过程

    [需求] 接触那么久的Linux,还没有试验过怎么打rpm包 [过程] 1.rpm打包准备工作 系统默认的rpmbuild的相关路径

  5. RPM打包原理、示例、详解及备查

    原文地址:https://blog.csdn.net/qq_16542775/article/details/80961213 RPM(Redhat Package Manager)是用于Redhat ...

  6. RPM打包原理、示例、详解及备查&lpar; 转&rpar;

    RPM(Redhat Package Manager)是用于Redhat.CentOS.Fedora等Linux 分发版(distribution)的常见的软件包管理器.因为它允许分发已编译的软件,所 ...

  7. 用 RPM 打包软件,第 1 部分

    http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part1/ RPM(Red Hat Package Manager ...

  8. Rpm打包程序

    1.Rpm打包程序1.1为什么要使用rpm打包1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长.2.yum安装软件 ...

  9. 第五部分 linux 软件安装RPM SRPM与YUM

    第五部分  linux  软件安装RPM    SRPM与YUM   软件管理员简介 RPM与DPKG两大主流 rpm: redhat       centos     suse    命令:yum ...

随机推荐

  1. 转载&colon;《&period;NET 编程结构》专题汇总(C&num;)

    <.NET 编程结构>专题汇总(C#) - M守护神 - 博客园http://www.cnblogs.com/liusuqi/p/3213597.html 前言     掌握一门技术,首要 ...

  2. POJ 2718 Smallest Difference【DFS】

    题意: 就是说给你一些数,然后要求你使用这些数字组成2个数,然后求他们的差值最小. 思路: 我用的双重DFS做的,速度还比较快,其中有一个很重要的剪枝,若当前搜索的第二个数后面全部补零与第一个数所产生 ...

  3. 三维高斯模型 opencv实现

    OnProbabilityModel() { int i; for(int x=0;x<workImg->height;x++) { for(int y=0;y<workImg-&g ...

  4. html知识——表单

    1.表单标记:<form>内容</form> 属性:     name(表单名称) 必须写!!!  method(传送数据方式): get--将表单的内容附加在URL地址的后面 ...

  5. Redis进阶实践之十 Redis哨兵集群模式

    一.引言             上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...

  6. LeetCode之&OpenCurlyDoubleQuote;链表”:Merge Two Sorted Lists &amp&semi;&amp&semi; Merge k Sorted Lists

    1. Merge Two Sorted Lists 题目链接 题目要求:  Merge two sorted linked lists and return it as a new list. The ...

  7. swagger Failed to load Api definition 的问题

    这个问题是由于Tomcat乱码问题导致的,修改server.xml文件的编码格式修改成UTF-8

  8. Lazy 延迟加载

    问题:最近遇到一个项目遇到一个问题(很久的项目,现阶段主要维护),程序初始化的时候比较慢,最后查原因的时候发现是因为一个类的构造方法里面有些逻辑, 解决办法:希望在使用的时候再进行加载,最后想到了延迟 ...

  9. python 3&period;7 安装mysqlclient 错误解决

    安装时出现的问题 >pip3.7 install mysqlclientCollecting mysqlclient  Using cached https://files.pythonhost ...

  10. thinkphp 在本地正常,在云端ubuntu下报控制器不存在

    thinkphp 在本地正常,在云端ubuntu下报控制器不存在的错 ubuntu是严格区分大小写的,本地的服务器可能对大小写要求没有那么严格, thinkphp的控制器的文件夹默认是小写字母,如果你 ...