1. 程式人生 > >Linux下二進位制包、原始碼包、rpm包

Linux下二進位制包、原始碼包、rpm包

主要提供三種格式的mysql包:rpm格式、二進位制格式、原始碼格式:(tar打包,gz壓縮)

rpm格式: libjpeg-devel-6b-33.x86_64.rpm       #rpm格式很好區分,

二進位制包: mysql-3.23.58-pc-linux-i686.tar.gz   #二進位制格式的包名字很長,有版本號、適應平臺、適應的硬體型別等,格式:mysql-<版本>-<OS>-tar.gz

原始碼包:    php-5.2.14.tar.gz                            #而原始碼格式僅僅就是一個版本號的tar包。#cj 安裝區別:解壓、./config、make、make install

source code 是程式設計師寫的碼,  binary code 是機器跑的碼。  source code 得經過 compile 才能成為 binary code 。 

RPM 有分兩種:binary rpm 跟 source rpm 。  前者是編好的 binary ,安裝就可用。  後者是還沒編好的 source ,需 rebuild 之後才能安裝

原始碼方式和二進位制包是軟體包的兩種形式。二進位制包裡面包括了已經經過編譯,可以馬上執行的程式。你只需要下載和解包(安裝)它們以後,就馬上可以使用。原始碼包裡面包括了程式原始的程式程式碼,需要在你的計算機上進行編譯以後才可以產生可以執行程式,所以從原始碼安裝的時間會比較長。

Linux下有個命令叫file,因為Linux並不是按照字尾名來判斷檔案型別的。所以一般在不清楚檔案到底是什麼型別的時候,就用file這個命令去判斷。 file php-5.2.14.tar.gz  php-5.2.14.tar.gz: gzip compressed data, was "php-5.2.14.tar", from Unix, last modified: Wed Jul 21 22:32:34 2010, max compression 這個php-5.2.14.tar.gz 明顯是個gzip的壓縮包,這樣的檔案一般都是用tar zxvf 命令去解包然後去配置編譯安裝的,通常情況把這種安裝方法叫做原始碼編譯安裝。 file libjpeg-devel-6b-33.x86_64.rpm  libjpeg-devel-6b-33.x86_64.rpm: RPM v3 bin i386 libjpeg-devel-6b-33 這個libjpeg-devel-6b-33.x86_64.rpm 檔案,就是個標準的redhat系列發行版本所用的RPM格式軟體包。一般在RHEL、CentOS、SUSE、OracleLinux下都可以安裝類似的RPM包。標準的安裝方法是rpm -ivh。 基本上紅帽系列Linux發行版本安裝軟體就這兩種方法了。還有經常被提起的yum,其實就是由yum自動判斷rpm包的依賴,然後一次性把所有需要安裝的N個rpm統一下載安裝,其實原理和一個個的安裝rpm沒有什麼本質區別。

 一般在官網上下載的原始碼包都是以:tar.gz tar.bz2結尾的,經過編譯的一般是以.rpm來結尾的,linux下的副檔名沒有實際的意義,這樣做只是為了方便你去檢視是什麼型別的包然後採取什麼樣的方式去安裝和配置,當然有時候並不能從檔案的副檔名去檢視什麼型別的包,因為檔名可以隨意的去修改可以使用file這個命令去檢視檔案包的型別.

原始碼的安裝一般由3個步驟組成:配置(configure)、編譯(make)、安裝(make install)

Configure是一個可執行指令碼,它有很多選項,在待安裝的原始碼路徑下使用命令./configure –help輸出詳細的選項列表。

其中--prefix選項是配置安裝的路徑,如果不配置該選項,安裝後可執行檔案預設放在/usr /local/bin,庫檔案預設放在/usr/local/lib,配置檔案預設放在/usr/local/etc,其它的資原始檔放在/usr /local/share,比較凌亂。

如果配置--prefix,如:

  1. ./configure --prefix=/usr/local/test

可以把所有資原始檔放在/usr/local/test的路徑中,不會雜亂。

用了—prefix選項的另一個好處是解除安裝軟體或移植軟體。當某個安裝的軟體不再需要時,只須簡單的刪除該安裝目錄,就可以把軟體解除安裝得乾乾淨淨;移植軟體只需拷貝整個目錄到另外一個機器即可(相同的作業系統)。

當然要解除安裝程式,也可以在原來的make目錄下用一次make uninstall,但前提是make檔案指定過uninstall。