yum前端工具與源碼編譯安裝

概述:本章內容重要講解yum(rpm前端工具)和rpm源碼編譯安裝,前者可以有效的解決軟件安裝過程中存在的依賴關系,從而提升我們使用系統的效率;后者是我們進階Linux系統,了解程序包安裝的過程本質

1、YUM: Yellowdog Update Modifier

  Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器?;赗PM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。

  yum 的宗旨是自動化地升級,安裝/移除rpm 包,收集rpm 包的相關信息,檢查依賴性并自動提示用戶解決。yum 的關鍵之處是要有可靠的repository,顧名思義,這是軟件的倉庫,它可以是http 或ftp 站點,也可以是本地軟件池,但必須包含rpm 的header,header 包括了rpm 包的各種信息,包括描述,功能,提供的文件,依賴性等。正是收集了這些header 并加以分析,才能自動化地完成余下的任務。

  yum 的理念是使用一個中心倉庫(repository)管理一部分甚至一個distribution 的應用程序相互關系,根據計算出來的軟件依賴關系進行相關的升級、安裝、刪除等等操作,減少了Linux 用戶一直頭痛的dependencies 的問題。這一點上,yum 和apt 相同。apt 原為debian 的deb 類型軟件管理所使用,但是現在也能用到RedHat 門下的rpm 了。

  yum 主要功能是更方便的添加/刪除/更新RPM 包,自動解決包的倚賴性問題,便于管理大量系統的更新問題。

  yum 可以同時配置多個資源庫(Repository),簡潔的配置文件(/etc/yum.conf),自動解決增加或刪除rpm 包時遇到的依賴性問題,保持與RPM 數據庫的一致性。

  yum repository: yum repo,存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下)

    文件服務器:

        ftp://       FTP服務器站點

        http://      web服務器站點

        file:///     本地軟件池

yum命令的用法:

