yum詳解

yum

YUM: Yellowdog Update Modifier,rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包,up2date的替代工具

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

yum對軟件包的管理機制

yum詳解—–引用了鳥哥linux私房菜的圖

yum配置文件

yum客戶端配置文件:

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

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

倉庫指向的定義格式:

[repositoryID]
name=Some name for this repository
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=   $basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled={1|0}
gpgcheck={1|0}————-(相當于rpm -K 查找鑰匙?。?br />gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
enablegroups={1|0}
failovermethod={roundrobin|priority}
默認為:roundrobin,意為隨機挑選;
cost=  默認為1000

意義:

  • [base]:代表容器的名字!中刮號一定要存在,里面的名稱則可以隨意取。但是不能有兩個相同的容器名稱, 否則 yum 會不知道得該到哪里去找容器相關軟件列表檔案。

  • name:只是說明一下這個容器的意義而已,重要性不高!

  • mirrorlist=:這個的意思是指定多個baseurl的文件路徑,就能使用多個baseurl了;

  • baseurl=:這個最重要,因為后面接的就是容器的實際網址! mirrorlist 是由 yum 程序自行去捉映像站臺, baseurl 則是指定固定的一個容器網址!我們剛剛找到的網址放到這里來啦!

  • enable=1:就是讓這個容器被啟動。如果不想啟動可以使用 enable=0 !

  • gpgcheck=1:還記得 RPM 的數字簽名嗎?這就是指定是否需要查閱 RPM 檔案內的數字簽名!

  • gpgkey=:就是數字簽名的公鑰文件所在位置!使用默認值即可

其中 baseurl= 所指定的文件路徑有三種
文件服務器:
ftp://
http://
file:/// —————(最后一個表示根/的意思)

注意在配置yum倉庫的時候要到 /etc/yum.repos.d/ 里面 新建一個 *.repo 文件,然后把里面其他的 .repo 文件移走。這樣才能使用你所配置的yum倉庫文件。(文件不能有錯誤)!!

yum-config-manager —-一個能直接生成yum倉庫 .repo的命令

生成 172.16.0.1_cobbler_ks_mirror_CentOS-X86_64_.repo

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

  • yum-config-manager –disable “倉庫名"  禁用倉庫

  • yum-config-manager –enable “倉庫名” 啟用倉庫

yum命令用法

語法:yum [options] [command] [package …]

安裝: install package1 [package2] […]

install :后面接要安裝的軟件!

重新安裝:reinstall package1 [package2] […] (重新安裝)

update  :后面接要升級的軟件,若要整個系統都升級,就直接 update 即可

顯示程序包:yum list [all | glob_exp1] [glob_exp2] […]

list  :列出目前 yum 所管理的所有的軟件名稱不版本,有點類似 rpm -qa;

顯示倉庫列表:  repolist [all|enabled|disabled]

升級程序包:

update [package1] [package2] […]
downgrade package1 [package2] […] (降級

檢查可用升級:yum  check-update

卸載程序包:  remove | erase package1 [package2] […]

卸載時也會把依賴于此的包也會卸載

查看程序包information:

info […]  類似 rpm -qai 的執行結果;

查看指定的特性(可以是某文件)是由哪個程序包所提供:provides | whatprovides feature1 [feature2] […]

provides:仍檔案去搜尋軟件!類似 rpm -qf 的功能!

搜索:search string1 [string2] […]

以指定的關鍵字搜索程序包名及summary信息

查看指定包所依賴的capabilities:

deplist package1 [package2] […]

清理本地緩存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

root@www ~]# yum clean [packages|headers|all]
選項
packages:將已下載的軟件檔案刪除
headers :將下載的軟件文件頭刪除
all  :將所有容器數據都刪除!

構建緩存:

makecache

其他一些選項

  • -y :當 yum 要等待用戶輸入時,這個選項可以自動提供 yes 的響應;

  • –nogpgcheck:禁止進行gpg check

  • -q:靜默模式

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

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

  • –noplugins:禁用所有插件


例如列出 yum 服務器上面提供的所有軟件名稱

[root@www ~]# yum list
Installed Packages <==已安裝軟件
Deployment_Guide-en-US.noarch 5.2-9.el5.centos installed
Deployment_Guide-zh-CN.noarch 5.2-9.el5.centos installed
Deployment_Guide-zh-TW.noarch 5.2-9.el5.centos installed
....(中間省略)....
Available Packages <==還可以安裝的其他軟件
Cluster_Administration-as-IN.noarch 5.2-1.el5.centos base
Cluster_Administration-bn-IN.noarch 5.2-1.el5.centos base
....(底下省略)....
# 上面提供的意丿為:『 軟件名稱  版本  在那個容器內 』

列出目前服務器上可供本機進行升級的軟件有哪些?

[root@www ~]# yum list updates  <==一定要是 updates !
Updated Packages
Deployment_Guide-en-US.noarch 5.2-11.el5.centos base
Deployment_Guide-zh-CN.noarch 5.2-11.el5.centos base
Deployment_Guide-zh-TW.noarch 5.2-11.el5.centos base
# 上面就列出在那個容器內可以提供升級的軟件不版本!

列出提供 passwd 這個檔案的軟件有哪些

[root@www ~]# yum provides passwd
passwd.i386 : The passwd utility for setting/changing passwords using 
PAM
passwd.i386 : The passwd utility for setting/changing passwords using 
PAM
# 就是上面的這個軟件提供了 passwd 這個程序!

刪除已下載過的所有容器的相關數據 (含軟件本身與列表)

[root@www ~]# yum clean all

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

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

(2) 創建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=


高級yum使用

 包組管理的相關命令:

語法  :[root@www ~]# yum [群組功能] [軟件群組]
選項:

  • grouplist  :列出所有可使用的『套件組』,例如 Development Tools 之類的;

  • groupinfo  :后面接 group_name,則可了解該 group 內含有的所有套件名;

  • groupinstall:這個好用!可以安裝一整組的套件群組!

  • groupremove :移除某個套件群組;

例:查閱目前容器不本機上面的可用與安裝過的軟件群組有哪些?
[root@www ~]# yum grouplist
Installed Groups:
Office/Productivity
Editors
System Tools
....(中間省略)....
Available Groups:
Tomboy
Cluster Storage
Engineering and Scientific

查看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

 安裝及升級本地程序包:

localinstall rpmfile1 [rpmfile2] […]
(用install替代)
localupdate rpmfile1 [rpmfile2] […]
(用update替代)

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

$releasever : 當前OS的發型版的主版本號
$arch  : 平臺(x86_64 i386)
$basearch :基礎平臺
內置自定義變量 $YUM0--YUM9



    從網上ftp下載時
    lftp 網址
    在這里面!mkdir  ---   !表示用shell內部的命令
    lcd 表示用本地shell的cd命令
    mget 文件名 表示下載該文件

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] 要創建的倉庫的目錄所在位置

