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

開源程序源代碼的獲?。?/p>

    官方自建站點:

        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 Tools

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

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

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

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

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

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

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

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

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

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

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

默認也是解壓到當前路徑

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

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

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

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

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

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

再看看說明文件

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

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

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

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

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

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

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

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

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

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

Linux軟件包管理之程序包編譯安裝支持交叉編譯的文件

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

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

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

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

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

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

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

運行make,開始編譯

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

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

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

運行make install,安裝編譯完的文件

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

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

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

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

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

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

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

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

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

在/etc/profile.d/下面創建http2.sh的腳本,然后運行該腳本,并且查看$PATH變量此時是否正確。腳本的信息如下圖所示。Linux軟件包管理之程序包編譯安裝

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

原創文章,作者:~微風~,如若轉載,請注明出處:http://www.www58058.com/39677

(0)
~微風~~微風~
上一篇 2016-08-25
下一篇 2016-08-25

相關推薦

  • 在虛擬機上使用CentOS6的兩個iso文件創建本地yum倉庫和http倉庫

    yum客戶端和服務器端都是本虛擬機 一、創建本地磁盤訪問的yum倉庫 條件和要求: a.guest虛擬機需要添加2個光驅,分別裝載CentOS6.4發行版的DVD1和DVD2 b.DVD1和DVD2的掛載目錄分別是:/media/cdrom/下的os和extras,并設置開機掛載 c.使用CentOS-Media.repo作為yum客戶端配置文件,將其他re…

    Linux干貨 2015-09-22
  • 實驗:配置靜態路由2

    實驗:配置靜態路由2 IP地址規劃如下: VMware實驗環境下給網卡分配不同的VMnet以實現物理分隔廣播域: Client1-VMnet1: R1-VMnet1-VMnet2: R2-VMnet2-VMnet3: R3-VMnet3-VMnet4: Client2-VMnet4: 注意,環境準備: 1、MAC地址不要有沖突,如果是復制的虛擬機,對于cen…

    2017-03-26
  • Nginx反向代理的常用調度算法

    upstream 調度算法 1.rr 按客戶端請求順序把客戶端的請求逐一分配到不同的后端的服務器,這相當于lvs中的rr算法。如果后端服務器巖機(默認情況下只檢測80端口,如果后端報502,404,403,503,還是會直接返給用戶),巖機服務器會被自動剔除,使用戶訪問不受影響,請求會分配給正常的服務器 2.weight(權重) 在輪詢算法的基礎上加上權重(…

    Linux干貨 2016-06-01
  • 文本處理工具之sed

    文本處理工具之sed 1、sed是一種行編輯器,對文本逐行處理。處理時,它會將文本行載入”模式空間”(臨時緩沖區),接著用sed命令對模式空間的內容進行處理,處理完成后,將模式空間內容輸出到顯示屏 與之類似的處理工具還有grep和awk,相比grep,sed不僅對文本有過濾功能,還可以對文本進行其他增刪改的操作。而相比awk,sed顯得更加簡單高效。下面我們…

    2017-03-18
  • Linux基礎知識之history命令詳解

     該博文以CentOS6.8_x86_64系統為基礎,Xshell 5遠程連接CentOS系統,以root身份登錄系統。 為什么要學習history命令?     history命令是Linux的一個內嵌的shell命令,history命令的使用有時會大大縮短我們輸入命令的時間,達到節省命令快捷操作的要求。學…

    Linux干貨 2016-07-27
  • Linux文件權限管理-2016-8-04

    Linux文件權限管理 學習大綱 一 關于文件和目錄的權限基本概述(rwx); 二 針對文件或目錄權限管理的命令: a) 相關命令:chown , chgrp ,chmod chown修改文件屬主 和 屬組 語法:chown  [OPTION]…  [OWNER][:[GROUP]]  FILE&#8230…

    Linux干貨 2016-08-04

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-26 14:45

    文章對編譯安裝的知識總結的很全面,同時也通過示例演示編譯httpd加深了自己對編譯安裝的理解。但是編譯安裝后的配置未能進行詳細的演示,這里如果詳細點,這便是一篇上等佳作,值得置頂推薦

欧美性久久久久