1. 程式人生 > >rpm包和原始碼包安裝的區別

rpm包和原始碼包安裝的區別

建議在安裝線上的生產伺服器軟體包時都用原始碼安裝,這是因為原始碼安裝可以自行調整編譯引數,最大化地定製安裝結果。這裡以MySQL 5線上環境的編譯安裝來說明之,其編譯引數如下所示:

  1. ./configure -prefix=/usr/local/mysql -without-debug 
    -without-bench -enable-thread-safe-client -enable-assembler 
    -enable-profiling -with-mysqld-ldflags=-all-static -
    with-client-ldflags
    =-all-static -with-charset
    =latin1 -
    with-extra-charset
    =utf8,gbk -with-innodb -with-csv-storage
    -engine -with-federated-storage-engine -with-mysqld-user=mysql
    -without-embedded-server -with-server-suffix=-community 
    -with-unix-socket-path=/usr/local/mysql/sock/mysql.sock && 
    make && make install

在安裝MySQL時,原始碼安裝與rpm安裝相較,其特點如下:

我們可以針對自己的硬體平臺選用合適的編譯器來優化編譯後的二進位制程式碼。

根據不同的軟體平臺環境調整相關的編譯引數(原始碼安裝不僅適用於rhel/centos,其他系統像FreeBSD、Solaris、Ubuntu等一樣適用)。

可針對特定的應用場景選擇需要什麼元件或不需要什麼元件。

同一臺主機上可以安裝多個MySQL(rpm安裝則僅能安裝一個MySQL)。

根據需要儲存的資料內容選擇只安裝需要的字符集。

理論上原始碼靜態編譯方式安裝效率會高一點,但到底比rpm方式高多少得看具體情況,一般在5%左右。

某次在線上環境工作,我用yum解除安裝一個軟體包時遇到了極其危險的情況,這裡也跟大家分享一下:當時,yum remove自動解除安裝了許多這個軟體包自身依賴的系統包,導致系統崩潰了,SSH不能登入,並且SCP及RSYNC也都不能用了,幸虧FTP命令還能用, 所以資料很快被FTP傳到其他伺服器上了,但系統已經徹底崩潰,只有重灌了。如果是原始碼安裝的軟體包就沒有這種危險,需要解除安裝時只需要刪除軟體包安裝的目 錄即可。

綜上所述,原始碼安裝的好處如下:

最大的好處就是可以自行調整編譯引數,最大化地定製安裝結果。

原始碼安裝可以選擇最新的軟體包,而Linux系統(包括FreeBSD)自帶的軟體包一般都是最穩定的版本,但不能保證是最新的。

相對而言,原始碼安裝的效能是最優異的。

原始碼包安裝的軟體解除安裝時極為方便和簡單,更重要的是,它比較安全,尤其是對線上的生產環境而言。

遷徙也比較方便,如果不涉及系統庫檔案,複製到另一臺機器上也可以使用。

這裡也簡單介紹一下在Linux/Unix下安裝軟體的原始碼三部曲,在後面我們會經常看到它們的身影。

  1. ./configure  
  2. make  
  3. make install 

./configure是用來檢查環境變數及配置編譯選項的,make是用來將原始碼編譯成二進位制檔案的,而make install則會將make編譯出來的檔案安裝到指定位置(或預設位置)。

在本節中,我們從伺服器的硬體選擇、安裝及核心等方面對單機伺服器的效能進行了優化,不過對於網站和系統來說,單機優化對整體效能提升的作用畢竟有限,整體效能提升主要靠伺服器的高可用和高擴充套件性來實現,這部分內容在後面的章節中再來說明。