8.23_Linux軟件包管理之編譯程序包安裝

程序包編譯

程序包編譯安裝:

Application-VERSION-release.src.rpm--> 

    安裝後,使用rpmbuild命令製作成二進制格式的rpm包,而後再安裝

源代碼-->預處理-->編譯(gcc)-->彙編-->鏈接-->執行

源代碼組織格式:

    多文件:文件中的代碼之間,很可能存在跨文件依賴關係

    C、C++:make (項目管理器,configure -->Makefile.in --> makefile)

    java: maven


編譯安裝

C代碼編譯安裝三步驟:

    1、./configure:

        (1) 通過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的指定以及makefile.in文件生成makefile

        (2) 檢查依賴到的外部環境

    2、make:根據makefile文件,構建應用程序

    3、make install:複製文件到相應路徑

開發工具:

    autoconf: 生成configure腳本

    automake:生成Makefile.in

注意:安裝前查看INSTALL,README


開源程序源代碼的獲取:

    官方自建站點:

        apache.org (ASF)

        mariadb.org

        ...

    代碼託管:

        SourceForge.net

        Github.com

        code.google.com

c/c++編譯器: gcc(GNU C Complier)


編譯C源代碼:

    前提:提供開發工具及開發環境

        開發工具:make, gcc等

        開發環境:開發庫,頭文件

            glibc:標準庫

    通過“包組”提供開發組件

        CentOS 7: "Development Tools",

        "Server Platform Development",


第一步:運行configure腳本

    選項:指定安裝位置、指定啓用的特性

    --help: 獲取其支持使用的選項

選項分類:

    安裝路徑設定:

    --prefix=/PATH: 指定默認安裝位置,默認爲/usr/local/

    --sysconfdir=/PATH:配置文件安裝位置

    System types:支持交叉編譯

Optional Features: 可選特性

    --disable-FEATURE

    --enable-FEATURE[=ARG]

Optional Packages: 可選包,

    --with-PACKAGE[=ARG],依賴包

    --without-PACKAGE,禁用依賴關係

第二步:make

第三步:make install


安裝後的配置:

(1) 二進制程序目錄導入至PATH環境變量中;

    編輯文件/etc/profile.d/NAME.sh

        export PATH=/PATH/TO/BIN:$PATH

(2) 導入庫文件路徑

    編輯/etc/ld.so.conf.d/NAME.conf

        添加新的庫文件所在目錄至此文件中;

    讓系統重新生成緩存:

        ldconfig[-v]

(3) 導入頭文件

    基於鏈接的方式實現:

        ln -sv

(4) 導入幫助手冊

    編輯/etc/man.config|man_db.conf文件

        添加一個MANPATH


示例:源碼安裝apache

安裝apache,需要先安裝包組的Development Toolss

wKiom1e9ePiTSOHSAAALc3In-3c432.png

grouplist命令可以查看到已經安裝的包組

wKioL1e9ePiyFFLYAAB2F69z8iY895.png

接下來,需要下載apache相應的文件,我們首先安裝lftp命令,默認沒有安裝

wKioL1e9abmxE-WdAABTDZnlTac811.png

apache的壓縮包可以到apache.org官網下載,此處我們利用教室的資源,查找能安裝的包

wKiom1e9abmzqmOJAACEaxtRudw053.png

找到次數實驗用的httpd-2.2.29的包,並且用get命令下載到系統當前目錄

wKioL1e9abriEi45AADuCLAwtoc189.png

查看該包的路徑,然後解壓縮

wKiom1e9abqyKXGsAAAfgHsIYnY542.png

默認也是解壓到當前路徑

wKioL1e9abvjhmS_AAAY3x79900204.png

cd進去httpd的目錄裏面,首先我們先要看一下安裝說明,這是必須要看的,不然出現其他自己也不清楚的狀況就不好了

wKiom1e9abyCYQD3AAAM0ZIPTu8724.png

查看安裝說明,確認一些基本的信息

wKiom1e9abuxVNCiAAD2PYdQR2k092.png

wKioL1e9abzDKrR3AACRhJS_vAo144.png

再看看說明文件

wKioL1e9abzDJd9iAAAKTAI7G3w230.png

在說明文件裏面,會大概介紹這個包大概有什麼用之類

wKiom1e9ab2i7HrEAACdfSzU3s0953.png

看完說明文件以後,先不着急安裝,先看看configure腳本的一些細節說明

wKiom1e9ab7xujddAACcPJ_6vbk338.png

例如這裏就介紹了軟件的默認安裝目錄,如果不查看的話,可能我們都不知道文件放哪裏呢

wKioL1e9ab7RQgujAAA4edeZ1OU036.png

