RPM软件打包
步骤: 1.准备源码软件 2.安装rpm-build 3.编写编辑配置文件 4.编译RPM包
步骤一:安装rpm-build软件 1)安装rpm-build软件包 yum -y install rpm-build
2)生成rpmbuild目录结构
rpmbuild -ba nginx.spec
ls /root/rpmbuild
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
3)将准备的源码软件复制到/root/rpmbuild/SOURCES目录 cp nginx-1.8.0.tar.gz /root/rpmbuild/SOURCES/ less /usr/share/doc/rpm-4.8.0/GROUS 了解RPM软件包信息
4)创建并修改SPEC配置文件 vim /root/rpmbuild/SPECS/nginx.spec
Name: nginx #软件名 Version: 1.8.0 #软件版本 Release: 1%{?dist} #RPM版本 Summary: nginx high #描述
Group: application #软件组 License: GPL #协议 URL: http://www.baidu.com #网址 Source0: nginx-1.8.0.tar.gz #源码文件
Buildroot: #临时编译目录 %(mktemp -ud %{_rmppath}/%{name}-%{version}-%{release}) BuildRequires: gcc pcre-devel openssl-devel zlib-devel #编译时依赖包 Requires: pcre openssl zlib #安装时依赖包
%description nginx high performance #详细描述
%prep #安装前准备,解压 useradd -s /sbin/nologin nginx %setup -q #系统使用setup自动解压,安静模式
%build #编译需要执行的命令 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
%configure #配置时需要执行的命令
make %{?_smp_mflags} %install #安装时需要执行的命令 rm -rf %{buildroot} make install DESTDIR=%{buildroot}
%clean #清理时需要执行的指令 rm -rf %{buildroot} %files #定义打包文件列表 %defattr(-,root,root,-) %doc
%changelog #软件修改历史
步骤二: 1)安装依赖软件包 yum –y install gcc pcre-devel zlib-devel
2)使用spec文件编译RPM包 rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec
步骤三:安装测试rpm包 rpm -ivh RPMS/x86_64/nginx-1.8.0-1.x86_64.rpm rpm -qa |grep nginx /usr/local/nginx/sbin/nginx curl http://127.0.0.1/
Subversion
Subversion是一个自由/开源的版本控制系统 Subversion允许数据恢复到早期版本或者是检查数据修改的历史
应用: 如果你希望文件和目录旧版本,有可能要恢复或需要查看日志获得其修改的历史 如果你需要和别人协作文档并跟踪所做的修改
特点: 记录每一次改变
Subversion控制系统使用拷贝-修改-合并模型 每个客户端连接版本库,并建立个人工作副本。 用户并行工作,修改自己的副本。 最终,合并版本。 个别冲突问题,需要人为手动解决。
流程: Harry用户拷贝副本,Sally用户拷贝副本。 Harry用户修改A1,Sally用户修改A2。 Harry用户上传A1后,Sally用户上传A2,会提示Sally用户的文件已过期。 Sally用户更新文件(合并)后上传新的A3。
svnserver命令: -d 以守护进程方式运行svnserver --listen-port=port 监听的端口,默认端口号3690 -r root 设置一个虚拟路径,默认客户端要指定绝对路径访问库
步骤一:安装Subversion服务器 1)YUM安装subversion软件 yum -y install subversion
2)创建版本库 格式:svnadmin 命令 /版本库路径 [选项] 命令:create 创建一个新的版本库
mkdir /var/svn/ svnadmin create /var/svn/project ls /var/svn/project/ conf/ db/ format hooks/ locks/ README.txt
3)修改配置文件,创建账户与密码 vim /var/svn/project/conf/svnserve.conf ........... anon-access = none //匿名无任何权限,可以设置为none、read、write auth-access = write //经过认证的用户权限为可写权限 password-db = passwd //账户与密码的存放文件名,在conf目录下 authz-db = authz //ACL访问控制列表文件
vim /var/svn/project/conf/passwd … … [users] harry = 123456 //用户名和密码 tom= 123456 //用户名和密码
vim /var/svn/project/conf/authz ... ... [groups] admins = harry,tom //定义组账户,组成员为harry和tom [/] //定义ACL访问控制,根路经设置权限,也可以设置为其他路径 @admins = rw //admins组中的用户对项目根路径可读,可写权限
- = r //其他人只读 //权限:只读'r'、读写'rw'、无权限''。 启动服务:svnserver -d
步骤二:客户端测试 svn 命令 [选项] --password 密码 --username 用户名 --revision 指定要检查的特定版本 1)本地导入初始化数据 使用SVN命令将代码导入到版本库中 -import指定执行导入操作 -m选项设置说明性的字符串
cd /usr/lib/system/system/
svn import ./ file:///var/svn/project/ -m "Init Data"
cd /var/tmp
svn --username harry --password 123456
co svn://127.0.0.1/var/svn/project harry //harry账户检查数据,建立本地副本
..........
Store password unencrypted (yes/no)? yes //提示是否保存密码
cd /var/tmp/harry ls
svn add test.sh //将文件或目录加入版本控制 svn mkdir subdir //创建子目录 svn status //检查状态,结果为两个添加append A test.sh A subdir svn del cups //删除版本库中的文件
sed -i '1a##test###' sshd.service //修改本地副本中的代码文件 sed -i '2a###test###' sshd.service svn diff sshd.service //查看单个文件本地副本与版本库的差异 svn diff //查看所有本地副本与版本库的差异 svn log svn://127.0.0.1/var/svn/project //查看修改历史 svn info svn:/127.0.0.1/var/svn/project svn update //更新本地副本文件,从版本库下载更新数据 cd /var/tmp
使用Subversion协同工作 checkout命令(初始化检出) -checkout URL[@REV] [PATH] 从服务器版本库中复制一份副本至本地 URL定位版本库 通过REV可以下载特定版本的数据 PATH为本地工作副本路径
commit命令(提交修改) 将本地修改的副本,提交至服务器。
update命令 将服务器上其他人的修改的代码更新到本地
info命令(查看版本仓库信息)
log命令(查看版本修改历史)
add命令(本地版本库添加新文件) 添加本地版本库副本文件 注意:add不会自动提交版本库服务器 需要使用commit命令提交服务器
del命令(本地版本库删除文件) 删除本地版本库副本文件 注意:del不会自动提交版本库服务器 需要使用commit命令提交服务器
mkdir命令(本地版本库创建目录)
diff命令(数据对比) 对比本地副本与服务器数据
cat命令(查看版本库内容)
revert命令(版本回滚) 本地副本修改后,但未commit提交修改时回滚数据
merge命令(版本回滚) 本地副本修改commit提交后,使用该命令回滚 svn merge -r 3:1 netds 将netfs从3版本还原回1版本
步骤一:多人协同工作 1)远程连接两个终端,每个人下载代码本地副本,注意user1和user2代表了两个不同的主机 [user1@srv5 ~]# svn --username harry --password 123456 co svn://10.47.214.131/project harry [user2@srv5 ~]# svn --username tom --password 123456 co svn://10.47.214.131/project tom [user1@srv5 ~]# ls harry [user2@srv5 ~]# ls tom
- harry和tom修改不同的文件 [user1@srv5 ~]# cd harry [user1@srv5 harry]# sed -i "3a###harry's modify#####" vmtoolsd.service [user1@srv5 harry]# svn commit -m "vmtoolsd has modified" [user2@srv5 ~]# cd tom [user2@srv5 tom]# sed -i "3a###tom's modify#####" sshd.servie [user2@srv5 tom]# svn commit -m "sshd has modified" [user1@srv5 harry]# svn update [user2@srv5 tom]# svn update
3)harry和tom修改相同文件的不同行 [user1@srv5 ~]# cd harry [user1@srv5 harry]# sed -i "3a###harry's modify#####" user.slice [user1@srv5 harry]# svn commit -m "user.slice has modified" [user2@srv5 ~]# cd tom [user2@srv5 tom]# sed -i "6a###tom's modify#####" user.slice [user2@srv5 tom]# svn commit -m "user.slice has modified" Sending svnserve Transmitting file data .svn: Commit failed (details follow): svn: File '/user.slice' is out of date [user2@srv5 tom]# svn update //提示失败后,先更新再提交即可 [user2@srv5 tom]# svn commit -m "user.slice has modified" Sending user.slice Transmitting file data .
- harry和tom修改相同文件的相同行 [user1@srv5 ~]# cd harry [user1@srv5 harry]# sed -i "8c###harry's modify#####" zram.service [user1@srv5 harry]# svn commit -m "zram.service has modified" [user2@srv5 ~]# cd tom [user2@srv5 tom]# sed -i "8c###tom's modify#####" zram.service [user2@srv5 tom]# svn commit -m "zram.service has modified" svn commit -m "zram.service has modified" Sending zram.service Transmitting file data .svn: Commit failed (details follow): svn: File '/zram.service' is out of date [user2@srv5 tom]# svn update //出现冲突,需要解决 Conflict discovered in 'zram.service'. Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show all options:p //选择先标记,随后解决 df //对比不同 edit //直接修改文件,修改后选择r mine-conflict //冲突以本地为准 theirs-conflict //冲突以服务器为准 postpone //标记冲突,稍后解决
[user2@srv5 tom]# ls zram.service zram.service.mine zram.service.r10 zram.service.r9 [user2@srv5 tom]# vm zram.service.mine zram.service [user2@srv5 tom]# rm zram.service.mine zram.service.r10 zram.service.r9 [user2@srv5 tom]# svn commit -m "zram.service has modified" //解决冲突
步骤二:使用dump指令备份版本库数据 svnadmin dump /var/svn/project > project.bak
- Dumped revision 0.
- Dumped revision 1.
使用load指令还原数据 svnadmin create /var/svn/project2 svnadmin load /var/svn/project2 < project.bak