編譯文件夾下多個tar包
A. tarball方式編譯安裝及升級-make、patch
tarball方式編譯安裝及升級-make、patch1、概念:原碼進行編譯成二進制機構可執行程序,先要make與偵測程序一般是config一起生成編譯連接文件makefile,再由makefile編譯成可執行文件。Tarball其實是原碼的tar打包與壓縮的包。rpm是指linux商家幫你編譯好了,省去了長時間編譯而發布的包,但不同類型的系統就不能用。
www.dnjsb.com
函數庫即提供外部調用的,有點像dll。2、gcc,是C語句的編譯器,一般是先編譯成目標文件,再連結成一個可執行文件。3、make可以方便進行編譯,因為它把要編譯的命令及順序都寫到makefile這個文件里了。
www.dnjsb.com
4、makefile文件放在程序的原碼里的一級目錄,它的語法:[root@www
~]#
vi
makefileLIBS
=
-lm
#這是變數OBJS
=
main.o
haha.o
sin_value.o
cos_value.oCFLAGS
=
-Wallmain:
${OBJS}gcc
-o
$@
${OBJS}
${LIBS}
<==那個
$@
就是
main
!$@
代表目前的標的(target)clean:rm
-f
main
${OBJS}#標的:有相關性原代碼文件
#第二行開頭要tab一下,這一行就是執行的命令,如腳本命令5、具體目錄規則如下:
a、最好將
tarball
的原始資料解壓縮到
/usr/local/src
當中;
b、安裝時,最好安裝到
/usr/local
這個預設路徑下;
c、考慮未來的反安裝步驟,最好可以將每個軟體單獨的安裝在
/usr/local
底下;
d、為安裝到單獨目錄的軟體之
man
page
加入
man
path
搜尋:如果你安裝的軟體放置到
/usr/local/software/
,那麼
man
page
搜尋的設定中,可能就得要在
/etc/man.config
內的
40~50
行左右處,寫入如下的一行:
MANPATH
/usr/local/software/man
這樣才可以使用
man
來查詢該軟體的線上文件!6、偵測配置程序./configure
--help
,可以查看支持參數及說明一般有的參數是安裝到哪個目錄的參數:--prefix=/path7、一般的步驟(以ntp為例):cd
/usr/local/srctar
-zxvf
/root/ntp-4.2.4p7.tar.gzcd
ntp-4.2.4p7/cat
INSTALL./configure
--help
|
more./configure
--prefix=/usr/local/ntpmake
clean;
makemake
check
#此步如果不檢測也行make
install8、原碼進行更新升級:
a、cat
~/main_0.1_to_0.2.patch
#查看第一行它的相對目錄是什麼樣的
b、用patch
-p數字
<
patch_file進行更新,這里的數字表示舊的目錄要去掉幾個/,如果不去則用patch
-p1
<
patch_file,要根據a步來判斷。如main-0.1/xxx
與
main-0.2/xxx
進行對比,而你現在就在main-0.1目錄下,那麼可以這樣patch
-p1
<
../main_0.1_to_0.2.patch
c、一般會發布更新包,以.patch為後綴,且會標明從什麼版本到什麼版本,不能跨多版本升級的,要順序升級,如跨了多個更新包,則要把之前的更新包一個個更新
d、make
clean;
make
make
check
#此步如果不檢測也行
make
install
如果報錯,可能就需要執行一下./configure,patch只是更新了有變化的原代碼而已。
e、如果
patch
錯誤呢?我們的
patch
是可以還原的啊!透過patch
-R
<
../main_0.1_to_0.2.patch
即可。(main_0.1_to_0.2.patch只是個例子)
B. 寫一個shell腳本,將該文件夾下的每一個文件夾打一個tar包,然後把這些tar包放到一個文件夾中
fordirnamein`ls-l|grep^d|awk'{print$9}'`
do
tarcvf/dest_dir/$dirname.tardirname
done
C. linux的tar打包多個文件夾里指定類型的文件
在log/里:
tar -cvf /tmp/my.tar log*/a.log