RPM軟件打包,SVN
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: #臨時編譯目錄
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