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
2) 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 .
4) 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