程序包管理:rpm , yum ,與編譯

1.RPM,Redhat Package Manager。是Redhat和CentOS等Linux系統上常見的軟件安裝工具。

軟件安裝:

常見選項

-i                #install,安裝
-v                #詳細信息
-vv               #更加詳細的信息
-h                #顯示進度條,一個#表示2%
--test            #測試安裝,但不是真正執行安裝,dry run 模式
--nodeps          #忽略依賴關系
--replacepkgs     #重新安裝
--nodigest        #不檢查完整性
--nosignature     #不檢驗來源

軟件升級:

rpm {U|--upgrade} [install-options] package_file...
rpm {F|--freshen} [install-options] package_file...
    upgrade            #系統已經安裝了舊版程序的,則升級;沒有安裝過程序的,則安裝。
    freshen            #系統已經安裝了舊版程序的,則升級;沒有安裝過程序的,不安裝。
    --oldpackage       #降級
    --force            #強制升級

軟件卸載:

-e               #earse,卸載

rpm.png

rpm安裝的常見選項配搭是ivh。加上v和h是為了更加美觀,和能夠看安裝狀況。

但是我們可以看見rpm在卸載和安裝的時候,有時候會由于依賴關系而安裝失敗。

而且這些依賴關系要安裝軟件的人手動解決,如果依賴關系真是費時費力。

所以在安裝軟件的時候,可以選擇自動解決依賴關系的yum。

軟件查詢 Query

rpm {-q|--query} [select-option] [query-option]
一般選項:
-a            #列出所有系統安裝了的包
-f            #根據文件查詢指定文件是由哪一個包 安裝而來
-p            #查詢未安裝的包所提供的文件

[query-option]#特定選項
-i            #information,查看包的介紹信息
-c            #configfile,查看提供的配置文件
-d            #doc,程序軟件提供的幫助文檔類文件
-l            #查看指定程序包安裝后生成的所有文件
-R            #查詢指定程序包所依賴的CAPABILITY
--scripts     #查看程序包所帶的四種腳本
--provides    #列出程序包所提供的功能(capability)

常見組合: qf、qi、qc

qf_qi_qc.png

我們可以通過-qf選項來查找出命令 是由什么包安裝而來。

接著,我們也可以使用命令引用,把-qf輸出的包名輸出,再給-qi來查詢包的詳細信息

而-qc和-qd選項則可以只輸出這個包中的配置文件,和幫助文檔。

qRequire.png

-R選項,則是Require的縮寫。具體是列出包所依賴的功能(capability),具體也就是一些模塊或者其他的軟件。

大概是用來解決依賴關系,但是后來的yum由于可以通過repodata文件來自動分析,所以現在一般很少用。

--provide.png

而–provides選項則用來輸出這個包提供了一些什么模塊,或者功能(capability)。

由于coreutils提供的是一些主要的常用軟件,所以能看見提供了很多命令。

假如我們查詢的是一個沒有安裝過的包,也就是特定路徑下的rpm包,要使用-i,-c,-d,則需要配合-p選項。如,-qpi

qpi.png

2.yum文件包管理     Yellowdog Update Modifier

yum安裝軟件的優勢

yum會從yum源中獲取文件列表和依賴關系。

每一次創建cache的時候都會請求文件列表的校驗碼,來識別軟件包是否有更新(repodata.xml)

配置文件

/etc/yum.conf                #為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo      #為倉庫的指向提供配置

yum repository:yum repo    yum倉庫

儲存了眾多rpm包,以及包的相關的元數據文件。而yum的配置文件*.repo必須指向repodata目錄中repodata.xml所在的地方。

列出當前系統中所有資源庫:

yum repolist

yum repolist.png

如何自己手動指定一個yum源?

在/etc/yum.repos.d/創建一個以repo結尾的文件就可以!

假如已經自帶的Base文件已經失效,可以在/etc/yum.repos.d/下面隨便創建一個文件夾。

然后把原有的repo都復制到里面去,那么系統自帶的倉庫就都讀不到了。

repo.png

repo文件的格式。

這里最主要的是baseurl這個地址,因為這個地址指向服務器repodata文件。

其次name字段則是在初始化倉庫的時候顯示的名字。

當gpgcheck為0的時候,gpgkey也就不用添加也可以了。

而且enable的默認選項是1,0則表示不啟用。

repofile.png

我們可以初始化之后列出的倉庫多了一個Mirror_aliyun

看到配置文件的中括號里的內容對應repoid,name字段則對應repo name。

為了提高通用性,repo提供一些變量$basearch以$releasever,

分別表示系統架構以及發行版本,也就是CentOS7的7,以及x86_64.

完成了yum源的配置之后,我們就可以查看或者安裝軟件了。

yum info.png

yum的info子命令,類似于rpm -qi,同樣輸出包的信息。

yum install httpd.png

執行yum install httpd

自動解決軟件包之間的依賴關系

3.編譯安裝(CentOS6上)

前期的準備;

首先要安裝編譯的環境

yum groupinstall "Development Tools" "Desktop Platform Development"

然后要獲得源碼包,可以通過wget等方式下載到源碼包。

然后解壓得到的壓縮包,并且切換到源碼的目錄里面