1 、 把要用的軟件包下載到本地 , 自建一個目錄
2 、 用 createrepo 后面加上這個目錄名,就可以得出生成的軟件的元數據。
3 、 把此目錄設置成軟件baseurl 的地址。
4 、 設置好了以后用 yum repolist 或者 yum makecache
生成一下列表就可以使用了!

程序包編譯

程序包編譯安裝:

Application-VERSION-release.src.rpm –> 安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝
src————》這種得就表示是源碼包!

  • 源代碼–>預處理–>編譯(gcc)–>匯編–>鏈接–>執行

  • 源代碼組織格式:
    多文件:文件中的代碼之間,很可能存在跨文件依賴關系
    C、C++:make (項目管理器,configure –> Makefile.in –> makefile)
    java: maven
    makefile.in文件就是一個makefile的模板

configure腳本用處就是允許用戶傳遞參數用來自定義安裝位置等信息,編譯參數,啟用特性,安裝位置!
此腳本運行能結合 Makefile.in 文件,用來生成makefile

編譯安裝

C代碼編譯安裝三步驟:

  • 1、./configure:

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

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

  • 2、make:依賴于makefile文件,構建應用程序,它只是一個項目管理工具,

  • 3、make install:復制文件到相應路徑

注意:make自己不是編譯器,它是調用類似 gcc 編譯器來完成功能的

開發工具:
有可能configure腳本不會給你下面的命令就是解決這個問題的

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 6:  "Development Tools"
Centos 7: "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]

兩個問題:

1、把rpm軟件、內核不小心刪除怎么恢復

[root@qzx ~]# rpm -e kernel --nodeps
grubby fatal error: unable to find a suitable template
grubby: doing this would leave no kernel entries. Not writing out new config.
warning:    erase unlink of /lib/modules/2.6.32-642.el6.x86_64/weak-updates failed: No such file or directory
warning:    erase unlink of /lib/modules/2.6.32-642.el6.x86_64/modules.order failed: No such file or directory
[root@qzx yum.repos.d]# rpm -e rpm --nodeps
[root@qzx yum.repos.d]# yum list

進光盤救援模式恢復
以下是CentOs 6演示

yum詳解
開機就快按  esc 進入上圖模式

yum詳解
進入修復模式
回車下一步,語言鍵盤默認就好

yum詳解
這個是設置網絡,不用設置,no

yum詳解
繼續

yum詳解
直接下一步

yum詳解
默認,就選第一個打開一個shell

yum詳解
在此中用rpm把刪的文件重新裝回原來系統即可,這一步centos6&7都通用,7就是前面不太相同
yum詳解

yum詳解
尋找故障模式

yum詳解
進入修復模式

yum詳解
輸入 1 繼續

yum詳解
這句話就是要打開一個shell 回車就行
后邊的和centos6就一樣了

2、編譯安裝apache服務

1、先從網上下載要安裝的程序包
httpd-2.2.29.tar.bz2

