11/1
Linux
Section 8
RPM ( Redhat Package Manager ):套件管理工具 RPM 是以一種資料庫記錄的方式來將你所需要的軟體安裝到你的 Linux 系 統的一套管理機制;將你要安裝的軟體先編譯過, 並且打包成為 RPM 機制的包 裝檔案,透過包裝好的軟體裡頭預設的資料庫記錄, 記錄這個軟體要安裝的時候 必須具備的相依屬性軟體。 /etc
一些設定檔放置的目錄,例如 /etc/crontab
/usr/bin
一些可執行檔案
/usr/lib
一些程式使用的動態函式庫
/usr/share/doc
一些基本的軟體使用手冊與說明檔
/usr/share/man
一些 man page 檔案
資料庫:/var/lib/rpm
RPM System:
RPM Package:
element :
1.
主程式
1.
tool kit
2.
Library
2.
DB ( /var/lib/rpm )
3.
Config file
3.
Package file ( ~.rpm )
4.
Documents
5.
Metadata
Package arc: 1.
~.X86.rpm
2.
~.alpha.rpm
3.
~.pcc.rpm
4.
~.sparc.rpm
5.
~.distro.rpm
6.
~.src.rpm
( 用來描述該套件的資訊 )
( 原始碼格式 )
Retrieve sites ( 套件搜尋 ):
1.
rpmfind.net
2.
sourceforge.net
3.
Distro’s official site ( 不同流派、不同版本的網站 )
選項與參數: -i :install -U :upgrade -F :freshen ( 已安裝的 package 用 ) -e :erase 清除 -Q :Query 詢問 -q
:查詢軟體是否有安裝
-p :查詢 package file -i :列出該軟體的詳細資訊 (information),包含開發商、版本與說明等 -l :列出該軟體所有的檔案與目錄所在完整檔名 (list) -f :由後面接的檔案名稱,找出該檔案屬於哪一個已安裝的軟體 -c :列出該軟體的所有設定檔 ( 找出在 /etc/ 底下的檔名 ) -d :列出該軟體的所有說明檔 ( 找出與 man 有關的檔案 ) -R :列出與該軟體有關的相依軟體所含的檔案 ( Required 的意思 ) -a :列出所有的,已經安裝在本機 Linux 系統上面的所有軟體名稱 -v :察看更細部的安裝資訊畫面
-h :以安裝資訊列顯示安裝進度 --nodeps 使用時機:當發生軟體屬性相依問題而無法安裝,但你執意安裝時 危險性: 軟體會有相依性的原因是因為彼此會使用到對方的機制或功能,如 果強制安裝而不考慮軟體的屬性相依, 則可能會造成該軟體的無法正常使用!
操作: 1.
網路安裝 binary rpm #w3m
http://140.115.236.8/download
#rpm
-qip
http://140.115.236.8/download/
skype-1.3.0.53-fc5.i586.rpm
2.
#rpm
-ivh
#rpm
-ql
skype-1.3.0.53-fc5.i586.rpm
安裝
skype | grep bin
Local 安裝 binary rpm # w3m
http://140.115.236.8/download/webmin-… .rpm
#rpm
-qip
webmin-1.450-1.noarch.rpm
# rpm
-ivh
webmin-1.450-1.noarch.rpm
http://127.0.0.1:10000 3.
下載前可以先查看其 package 相關資訊
Compile ( 編譯 ) source rpm S.O.P.
a.
取得 ~.src.rpm
b.
rpm
-qip
~.src.rpm
c.
rpm
-qlp
d.
rpm
-i
e.
cd
~.src.rpm
~.src.rpm
/usr/src/package 原始碼放置位置
f. BUILD:在編譯的過程中,有些暫存的資料都會放置在這個目錄當中 RPMS:經過編譯之後,並且順利的編譯成功之後,將打包完成的檔案放置在這個目錄 當中 SOURCES:該套件的原始檔(*.tar.gz 的檔案)以及 config 這個設定檔 SPECS:該套件的設定檔,例如這個套件的資訊參數、設定項目等等 SRPMS:利用『含有 source code 的 SRPM 』來重新編譯 *.rpm 的檔案成為我們 所希望的樣式了!就因為在 SRPM 裡面含有的不是 binary 的檔案,而是含 有 source code ,因此 SRPM 是不能直接拿來安裝成為可執行的檔案的。 必需要將他重新編譯,並且打包成為類似 i386, i586, i686 等等 RPM 的檔案 之後,才能夠安裝在我們的系統當中
g.
cd
SPECS/
h.
rpm
i.
cd
j.
rpm
k.
安裝及測試
-bb
~.spec
( -bb:build binary package from ~.spec )
../RPMS/架構 -ivh
rdesktop
~.rpm
10.120.101.50
( 主機 IP )
tarball 格式,套件管理:
工具:tar ( tape archive ),用來打包、解包、備份
型態:○ 1 binary ( bin ) 2 ○
source
操作:○ 1 使用 binary 型態 ( bl23-bin-linux-i586.tar.gz ) #tar -zxvf bl23-bin-linux-i586.tar.gz #export
-C /opt/
BL2_HOME=/opt/bl2
#./opt/bl2/blockout 2 ○
安裝 source 型態,編譯 S.O.P. ( xpenguins-2.2.tar.gz sniffit.0.3.5.tar.gz ) a.
取得 source code
b.
解壓縮、解包
c.
cd 源碼目錄
d.
檢視 INSTALL 及 README 檔
e.
./configure
f.
make
g.
make install
h.
make clean
i.
設定及測試
OK → Makefile
編譯
( option )
&
常用參數: -c:create
-C:change 更改路徑
-v:verbose 詳細過程
-r:append 附加
-f:file 其後要指定一個 archive
-t:list 列出打包檔案
file 或 device name。 -x:extract 解壓縮、解包
-z:(gzip) -j:(bzip2)
-g:listed incremental
系統共用函式庫的管理 在 Linux 系統上所執行的程式都會使用到函式庫,而依照應用程式與函式庫連結的方 式,可區分為靜態函式庫 ( Static Libraries ) 及動態函式庫 ( Dynamic Link Libraries、 Shared Libraries )。靜態函式庫 ( 通常為 xx.a ) 裡的函式原始碼需要被編譯到主程式裡 頭,所以主程式會顯得比較臃腫些,但好處是該程式可以獨立執行﹔動態函式庫 ( 通常為 xx.so ) 則不需整個被編譯到主程式裡,只需在程式的原始碼裡設計去呼叫動態函式庫即可。 在 Linux 中所執行的程式幾乎都是使用動態連結資料庫。 一般傳統的函式庫是安置在 /lib 及 /usr/lib 目錄中,而提供系統來搜尋的函式庫, 其所放置的目錄是定義在 /etc/ld.so.conf 裡。當執行 ldconfig 指令時,會先去讀取 /etc/ld.so.conf,以找出函式庫所放置的目錄位置,然後才能將這些函式庫資料寫入 cache 內,並存放一份在 /etc/ld.so.cache 中。不過您要是看過 /etc/ld.so.conf ,會發現 /lib 及 /usr/lib 並沒有定義在 ld.so.conf 內,因為這兩個目錄是內定值,所以不需要做設定 啦 !
出處:http://www.suse.url.tw/sles10/lesson7.htm
指令:○ 1 ldd 2 ○
ldconfig
組態檔:/etc/ld.so.conf
操作:定義新的 library 路徑 #mv /usr/X11R6/lib/libX11.so.6.2 #cat #vi
/root/
/etc/ld.so.conf /etc/ld.so.conf.d/mylib.conf
/mylib/lib #mkdir -p #ldconfig
-v
/mylib/lib verbose 詳細過程
#mv /root/ libX11.so.6.2 #ldconfig
-p
/mylib/lib
| grep mylib
瀏覽 /etc/ld.so.cache 內的資料
Section 9
增量備份 ( Incremental backup )
#mkdir /backup #tar -g #useradd #tar -g
/backup/snapshot1.txt
-cjvf /backup/full_backup.tar.bz2
/home
-m aman /backup/snapshot2.txt
-cjvf /backup/incre1_backup.tar.bz2
#tar -tvf /backup/incre1_backup.tar.bz2
/home
瀏覽備份內容
測試: #rm -rf /home
刪除備份目錄
#tar -jxvf full_backup.tar.bz2
-C /
#tar -jxvf incre1_backup.tar.bz2
-C /
還原備份檔到指定路徑 ( 還原須從 最先備份的依序還原 )
圖片出處:http://linux.vbird.org/linux_basic/0580backup.php#full_differential
差異備份 ( Differential backup )
#tar -czvf /backup/full_backup.tgz #cal
>
#find
/srv/www/htdocs
/srv/www/htdocs/diff1.txt
/srv/www/htdocs/ -type f -newer /backup/full_backup.tgz
| tar --null
-czvf /backup/diff1_backup.tgz
-T
-print0
-
測試: #rm -rf /srv/www/htdocs/ #tar -zxvf full_backup.tgz #tar -zxvf diff1_backup.tgz
刪除備份目錄 -C / -C /
還原備份檔到指定路徑 ( 還原須從 最先備份的依序還原 )