編譯的三大步驟:

(1) ./configure      

            #這個腳本主要用于檢查各種指定特性所依賴的外部文件

            #配合各種選項,可以啟用特性和調整軟件的安裝路徑等。

示例:編譯httpd2.2

./configure --prefix=/usr/local/apache --sysconf=/etc/httpd2.2 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

./configure檢查期間,假如報錯,可能是一些依賴的devel包沒有裝。

裝上特性所依賴的包之后,再執行一次./configure腳本也是沒有問題的。

configure.png

       

(2)make

    在./configure文件檢查沒有問題之后,執行make。就會自動地編譯。

make1.png

make2.png

(3)make install

make install命令實際上是把已經編譯好的軟件復制到對應位置的一個命令。

所以在三大步驟里面,問題最多的是第一步./configure。

makeinstall.png

編譯好之后。

  1. 把軟件添加到PATH變量的路徑中:修改/etc/profile.d/httpd.sh

    添加一行:PATH=程序二進制執行文件所在的目錄:$PATH

    如,PATH=/usr/local/apache/bin:$PATH

    那樣重新開機之后,系統用戶初始化環境的時候就會能在PATH中讀到二進制的文件,而不用每次都是用完全的路徑。

  2. 添加二進制執行文件所依賴的庫文件 到 需要加載的庫中

    系統能順利找到了二進制文件之后,我們還要讓系統能順利找到二進制執行文件所需要的庫

  所以我們要在/etc/ld.so.conf.d/目錄下創建一個與軟件同名的conf文件

    如,/etc/ld.so.conf.d/httpd.conf

  然后再往里面添加一行庫所在的目錄/usr/local/apache/lib,并使用ldconfig來重新生成緩存

3.導入include頭文件

可以選擇復制,或者做軟連接的方式,把include目錄下的文件都復制到/usr/include目錄下

include.png

4.導出幫助手冊

最后我們編輯一下/etc/man.conf文件,在里面添加一個MANPATH條目

manpath.png

  

最后重新登錄一下之后,我們就可以使用apachectl start命令來啟動httpd,并使用ss命令查看使用狀況

ss-tnl.png

使用瀏覽器直接訪問ip的時候,運行成功。

work.png

原創文章,作者:菠菜,如若轉載,請注明出處:http://www.www58058.com/13457

(0)
菠菜菠菜
上一篇 2016-03-25
下一篇 2016-03-26

相關推薦

  • 服務器故障的解決方法以及基本腳本的編寫

    1,當開機時一直重新啟動怎么辦? 在開機時就如字符界面后按下a鍵然后進入單用戶模式,通過設置 [root@CentOS6 boot]# vim /etc/inittab 這個文件,將里面的開機啟動項改為多用戶模式就可。 # id:3:initdefault: “/etc/inittab” 26L, 884C 講id這項設置完成后重新啟動就好。 2,忘記roo…

    Linux干貨 2017-05-15
  • 集中練習5-磁盤分區、文件系統掛載、RAID管理

    集中練習5-磁盤分區、文件系統掛載、RAID管理

    Linux干貨 2017-10-27
  • N28-第四周博客作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。

    2、編輯/etc/group文件,添加組hadoop。

    3、手動編輯/etc/passwd文件新增一行,添加用戶hadoop,其基本組ID為hadoop組的id號;其家目錄為/home/hadoop。

    4、復制/etc/skel目錄為/home/hadoop,要求修改hadoop目錄的屬組和其它用戶沒有任何訪問權限。

    5、修改/home/hadoop目錄及其內部所有文件的屬主為hadoop,屬組為hadoop。

    6、顯示/proc/meminfo文件中以大寫或小寫S開頭的行;用兩種方式;

    7、顯示/etc/passwd文件中其默認shell為非/sbin/nologin的用戶;

    8、顯示/etc/passwd文件中其默認shell為/bin/bash的用戶;

    9、找出/etc/passwd文件中的一位數或兩位數;

    10、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;

    11、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行;

    12、打出netstat -tan命令執行結果中以‘LISTEN’,后或跟空白字符結尾的行;

    13、添加用戶bash, testbash, basher, nologin (此一個用戶的shell為/sbin/nologin),而后找出當前系統上其用戶名和默認shell相同的用戶的信息;

    Linux干貨 2017-12-26
  • N25-第五周作業

    第五周作業 1、顯示當前系統上root、fedora或user1用戶的默認shell; grep "^\(root|fedora|user1\)" /etc/passwd | cut -d: -f7 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(); grep "…

    Linux干貨 2017-02-14
  • Python from entry to abandon 4

        python from entry to abandon系列的收官之作    本篇博客將會介紹《簡明Python教程》的最后四章內容。并在最后附上對于本書的個人評價和下階段自學Python系列博客更新的計劃。    13.異常   &nbsp…

    Linux干貨 2017-04-07
  • 第六周:vim編輯器和cron計劃任務的使用練習

    查看vim編輯器的使用介紹另見:http://afterdawn.blog.51cto.com/7503144/1855557 at及cront計劃任務介紹見:http://afterdawn.blog.51cto.com/7503144/1864365 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件…

    Linux干貨 2016-10-26
欧美性久久久久