手动 import stat listen select fail conflict lis show all
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
RPM 软件打包, SVN
来源: http://www.bubuko.com/infodetail-2471504.html