步驟:
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 #協定
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 #清理時需要執行的指令
%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
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 //更新本地副本檔案,從版本庫下載下傳更新資料
使用Subversion協同工作
checkout指令(初始化檢出)
-checkout URL[@REV] [PATH]
從伺服器版本庫中複制一份副本至本地
URL定位版本庫
通過REV可以下載下傳特定版本的資料
PATH為本地工作副本路徑
commit指令(送出修改)
将本地修改的副本,送出至伺服器。
update指令
将伺服器上其他人的修改的代碼更新到本地
info指令(檢視版本倉庫資訊)
log指令(檢視版本修改曆史)
add指令(本地版本庫添加新檔案)
添加本地版本庫副本檔案
注意:add不會自動送出版本庫伺服器
需要使用commit指令送出伺服器
del指令(本地版本庫删除檔案)
删除本地版本庫副本檔案
注意:del不會自動送出版本庫伺服器
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 harry]# sed -i "3a###harry\'s modify#####" user.slice
[user1@srv5 harry]# svn commit -m "user.slice has modified"
[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 //提示失敗後,先更新再送出即可
Sending user.slice
Transmitting file data .
4) harry和tom修改相同檔案的相同行
[user1@srv5 harry]# sed -i "8c###harry\'s modify#####" zram.service
[user1@srv5 harry]# svn commit -m "zram.service has modified"
[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
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
本文轉自夜流璃雨 51CTO部落格,原文連結:http://blog.51cto.com/13399294/2064017,如需轉載請自行聯系原作者