yum命令使用的前提是要有yum資源庫(Repository

而yum資源庫路徑則是repodata目錄的父目錄路徑

例如:http://10.1.0.1/cobbler/ks_mirror/7/repodata

資源庫地址url:http://10.1.0.1/cobbler/ks_mirror/7/

yum [options] [command] [package …]

選項:

    -c:指定配置文件

    -e 靜默執行 

    -t 忽略錯誤

    -R[分鐘] 設置yum處理一個命令的最大等待時間

    -y 對所有的提問都自動應答“yes”;

    -v:詳細模式; 

    -d:設置調試等級(0-10); 

    -e:設置錯誤等級(0-10);  

    -C:完全從緩存中運行,而不去下載或者更新任何頭文件。

    –skip-broken 忽略依賴問題

    –nogpgcheck 忽略GPG驗證

    –installroot=/SOME/TO/PATH將該軟件安裝在/SOME/TO/PATH中而不使用默認路徑

     –disablerepo=repoidglob:臨時禁用此處指定的repo

     –enablerepo=repoidglob:臨時啟用此處指定的repo

     –noplugins:禁用所有插件

主要常用命令用法格式

顯示倉庫列表:

#yum repolist [all|enabled|disabled]

wKiom1fAIKCCV_17AACfGOcrP5w087.jpg

顯示程序包

顯示yum可安裝和可更新的RPM包:

#yum list [all | glob_exp1] [glob_exp2] […]

#yum list {available|installed|updates} [glob_exp1][…]

顯示已安裝的包

#yum list installed

已安裝且不在資源庫的包

#yum list extras 

查看程序包information:

顯示指定的可安裝和可更新的RPM包的描述信息和概要信息;

#yum info [package_name]

wKiom1fAIjGjsr2ZAACh4GH3bKs779.jpg

已安裝包的信息

#yum info installed 


以指定的關鍵字搜索程序包名及summary信息(哪些軟件包中含有關鍵字都會被搜索出來,包括注釋中含有);

#yum search string1 [string2] […](關鍵字)


軟件安裝:

根據yum配置文件(/etc/yum.conf與/etc/yum.repo.d/*.repo)的設置來從repository中下載安裝軟件

#yum install package1_name [package2_name] […]  

本地安裝(下載好的直接安裝) 

#yum localinstall package_name

重新安裝包

#yum reinstall package1_name [package2_name] […]

更新軟件

列出已安裝程序包的可用更新

#yum list updates

檢查可用程序升級:

#yum check-update

更新特定軟件

根據yum配置文件(/etc/yum.conf與/etc/yum.repo.d/*.repo)的設置來從repository中下載更新軟件

#yum update package1_name [package2_name] […] 

#yum upgrade package1_name [package2_name] […] 

本地更新(下載好的直接更新) 

#yum localupdate package1_name [package2_name] […]

降級

#yum downgrade package1 [package2] […]

全部更新

#yum update

注意:更新系統也可以用yum工具,但是強烈建議不要亂升級,因為新系統可能在升級過程中和之后都有可能出現不穩定安全因素,所以如果要想使用新系統,最好是直接安裝新系統,因為linux本身是支持多操作系統的,所以可以同時存在幾個系統,這樣用哪個就啟動那個,如果新系統有問題,也還是可以重新啟動進入老版系統

卸載軟件

只刪除軟件包而保留配置文件和數據文件

#yum remove package1 [package2] […]

刪除軟件和其所有文件

#yum erase package1 [package2] […]

查看指定的特性(可以是某文件)是由哪個程序包所提供:

#yum provides | whatprovides feature1 [feature2][…]

wKiom1fAKEDwHj3EAADUCqQB400864.jpg

清理本地緩存:

#yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]

#yum clean packages 清除臨時包文件(/var/cache/yum 下文件)

#yum clean headers 清除rpm頭文件

#yum clean oldheaders 清除舊的rpm頭文件

#yum clean all 清除所有yum倉庫緩存(包括軟件本身及列表)    

構建緩存:

#yum makecache

注意:以上清除緩存和構建緩存可以更新本機列表與yum服務器同步

查看yum事務歷史:

    yum history [info|list|packages-list|packages-info|

    summary|addon-info|redo|undo|

    rollback|new|sync|stats]

    yum history

    yum history info 6

    yum history undo 6

日志:/var/log/yum.log

顯示軟件包依賴關系

顯示rpm軟件包的所有依賴關系。

#yum deplist package_name

顯示rpm軟件包的依賴關系;

#yum resolvedep package_name

wKioL1fANErQ4vlCAADEQ6_ifr8049.jpg

包組管理的相關命令:

安裝程序組group

yum groupinstall group1 [group2] […]

升級程序組group

yum groupupdate group1 [group2] […]

查看可能批量安裝的列表

yum grouplist [hidden] [groupwildcard] […]

顯示程序組group信息

yum groupinfo group1 […]

刪除程序組group

yum groupremove group1 [group2] […]

自動搜索最快鏡像插件:yum install yum-fastestmirror 

安裝yum圖形窗口插件:yum install yumex

yum-config-manager:用來管理yum配置選項和yum資料庫

是一個程序,可以管理主要yum配置選項、 切換的資料庫是啟用還是禁用,并添加新的存儲庫。

yum-config-manager [options]

yum-config-manager –save     保存當前選項

yum-config-manager –enable   “倉庫名”啟用repo資料倉庫

yum-config-manager –disable  “倉庫名”禁用repo資料倉庫

yum-config-manager –add-repo=ADDREPO   從指定的文件或 url添加(并啟用)repo資料倉庫

例如:yum-config-manager –add-repo=http://172.16.0.1/cobbler/ks_mirror/CentOS-Xx86_64/

注意:yum-config-manager –add-repo=ADDREPO 會在/etc/yum.repo.d/下創建對應的.repo文件

其他yum工具

yum-debug-restore        

yum-builddep              

yumdb                     

yumdownloader             

yum-complete-transaction  

yum-debug-dump            

yum-groups-manager 

與yum相關文件及目錄的功能和作用

存放與目標“容器倉庫”對比更新的rpm列表記錄;更新軟件時與本機rpm數據庫做對比,以此判斷下載那個軟件。

/var/cache/yum

存放軟件升級需求、版本之間的差異和數字證書信息

/var/lib/yum 

/etc/yum/pluginconf.d/

/etc/yum/version-groups.conf

yum倉庫

yum的repo配置文件中可用的變量:

$releasever: 當前OS的發行版的主版本號

$arch: 平臺, i386,i486,i586,x86_64等

$basearch:基礎平臺; i386

$YUM0-$YUM9:自定義變量

實例:

    http://server/centos/$releasever/$basearch/

    http://server/centos/7/x86_64

    http://server/centos/6/i384

創建yum倉庫:

createrepo [options] <directory>

yum的配置文件分為兩部分:main 和repository

  main部分定義了全局配置選項,整個yum 配置文件應該只有一個main。常位于/etc/yum.conf 中。

  repository部分定義了每個源/服務器的具體配置,可以有一到多個。常位于/etc/yum.repo.d 目錄下的各文件中。

yum客戶端配置文件:

/etc/yum.conf:為所有倉庫提供公共配置

[main]

cachedir=/var/cache/yum

    #yum 緩存的目錄,yum 在此存儲下載的rpm 包和數據庫,默認設置為/var/cache/yum

keepcache=0

    #安裝完成后是否保留軟件包,0為不保留(默認為0),1為保留

debuglevel=2

    #Debug 信息輸出等級,范圍為0-10,缺省為2

logfile=/var/log/yum.log

    #yum 日志文件位置。用戶可以到/var/log/yum.log 文件去查詢過去所做的更新。

pkgpolicy=newest

    #包的策略。一共有兩個選項,newest 和last,這個作用是如果你設置了多個repository,而同一軟件在不同的repository 中同時存在,yum 應該安裝哪一個,如果是newest,則yum 會安裝最新的那個版本。如果是last,則yum 會將服務器id 以字母表排序,并選擇最后的那個服務器上的軟件安裝。一般都是選newest。

distroverpkg=redhat-release

    #指定一個軟件包,yum 會根據這個包判斷你的發行版本,默認是redhat-release,也可以是安裝的任何針對自己發行版的rpm 包。

tolerant=1

    #有1和0兩個選項,表示yum 是否容忍命令行發生與軟件包有關的錯誤,比如你要安裝1,2,3三個包,而其中3此前已經安裝了,如果你設為1,則yum 不會出現錯誤信息。默認是0。

exactarch=1

    #有1和0兩個選項,設置為1,則yum 只會安裝和系統架構匹配的軟件包,例如,yum 不會將i686的軟件包安裝在適合i386的系統中。默認為1。

retries=6

    #網絡連接發生錯誤后的重試次數,如果設為0,則會無限重試。默認值為6.

obsoletes=1

    #這是一個update 的參數,具體請參閱yum(8),簡單的說就是相當于upgrade,允許更新陳舊的RPM包。

plugins=1

    #是否啟用插件,默認1為允許,0表示不允許。我們一般會用yum-fastestmirror這個插件。

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum

# Note: yum-RHN-plugin doesn't honor this.

metadata_expire=1h

installonly_limit = 5

# PUT YOUR REPOS HERE OR IN separate files named file.repo

# in /etc/yum.repos.d

除了上述之外,還有一些可以添加的選項,如:

exclude=selinux*  // 排除某些軟件在升級名單之外,可以用通配符,列表中各個項目要用空格隔開,這個對于安裝了諸如美化包,中文補丁的朋友特別有用。

gpgcheck=1  // 有1和0兩個選擇,分別代表是否是否進行gpg(GNU Private Guard) 校驗,以確定rpm 包的來源是有效和安全的。這個選項如果設置在[main]部分,則對每個repository 都有效。默認值為0。

/etc/yum.repos.d/*.repo:為倉庫的指向提供配置

在Centos7.2系統中/etc/yum.repo.d/下默認有如下文件:

wKiom1fARIKSpCGuAABpAI-o38M324.jpg

其中

CentOS-Base.repo 是yum 網絡源的配置文件

CentOS-Media.repo 是yum 本地源的配置文件

倉庫指向的定義:

[repositoryID]                   

    代表“容器倉庫”或yum服務器的名稱。中括號必須存在,名字可以任意但不能重復,否則yum會不知道該到哪里找容器相關軟件列表文件

name=Some name for this repository

    只是說明此容器的意義,重要性不高

mirrorlist=:

    列出容器可以使用的鏡像站點(如果不想使用,可以用#批注掉這行)

baseurl=url://path/to/repository/

    容器的實際地址(網址、路徑),非常重要(容器的實際地址必須要有一個名為repodata的目錄存在,以此可以判斷哪些地址是容器的實際地址)

enabled={1|0}

    容器的啟用與禁用(默認不添加此列即為啟用,正常啟用為1,禁用為0)

gpgcheck={1|0}

    rpm數字證書,是否啟用校驗rpm文件內的數字證書

gpgkey=URL          

    數字證書的公鑰文件的所在位置。一般使用默認即可

enablegroups={1|0}    (如果不想使用,可以用#批注掉這行)

failovermethod={roundrobin|priority}

默認為: roundrobin,意為隨機挑選;

cost= 默認為1000

例如:

我Centos7.2默認yum設置文件CentOS-Base.repo

wKiom1e_y9PwyPFZAAIIBcypq6g588.jpg

根據教室環境自定義的配置文件

wKiom1e_ydbBkk-TAABRrFHloz0145.jpg

Centos7.2默認yum設置文件CentOS-Media.repo

[root@localhost old]# cat CentOS-Media.repo 
# CentOS-Media.repo
#
#  This repo can be used with mounted DVD media, verify the mount point for
#  CentOS-7.  You can use this repo and yum to install items directly off the
#  DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
#  yum --enablerepo=c7-media [command]
#  
# or for ONLY the media repo, do this:
#
#  yum --disablerepo=\* --enablerepo=c7-media [command]

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

在baseurl 中第2個路徑為/media/cdrom(即為光盤掛載點)

將enabled=0改為1  可以啟用本地源

注意:如果要使用本地源作為yum倉庫,要將yum 網絡源配置文件改名為CentOS-Base.repo.bak,否則會先在網絡源中尋找適合的包,改名之后直接從本地源讀取。

yum源倉庫安裝軟件程序包是一定的順序根據查詢這些配置文件,來確定從哪里下載安裝軟件的,第一次匹配到對應的程序包就會安裝,并且不會繼續向后查找,而且如果中間發生錯誤就會立刻停止,不在查詢讀取別的配置文件。

關于repo 文件的格式

所有repository 服務器設置都應該遵循如下格式:

[serverid]
name=Some name for this server
baseurl=url://path/to/repository/
  • serverid 是用于區別各個不同的repository,必須有一個獨一無二的名稱;

  • name 是對repository 的描述,支持像$releasever $basearch這樣的變量;

  • baseurl 是服務器設置中最重要的部分,只有設置正確,才能從上面獲取軟件。它的格式是:

baseurl=url://server1/path/to/repository/
     url://server2/path/to/repository/
     url://server3/path/to/repository/

其中url 支持的協議有 http:// ftp:// file:// 三種。baseurl 后可以跟多個url,你可以自己改為速度比較快的鏡像站,但baseurl 只能有一個,也就是說不能像如下格式:

baseurl=url://server1/path/to/repository/
baseurl=url://server2/path/to/repository/
baseurl=url://server3/path/to/repository/

其中url 指向的目錄必須是這個repository header 目錄的上一級,它也支持$releasever $basearch 這樣的變量。
url 之后可以加上多個選項,如gpgcheck、exclude、failovermethod 等,比如:

[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
     http://redhat.linux.ee/pub/fedora/linux/core/updates/$releasever/$basearch
     http://fr2.rpmfind.net/linux/fedora/core/updates/$releasever/$basearch
gpgcheck=1
exclude=gaim
failovermethod=priority

其中gpgcheck,exclude 的含義和[main] 部分相同,但只對此服務器起作用,failovermethode 有兩個選項roundrobin 和priority,意思分別是有多個url可供選擇時,yum 選擇的次序,roundrobin 是隨機選擇,如果連接失敗則使用下一個,依次循環,priority 則根據url 的次序從第一個開始。如果不指明,默認是roundrobin。

關于變量

  • $releasever:代表發行版的版本,從[main]部分的distroverpkg獲取,如果沒有,則根據redhat-release包進行判斷。

  • $arch:cpu體系,如i686,athlon等

  • $basearch:cpu的基本體系組,如i686和athlon同屬i386,alpha和alphaev6同屬alpha。

導入GPG KEY

yum 可以使用gpg 對包進行校驗,確保下載包的完整性,所以我們先要到各個repository 站點找到gpg key,一般都會放在首頁的醒目位置,一些名字諸如RPM-GPG-KEY-CentOS-7 之類的純文本文件,把它們下載下來,然后用rpm –import RPM-GPG-KEY-CentOS-7 命令將key 導入。

使用第三方軟件庫

Centos/RHEL默認的yum軟件倉庫非常有限,僅僅限于發行版本那幾張盤里面的常規包和一些軟件包的更新,利用RpmForge,可以增加非常多的第三方rpm軟件包。RpmForge庫現在已經擁有超過10000種的CentOS的軟件包,被CentOS社區認為是最安全也是最穩定的一個第三方軟件庫。

1、安裝yum-priorities插件

這個插件是用來設置yum在調用軟件源時的順序的。因為官方提供的軟件源,都是比較穩定和被推薦使用的。因此,官方源的順序要高于第三方源的順序。如何保證這個順序,就需要安裝yum-priorities這插件了。

# yum -y install yum-priorities

yum前端工具與源碼編譯安裝

2、安裝完yum-priorities插件后需要設置/etc/yum.repos.d/ 目錄下的.repo相關文件(如CentOS-Base.repo),在這些文件中插入順序指令:priority=N (N為1到99的正整數,數值越小越優先)

一般配置[base], [addons], [updates], [extras] 的priority=1,[CentOSplus], [contrib] 的priority=2,其他第三的軟件源為:priority=N (推薦N>10)

以CentOS-Base.repo 為例:

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://ftp.sjtu.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1

3、下載與安裝相應rpmforge的rpm文件包

# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

4、安裝DAG的PGP Key

# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt

5、驗證rpmforge的rpm文件包

# rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm

6、安裝rpmforge的rpm文件包

# rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm

yum前端工具與源碼編譯安裝

7、設置/etc/yum.repos.d/rpmforge.repo文件中源的級別

[root@TS-DEV yum.repos.d]# cat rpmforge.repo 

### Name: RPMforge RPM Repository for RHEL 5 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
priority=12

8、測試安裝

# yum install htop

yum前端工具與源碼編譯安裝

參考 http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b

其他第三方軟件庫如 EPEL(Extra Packages for Enterprise Linux ) 和 RPMFusion 的安裝與使用和RPMForge類似,可自行查找資料安裝。

二、程序包編譯

程序包編譯安裝:

Application-VERSION-release.src.rpm –> 安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝

源代碼–>預處理–>編譯–>匯編–>鏈接–>執行

編譯安裝

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: Apache Software Foundation)

mariadb.org

代碼托管:

SourceForge.net

Github.com

code.google.com

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

編譯C源代碼:

準備: 提供開發工具及開發環境

開發工具: make, gcc等

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

glibc:標準庫

實現:通過“包組”提供開發組件

CentOS 6:

Development Tools

Server Platform Development

CentOS 7:

Development Tools

Development and Creative Workstation

編譯安裝

第一步: 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

如何使用光盤當作本地yum倉庫:

(1) 掛載光盤至某目錄,例如/media/cdrom

# mount /dev/cdrom /media/cdrom

(2) 創建配置文件

[CentOS7]

name=

baseurl=

gpgcheck=

enabled=

方法一:直接在/etc/yum.repos.d/CentOS-Base.repo如寫入[cdrom]部分內容

yum前端工具與源碼編譯安裝

方法二:

使用yum-config-manager –add-repo=ADDREPO命令

#yum-config-manager –add-repo=file:///media/cdrom

yum前端工具與源碼編譯安裝

yum前端工具與源碼編譯安裝

同時最好在~/.bashrc中添加掛載命令

# mount /dev/cdrom /media/cdrom

這樣每次重新都可以自動掛載了

2、源碼編譯安裝http

注意:首先在安裝http服務時,我們需要安裝公鑰和Development Tools程序包組

實現下載或在光盤中獲取

[root@centos7 ~]# rpm –import RPM-GPG-KEY-CentOS-7

[root@centos7 ~]# yum groupinstall Development\ Tools

然后獲取http的源碼包

我自己是在我們教室環境的ftp服務器上下載的httpd-2.2.29.tar.bz2,大家可以到各類源碼包官網下載

解壓

[root@centos7 ~]# tar jxf httpd-2.2.29.tar.bz2 

然后在解壓出來的目錄內httpd-2.2.29中最好先讀取一下INSTALL、README

可以運行

注意:一下操作必須在解壓后的程序目錄內進行例如httpd-2.2.29中

./configure –help

查看configure腳本的幫助文檔

其中一下兩項為比較重要,一個是安裝程序對應的配置文件路徑一個是安裝程序位置,可缺省,已默認路徑安裝

默認httpd安裝路徑為/usr/local/apache2

–sysconfdir=DIR

–prefix=$HOME

格式類此

[root@centos7 httpd-2.2.29]# ./configure –prefix=/usr/local/apache –sysconfdir=/etc/apache

我自己就默認執行

[root@centos7 httpd-2.2.29]# ./configure

執行完之后

在/usr/local目錄下還沒有生成相應的目錄

運行命令

make

運行完成后

運行命令

make install

運行結束安裝成功

二、作業:

1、輸入若干個數值存入數組中,采用冒泡算法進行升序或降序排序

#!/bin/bash
#
#輸入若干個數值存入數組中,采用冒泡算法進行升序或降序排序
read -p "請輸入一組數字并有空格隔開,以完成數組賦值:" -t 15 -a num
echo "${num[@]}"
declare -i i=1
n=${#num[@]}
j=$[${#num[@]}-1]
for ((i=1;$i<=$j;i++))
do
        for((m=1;$m<=$[$j+1-$i];m++));
        do
                if [ ${num[$[$n-$m]]} -lt ${num[$[$n-$m-1]]} ];then
                        ZanCun=${num[$[$n-$m]]}
                        num[$[$n-$m]]=${num[$[$n-$m-1]]}
                        num[$[$n-$m-1]]=$ZanCun
                        #echo ${num[@]}

                else
                        continue
                fi
        done
done
echo ${num[@]}

2、刪除kernel包后,無法啟動,并恢復之

#rpm -e kernel --nodeps

注意:利用yum刪除也可以,但是一般不注意容易會刪除包括kernel和及其依賴包,要修復則會好很長時間

檢測上面刪除操作成功與否

#echo $?

0

wKiom1fBM1_BnGjUAAAX-v6O5vE125.jpg

重啟系統

#shutdown -r now

wKioL1fBM2Dg_YV3AAAUxkupMR0993.jpg

已經無法啟動了,重新啟動,并在如下界面單擊Esc鍵

wKiom1fBM2GRTeI1AABATje4fwY090.jpg

選擇光盤啟動

wKioL1fBM2HC-MfDAAAotniFJfI060.jpg

選擇第三選救援修復模式

wKioL1fBM2OxcX4uAABu6UxRhL4585.jpg

選擇語言環境

wKiom1fBM2TybvG1AABI-DIsUaM826.jpg

下圖提示你,原先正常的系統根路徑已經變為/mnt/sysimage.而我們進去后默認為救援系統所在的根路徑.

可以通過chroot /mnt/sysimage來使我們進入救援模式后直接切換原系統的根目錄下

wKiom1fBM2WQAF5wAABH5eN7IJo730.jpg

選擇shell,啟動shell,進入命令行模式

wKioL1fBM2Xismk_AAA0dOTJqts549.jpg

wKiom1fBM2azh4EiAAAPftS19js058.jpg

根據下圖步驟分別完成,掛載光盤,并安裝kernel程序包;

注意:一開始我并沒有在原系統/mnt/sysimage根目錄下,即沒有用chroot /mnt/sysimage切換根目錄;

所以安裝程序包時,需要指定根目錄/mnt/sysimage,即最后一步中–roo=/mnt/sysimage的選項;

否則,就像圖中,沒指定的哪一步失??;成功后重啟,系統就可以正常使用了

wKioL1fBM2nQjkCBAAFplbtMfcQ469.jpg

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

(0)
NameLessNameLess
上一篇 2016-08-29
下一篇 2016-08-29

相關推薦

  • 20160802課堂練習題

    練習: 1、  當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作? 無法cd進入該目錄,但可以ls查看到該目錄下的文件,其余的任何操作都執行不了。 2、  當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作? 能夠進入該目錄,不能讀取到信息;但如果知道有哪些文件及目錄是可以創建…

    Linux干貨 2016-08-04
  • 2016/10/19作業:軟鏈接與硬鏈接的區別

    軟鏈接和硬鏈接的區別 linux中鏈接分為兩種,一種是硬鏈接(Hard Link),一種是符號鏈接(Symbolic Link),其中,符號鏈接又稱為軟鏈接。 硬鏈接: 在Linux文件系統中 ,磁盤中的所有文件都有一個編號,這個編號稱為索引節點(Inode)。在Linux中,多個同一索引節點可以有多個文件名,這就是硬鏈接。硬鏈…

    Linux干貨 2016-10-20
  • Linux中高級文件系統管理

    一、磁盤配額管理             定義:限制普通用戶對某個目錄寫空間大小的限制     1、此策略是針對文件系統,并非硬盤     2、可以根據不同組和不同用戶進行不同的策…

    Linux干貨 2016-08-29
  • centos系統自動化安裝

    本章內容 系統安裝過程配置anaconda自動化安裝系統 安裝程序 CentOS系統安裝 系統啟動流程: bootloader–>kernel(initramfs)–>rootfs–>/sbin/init anaconda: 系統安裝程序 tui: 基于圖形庫curses的文本窗口 gui:圖形窗口 安裝程序啟動過程 MBR…

    Linux干貨 2016-09-19
  • 第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別統計這兩類用戶的個數;通過字符串比較來實現;    #!/bin/bash     echo "可登錄類型有有$(awk -F: '/[^\<nologin\&gt…

    Linux干貨 2017-02-07
  • LINUX命令歷史

    LINUX命令歷史 LINUX的命令歷史是什么? linux的命令歷史的作用是,記錄執行過的命令。如果你經常使用 Linux 命令行,那么使用 命令歷史可以有效地提升你的效率。history(管理歷史命令)語法:[root@localhost]#history(選項)(參數)選項:n:n為數字,要列出最近的 n 筆命令列表-c(清空所有歷史命令)-d (刪除…

    2017-09-14

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-29 09:19

    yum源的配置與使用,是我們以后工作,學習中離不開的工具,需要熟練掌握,同時今后為了使用軟件的新功能,或新特性而需要我們進行編譯安裝。這些都需要我們熟練掌握。文章內容完整,整體讀下來,能學到很多東西,建議對編譯安裝后的操作進行一個詳細的介紹,這也是很重要的部分。

欧美性久久久久