天天看點

RPM軟體打包,SVN

步驟:

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,如需轉載請自行聯系原作者

繼續閱讀