• 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
    找客户机安装测试

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

  • 相关阅读:
    BZOJ 3158: 千钧一发
    BZOJ 1677: [Usaco2005 Jan]Sumsets 求和
    BZOJ 1574: [Usaco2009 Jan]地震损坏Damage
    BZOJ 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课
    BZOJ 1715: [Usaco2006 Dec]Wormholes 虫洞
    BZOJ 1634: [Usaco2007 Jan]Protecting the Flowers 护花
    Vijos P1740聪明的质检员
    Vijos P1680距离
    Vijos P1067Warcraft III 守望者的烦恼
    BZOJ 1385: [Baltic2000]Division expression
  • 原文地址:https://www.cnblogs.com/Hydraxx/p/7445556.html
Copyright © 2020-2023  润新知