看看其他關鍵文件,例如程序二進制文件和庫文件等等,這裏還有提示我們添加環境變量,等下安裝完成這些都需要設置的

wKioL1e9ab-RRiy5AABIDtjL04I755.png

查看系統安裝關鍵的目錄,以及目錄的說明,安裝的時候,這些目錄的位置我們也換成自定義目錄位置

wKiom1e9fZHR286tAADHlLm0NXI592.png

支持交叉編譯

wKioL1e9acDSrjYwAAAvV5C1Y08422.png

還有其他許多功能開關,如果需要用的話需要好好看看這些功能的作用

wKiom1e9acCBWelZAACE7745st0983.png

開始運行腳本進行安裝的第一步了,首先是配置好一系列安裝文件

wKiom1e9acCSngMmAABKDwSoXaE513.png

腳本運行完會多了一堆的配置文件

wKioL1e9f9nAfa5yAADQvfNCFsc309.png

運行make,開始編譯

wKioL1e9acGwG9hCAAAIJKp0slk648.png

我們可以查看/usr/local目錄下面發現沒有http2文件。是因爲還沒有開始安裝

wKiom1e9acKA-i2dAABjqkcoNKo126.png

運行make install,安裝生成的安裝文件

wKioL1e9acKRJuSJAADF5oLCFMg237.png

此時我們進去安裝目錄裏面,看一下安裝好的文件,因爲第一次安裝,不知道怎麼使用的話,這個時候當然是查詢幫助手冊,但是我們發現沒有幫助手冊,不要慌,是因爲系統沒有查詢幫助文件的路徑

wKiom1e9acPxaLypAAB6ZoL5P70804.png

CentOS 7下面編輯/etc/man_db.conf的文件。在下圖的位置加上安裝好後的apache的幫助文件路徑

如果是CentOS 6的話,幫助文件的路徑會在/etc/man.config裏面

wKiom1e9acPijyV_AACtODggUTg600.png

此時已經可以查看apachectl的手冊了

wKioL1e9acTT-Lx1AAAbnU5CQso626.png

爲了方便我們直接運行apache的命令,我們把apache包的bin目錄導入$PATH裏面

在/etc/profile.d/下面創建http2.sh的腳本,然後運行該腳本,並且查看$PATH變量此時是否正確。腳本的信息如下圖所示。

wKiom1e9acSABWA2AABCefx-mJ4446.png

wKioL1e9acShRFg-AAAKZmn1_zA339.png

此時我們把apache的庫文件的路徑配置也寫入到/etc/ld.so.conf.d/目錄下面,創建一個http2.conf的腳本,內容是apache的lib的路徑,如下圖所示。

wKioL1e9acWB8lTqAACfsfj9_tE398.png

wKiom1e9acXBrUfVAAAFm895OmY922.png

庫文件的配置文件寫好以後,運行ldconfig -v的命令,把庫文件加載到內存裏面

wKiom1e9acXCRoDiAACTDiZdvdg448.png

接下來把創建頭文件的軟鏈接目錄到系統的/usr/include/目錄下面

wKioL1e9acXiuylVAAA_vbR8Ar4965.png

爲了配置測試,此處創建一個簡單的index.html文件到apache目錄下面

wKiom1e9gnHxRtUoAAANtF2eJDw475.png

以上都準備,我們可以開始運行apache服務器了,會發現有兩行報錯,這兩個報錯在此環境中是沒有問題的,因爲當前環境還有配置web服務器的dns和ip等信息

wKiom1e9gnCDAhJQAAAecLZLnUU084.png

啓動完apacche服務以後,我們用另外一臺服務器鏈接測試看看

wKioL1e9acbSUZYwAAAI7GCcunY161.png

此處正常情況下應該是正常運行,如果有發現報錯的話,排錯看看是哪裏出了問題

wKiom1e9acaholAXAAAacT-K7B0185.png

此時查看一下apache的端口,發現端口號80是開着的,應該httpd服務已經開啓了

wKioL1e9lJKBlDU4AABxtqg__us878.png

測試一下10.1.156.72的連通性,發現可以ping通,然後運行telnet 10.1.156.72到apache的服務器,發現鏈接不到,可能是防火牆的問題了。

wKiom1e9gm7wNqz3AABoMn-1h2w439.png

登陸到apache的服務器上面,把iptables裏面的信息都清空掉

wKioL1e9gm_AIU9NAAALgNNKEes975.png

重新在156.68的機器上面運行links 10.1.156.72,發現可以登陸


wKioL1e9gnDza88zAAAVUQ1qc6w273.png

在電腦上面的瀏覽器測試一下,也沒有問題,到此處實驗已完畢。

wKioL1e9hVryOFgUAAAdF_C9Bdc626.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章