zoukankan      html  css  js  c++  java
  • 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
    找客户机安装测试

    ————————————————————————————————————————————————————————————————

  • 相关阅读:
    228. Summary Ranges
    227. Basic Calculator II
    224. Basic Calculator
    222. Count Complete Tree Nodes
    223. Rectangle Area
    221. Maximal Square
    220. Contains Duplicate III
    219. Contains Duplicate II
    217. Contains Duplicate
    Java编程思想 4th 第4章 控制执行流程
  • 原文地址:https://www.cnblogs.com/Hydraxx/p/7445556.html
Copyright © 2011-2022 走看看