2、解壓文件
tar xvf httpd-2.2.29.tar.bz2

3、查看INSTALL文件
cd 到 httpd-2.2.29 文件中
cat INSTALL 文件
可以看到

  For complete installation documentation, see [ht]docs/manual/install.html or
  http://httpd.apache.org/docs/2.2/install.html

     $ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ PREFIX/bin/apachectl start

對于此中提到的 configure 文件的選項可以用 configure –help來查看

Fine tuning of the installation directories:---指定安裝路徑的

4、指明安裝路徑./configure –prefix=PREFIX
我這里寫的是 /testdir/Apache

5、make(make后可以用 du -sh 查看 會發現變大了許多)

6、make install

安裝完成就可以看到生成的文件了

[root@qzx httpd-2.2.29]# cd /testdir/Apache/
[root@qzx Apache]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules

7、開啟
到bin目錄下 有一個 apachectl 文件,此文件就控制著apache的工作

[root@qzx bin]# ./apachectl start
httpd: apr_sockaddr_info_get() failed for qzx.centos6.8
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

用 netstat -tan 查看 :80 端口是否開啟
   如果開啟就表示服務已經運行。

yum詳解

或者 links 10.1.253.75
yum詳解

如果不成功表示有可能防火墻沒關
telnet 10.1.253.75 80
ping這個端口
不能連上表示可能防火墻沒關

關閉防火墻命令
iptables -F

8、安裝后補充

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

    • export PATH=/testdir/Apache/bin:$PATH

    • 編輯配置文件 /etc/profile.d/apache.sh(創建程序名.sh)

  • (2)、由于不是默認安裝,所以要導出庫路徑

    • ldconfig [-v]

    • 添加新的庫文件所在目錄至此文件中  即在文件中寫 /testdir/Apache/lib

    • 編輯 /etc/ld.so.conf.d/apache.conf

    • 讓系統重新生成緩存:

  • (3)、導出頭文件(創建連接)

    • ln -sv  /testdir/Apache/include /usr/include/apach

    • 由于默認是include 文件下,而安裝后是安裝在當前路徑下所以要導出到 /usr/include下

  • (4)、導出幫助手冊

    • 添加即可

    • 編輯/etc/man.config文件

        #
        MANPATH /testdir/Apache/man

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

(0)
qzxqzx
上一篇 2016-08-25
下一篇 2016-08-25

相關推薦

  • 新的旅途

    三月末的北京已經讓人感覺有些炎熱,這是我第一次來北京。對我而言這是我人生的另一個起點,押上了我所有驕傲承載著我的夢想對未來所有的期望。這是一場豪賭,新的旅途,從今天開始。

    2018-03-26
  • shell與kernel的理解

    Shell 的英文釋義是外殼,與kernel 內核名詞遙相呼應,一外一內,一殼一核。內核就像瑞士銀行的金庫,存放著客戶的黃金等眾多的(硬件)資產,閑雜人等(包括客戶)當然是嚴格禁止入內的,而作為客戶要存取金庫中的資產則需要通過專門的特定管理人員代為操作完成,并把存?。ú僮鳎┑慕Y果呈現給客戶。在Linux操作系統中,shell的職能就類似于金庫的操作人員,客戶…

    Linux干貨 2016-02-14
  • zabbix之報警功能的實現

    一、注冊微信公眾號 首先申請微信公眾平臺https://mp.weixin.qq.com/一個人最多申請5個公眾號,所以還是可以的 申請完之后就可以根據騰訊的提示使用微信公眾號了,然后用你自己的微信掃描關注微信號。 就可以看到用戶數了,接下來的就要使用的用戶的微信ID號了。點擊用戶查看用戶的微信ID號。在瀏覽器查看用戶的微信ID號。就是那個紅色的ID了。 h…

    2014-11-12
  • 高級文件系統的管理

    接上一篇文章http://www.www58058.com/40874 移動介質     掛載意味著 使外來的文件系統看起來如同是主目錄樹 的 一部分     訪問前、介質必須被掛載     摘除時,介質必須被卸載   …

    Linux干貨 2016-09-08
  • Linux Service and Security(Part 2)

    接PART 1 4、SSH端口轉發:SSH會自動加密和解密所有SSH客戶端與服務端之間的網絡數據。但是,SSH還能夠將其它TCP端口的網絡數據通過SSH鏈接來轉發,并且自動提供了相應的加密及解密服務,這一過程也被叫做“隧道(tunneling)”。telnet,SMTP,LDAP這些TCP應用均能夠從中得益,避免了用戶名、密碼以及隱私信息的明文傳輸。同時,如…

    Linux干貨 2016-10-09
  • 新的開始

    hello,我在這里,馬哥運維,一起努力!

    Linux干貨 2016-12-26

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-26 11:41

    內容整體很完整,有理論有操作,突顯用心;整篇博客還是能讓人看到很多專業性所在,還能看出很用心的地方,革命尚未成功,同志仍需努力啊,加油!

欧美性久久久久