Linux基礎之軟件包管理

Linux基礎之軟件包管理

1、文件壓縮與打包

一、概念

壓縮:指經過某些算法,將文件尺寸進行相應的縮小,同時不損失文件的內容。 php

打包:指將多個文件(或目錄)合併成一個文件,方便傳遞或部署。html

壓縮文件或打包文件常見的擴展名:*.tar、*.tar.gz、*.gz、*.bz2 、*.tar.bz二、*.Z(僅作知識擴展);linux系統通常文件的擴展名用途不大,可是壓縮或打包文件的擴展名是必須的,由於linux支持的壓縮命令較多,不一樣的壓縮技術使用的壓縮算法區別較大,根據擴展名可以使用對應的解壓算法。java

二、常見文件擴展名

*.gz:gzip程序壓縮的文件。linux

*.bz2:bzip2程序壓縮的文件。git

*.Z:compress(舊的加密算法,目前基本不用) 程序壓縮的文件。web

*.tar:tar命令打包的數據,並無壓縮過。面試

*.tar.gz:tar程序打包的文件,而且通過gzip的壓縮。算法

*.tar.bz2:tar程序打包的文件,而且通過bzip2的壓縮。shell

三、常見的壓縮/打包指令

gzip比bzip2性能好,但bzip2能夠得到更高壓縮比。 tar能夠將不少文件打包成爲一個文件。數據庫

1.gzip

gzip命令(應用普遍):能夠解開compress、zip與gzip等軟件所壓縮的文件。

命令格式:

gzip [-acdfhlLnNqrtvV][-S <壓縮字尾字符串>][-<壓縮效率>][--best/fast][文件...]
gzip [-acdfhlLnNqrtvV][-S <壓縮字尾字符串>][-<壓縮效率>][--best/fast][目錄]

選項與參數:

-c:將壓縮的數據輸出到標準輸出(stdout)上。

-d:解壓縮。

-t:能夠用來檢驗一個壓縮文件的一致性,看看文件有無錯誤。

-v:能夠顯示出原文件/壓縮文件的壓縮比等信息。

-(1,2,...,9):壓縮等級,1最快,可是壓縮比最差;9最慢,可是壓縮比最好,默認是6。 

-l:查看壓縮文件的壓縮比:gzip -l *.gz

示例1:

用gzip壓縮。

[root@localhost ~]# cd /tmp
[root@localhost tmp]# cp /root/install.log . #「.」當前目錄
[root@localhost tmp]#gzip –v install.log (若是不加-v的話就是直接壓縮)
install.log:    76.8% -- replaced with install.log.gz

注意:源文件被壓縮後,自動在源文件名後追加」.gz」,源文件將再也不存在。

解壓gz的壓縮文件。

[root@xinghan tmp]#gzip –d install.log.gz

注意:源文件被解壓後,自動將源文件名後的」.gz」刪掉,源文件將再也不存在。

示例2:

1.在/tmp文件夾下建立/part1/gzip
2.將/root/anaconda-ks.cfg文件拷貝到/tmp/part1/gzip
3.將拷貝後的文件進行gzip壓縮,並顯示壓縮信息。
4.將壓縮後文件的名稱改成mygzip01.gz

[root@xinghan tmp]# gzip -c install.log >install.log.gz
[root@xinghan tmp]# ll |grep install
-rw-r--r--. 1 root root 41364 Nov 28 05:10 install.log
-rw-r--r--. 1 root root  9626 Nov 28 05:27 install.log.gz


zcat查看壓縮文件內容

[root@xinghan tmp]# zcat *.gz  #查看所有內容
[root@xinghan tmp]# zcat *.gz |head -n #查看前n行

cat能夠讀取純文本文件,那麼zcat則能夠讀取純文本文件被壓縮後的壓縮文件。

2.bzip2命令

gzip是爲了取代compress並提供更好的壓縮比,那麼bzip2則是爲了取代gzip並提供更佳的壓縮比而來的。

選項與參數

同gzip用法很相似,選項與參數以下:

-c:將壓縮的過程產生的數據輸出到標準輸出(stdout)。

-d:解壓縮的參數。

-k:保留源文件,而不會刪除原始的文件。

-f:強制壓縮。

-z:壓縮的參數(有無都可)。

-v:能夠顯示出原文件/壓縮文件案的壓縮比等信息。

-(1,2,...,9):與gzip一樣的,都是在計算壓縮比的參數,-9最佳,-1最快。

示例:

壓縮:

[root@xinghan tmp]# bzip2 -z install.log #刪除源文件
[root@xinghan tmp]# ls install*
install.log.bz2
[root@xinghan tmp]# bzip2 -zk install.log#保留源文件

解壓:

[root@xinghan tmp]# bzip2 -d install.log.bz2 #刪除源文件
[root@xinghan tmp]# bzip2 -dk install.log.bz2 #不刪源文件

用bzip2最佳壓縮比壓縮install.log,顯示壓縮信息,並保留源文件。

[root@xinghan tmp]#bzip2 -9cv install.log > install9c.log.bz2
install.log:  5.084:1,  1.574 bits/byte, 80.33% saved, 41364 in, 8136 out
[root@xinghan tmp]#bzip2 -9zvk install.log

3.compress、uncoppress

compress壓縮效率低下,壓縮比也較差,幾乎已經再也不使用。

compress、uncompress(僅作了解,目前已不用,當前系統內核已不提供該命令),選項與參數:

-r :能夠連同目錄下的文件也同時給予壓縮。

-c :將壓縮數據輸出成爲standard output。

-v :能夠列出壓縮後的文件信息以及壓縮過程當中的一些文件名變化。

4.tar

tar命令,爲經常使用的打包壓縮命令。

選項與參數

-c:創建打包文件。

-t:查看打包文件的內容含有哪些文件。

-x:解打包或解壓縮的功能,能夠搭配-C(大寫)將壓縮包解壓到指定目錄。

-j:經過bzip2的支持進行壓縮/解壓縮,此時文件最好以*.tar.bz2爲後綴。

-z:經過gzip的支持進行壓縮/解壓縮,此時文件最好以*.tar.gz爲後綴。

-v:在壓縮/解壓縮的過程當中,將正在處理的文件名顯示出來。

-f filename:-f後面跟處理後文件的全名稱(路徑+文件名+後綴名)。

-C 目錄:這個選項只能用在解壓縮,將壓縮包解壓到指定的目錄下。

-p:保留備份數據的原有權限與屬性,經常使用於備份(-c)重要的配置文件。

--exclude=FILE:在壓縮的過程當中,指定不打包的文件。

注意-c、-t、-x不可同時出如今一串指令列中。即這三個命令不能同時使用。

tar經常使用的指令組

1)打包與壓縮

tar -zcv -f [/路徑/]filename.tar.gz 被壓縮的文件或目錄。

tar -jcv -f [/路徑/] filename.tar.bz2 被壓縮的文件或目錄。

示例:

tar -zcvf /tmp/part1/tar/etc01.tar.gz /etc
tar -jcvf /tmp/part1/tar/etc02tar.bz2 /etc

2)查詢

tar -ztv -f [/路徑/] filename.tar.gz

tar -jtv -f [/路徑/] filename.tar.bz2

3)備份

tar -zpcv -f [/路徑/]filename.tar.gz 被備份文件或目錄

tar -jpcv -f [/路徑/]filename.tar.bz2 被備份文件或目錄

4)解壓到當前目錄

tar -jxv -f [/路徑/] filename.tar.bz2

tar -zxv -f [/路徑/] filename.tar.gz

5)解壓到指定目錄

tar -jxv -f [/路徑/] filename.tar.bz2 -C  指定目錄

tar -zxv -f [/路徑/] filename.tar.gz -C 指定目錄

注意:filename前帶路徑表示此路徑下的filename文件,若是沒有表示當前目錄下filename文件。

該路徑表示的就是咱們寫入的路徑,若是不寫路徑的話表示在當前路徑下。

示例1:

tar -zxvf /home/software/filename.tar.gz

上述中的例子,表示咱們要解壓的文件在/home/software/路徑下。(使用了絕對路徑)

舉例2:

tar -zxvf filename.tar.gz

上述中的例子,表示咱們要解壓的文件在當前所處的目中。(使用了相對路徑)

示例:

#1.將/etc壓縮到/tmp/下etc01.tar.gz
#方式一:filename.tar.gz前不帶路徑
[root@hadoop1 ~]# cd /tmp/
[root@hadoop1 tmp]# tar -zcvf etc01.tar.gz /etc/
#方式二:filename.tar.gz前帶路徑,推薦新手使用。
[root@hadoop1 ~]# tar -zcvf /tmp/etc01.tar.gz  /etc
#2.將/tmp/下etc01.tar.gz解壓到/tmp/目錄下
[root@hadoop1 ~]# cd /tmp/  #首先進入對應目錄
[root@hadoop1 tmp]# tar -zxvf etc01.tar.gz 
#3.將/tmp/下etc01.tar.gz解壓到/usr/目錄下
[root@hadoop1 tmp]# tar -zxvf etc01.tar.gz -C /usr
#或者
[root@hadoop1 tmp]# tar -zxvC /usr -f etc01.tar.gz

6)解壓單獨文件
僅解壓壓縮包中的某一個文件,如解壓包中shells文件。

一、查詢shells文件在壓縮包中是否存在。

    tar -ztv -f [/路徑/]filename.tar.gz|grep ‘shells’

[root@xinghan ~]# tar -ztv -f /tmp/etc01.tar.gz |grep 'shells’
#或
[root@xinghan tmp]# tar -ztv -f etc01.tar.gz |grep 'shells'

二、僅解壓出shells文件。

[root@xinghan tmp]# tar -zxv -f etc01.tar.gz etc/shells

解壓後在/tmp下生產一個etc文件夾,etc下有shells文件。

三、僅解壓出etc/yum目錄:也能夠解壓壓縮包中的某一個子目錄。

2、rpm

一、簡介

RPM(RedHat Package Manager)安裝管理。

這個機制最先是由Red Hat開發出來,後來實在很好用,所以不少distributions(發行版)就使用這個機制來做爲軟件安裝的管理方式。包括Fedora、CentOS、SuSE等等知名的開發商。

例如:CDH(Cloudera Distributed Hadoop,Cloudera公司的Hadoop發行版)提供rpm包(省略部分詳細版本號),使得在Linux上安裝Hadoop這樣的分佈式系統變得更加簡單:

hadoop-mapreduce-2.5.0xx.rpm

hadoop-mapreduce-historyserver-2.5.0xx.rpm

hadoop-yarn-2.5.0xx.rpm

二、RPM的優勢

RPM內含已經編譯過的程序與配置文件等數據,可讓用戶免除從新編譯的困擾。

RPM在被安裝以前,會先檢查系統的硬盤容量、操做系統版本等,可避免文件被錯誤安裝。

RPM文件自己提供軟件版本信息、相依屬性軟件名稱、軟件用途說明、軟件所含文件等信息,便於瞭解軟件。

RPM管理的方式使用數據庫記錄RPM文件的相關參數,便於升級、移除、查詢與驗證。 

三、rpm默認安裝的路徑

/etc        一些配置文件放置的目錄。例如/etc/crontab。

/usr/bin    一些可執行文件。

/usr/lib    一些程序使用的動態連接庫。

/usr/share/doc    一些基本的軟件使用手冊與說明文件。

/usr/share/man    一些man page(Linux命令的隨機幫助說明)文件。

四、rpm安裝

1.命令格式

rpm -ivh package_name

2.選項與參數

-i:install的意思,安裝。

-v:察看更細部的安裝信息畫面。俗稱「囉嗦模式」。

-h:顯示指令執行過程。即進度條。

示例:

#安裝單個rpm包。
rpm -ivh package_name 
#安裝多個rpm包。每一個包之間以空格隔開。
rpm -ivh a.i386.rpm b.i386.rpm *.rpm 
#安裝網上某個位置rpm包。
rpm -ivh http://website.name/path/pkgname.rpm

3.演示安裝jdk

將jdk-8u111-linux-x64.rpm從本機拷貝到虛擬機中。

rz:從本機到虛擬機;sz從linux虛擬機到本機。

[root@xinghan ~]# rz
-bash: rz: command not found

這是由於當前虛擬機沒有安裝lrzsz程序,因此咱們須要先安裝該程序纔可以使用rz和sz命令。首先使用可視化界面用root登陸進入,瀏覽器訪問http://rpmfind.net/linux/rpm2html/search.php?query=lrzsz,下載lrzsz-0.12.21-15.x86_64.rpm
或者經過wget進行下載: http://rpmfind.net/linux/Mandriva/official/2011/x86_64/media/main/release/lrzsz-0.12.21-15-mdv2011.0.x86_64.rpm

[root@xinghan ~]# mkdir /usr/soft #之後安裝軟件都放在該目錄下
[root@xinghan ~]# cp /root/下載/lrzsz-0.12.20-22.1.x86_64.rpm /usr/soft/
[root@xinghan ~]# ls /usr/soft/
lrzsz-0.12.20-22.1.x86_64.rpm
[root@xinghan ~]# rpm -ivh /usr/soft/lrzsz-0.12.20-22.1.x86_64.rpm
[root@xinghan soft]#rz  #彈出窗口,選擇jdk-*-x64.rpm,默認放到當前目錄下

安裝jdk-8u111-linux-x64.rpm。

[root@xinghan soft]# rpm -ivh jdk-8u111-linux-x64.rpm

備份系統環境變量文件

[root@xinghan ~]# cp /etc/profile /home/

編輯系統環境變量 

rpm -qa |grep jdk
rpm -ql jdk1.8.0_111-1.8.0_111-fcs.x86
vim /etc/profile

加入內容以下:

export JAVA_HOME=/usr/java/jdk1.8.0_111
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#檢查安裝是否成功
[root@xinghan ~]# source /etc/profile
[root@xinghan ~]# java -version 
java version 「1.8.0_111」 

五、RPM升級與更新

1.命令格式

rpm -Uvh <package_name>

rpm -Fvh <pacakge_name>

-Uvh後面接的軟件若是沒有安裝過,系統會直接安裝,若後面接的軟件安裝過,但版本較舊,則更新至新版。

[root@xinghan soft]# rpm -Uvh jdk-8u111-linux-x64.rpm 
Preparing...      ########################################### [100%]
    package jdk1.8.0_111-2000:1.8.0_111-fcs.x86_64 is already installed

-Fvh若是後面接的軟件並未安裝到Linux系統上,則該軟件不會被安裝,只有已安裝的軟件纔會被升級。

六、RPM查詢

簡單原理:rpm在查詢的時候,其實查詢的地方是在/var/lib/rpm/ 這個目錄下的數據庫文件。以下:

[root@xinghan ~]# ll /var/lib/rpm/ 
total 58272 
-rw-r--r--. 1 root root  5500928 Mar  8 20:27 Basenames 
-rw-r--r--. 1 root root    12288 Mar  4 23:06 Conflictname 
-rw-r--r--  1 root root    24576 Mar  8 20:42 __db.001 
-rw-r--r--  1 root root   229376 Mar  8 20:42 __db.002

1.命令格式

查詢某個RPM文件內含有的信息:

rpm -qp[icdlR] 應用名稱

查詢rpm包中的信息。

注意-qp後面接的全部參數與上面的說明一致。但用途僅在於找出某個RPM文件內的信息,而非已安裝的軟件信息。

2.選項與參數

rpm查詢已安裝軟件,選項與參數:

-q:僅查詢後面接的軟件名稱是否已安裝。 

-qa:列出全部已經安裝在本機Linux系統上面的軟件名稱!!!

-qi:列出該軟件的詳細信息,包含開發商、版本和說明等!

-ql:列出該軟件全部的文件與目錄所在完整文件名!!

-qc:列出該軟件的全部配置文件!

-qd:列出該軟件的全部說明文件。

-qR:列出該軟件所依賴的軟件所含的文件。

-qf:由後面接的文件名,找出該文件屬於哪個已安裝的軟件。

3.案例

①查找是否安裝jdk

[root@xinghan ~]# rpm -qa |grep jdk
jdk1.8.0_111-1.8.0_111-fcs.x86_64

②查找全部系統已經安裝的包,並只查看前3個

[root@xinghan ~]# rpm -qa |head  -n 3
gvfs-gphoto2-1.4.3-15.el6.x86_64
hicolor-icon-theme-0.11-1.1.el6.noarch
libopenraw-gnome-0.0.5-4.1.el6.x86_64

③查詢lrzsz所包含的文件及目錄

[root@xinghan ~]# rpm -ql lrzsz
/usr/bin/rb
/usr/bin/rx
/usr/bin/rz
/usr/bin/sb
/usr/bin/sx
/usr/bin/sz
/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
/usr/share/man/man1/rz.1.gz
/usr/share/man/man1/sz.1.gz

④查看apr所包含的文件及目錄

[root@xinghan ~]# rpm -ql apr
/usr/lib64/libapr-1.so.0
/usr/lib64/libapr-1.so.0.3.9
/usr/share/doc/apr-1.3.9
/usr/share/doc/apr-1.3.9/CHANGES
/usr/share/doc/apr-1.3.9/LICENSE
/usr/share/doc/apr-1.3.9/NOTICE

⑤查看lrzsz包的相關說明

[root@xinghan ~]# rpm -qi lrzsz
Name        : lrzsz                        Relocations: (not relocatable)
Version     : 0.12.20                           Vendor: CentOS
Release     : 22.1                          Build Date: 2007年01月06日 星期六 21時04分33秒
Install Date: 2016年11月29日 星期二 07時56分17秒      Build Host: builder

如何查詢剛剛安裝jdk的相關信息?

[root@xinghan soft]# rpm -qa |grep jdk
jdk1.8.0_111-1.8.0_111-fcs.x86_64
[root@xinghan soft]# rpm -qi jdk1.8.0_111-1.8.0_111-fcs.x86_64

⑥查看apr包的相關說明

列出jdk1.8.0_111的配置文件(無顯示說明不須要配置文件)

[root@localhost ~]# rpm -qc jdk1.8.0_111 
[root@localhost ~]# rpm –qc apr #不須要配置

列出iptables的配置文件

[root@localhost ~]# rpm -qc iptables 
/etc/sysconfig/iptables-config 

列出apr的說明文件

[root@localhost ~]# rpm -qd apr 
/usr/share/doc/apr-1.3.9/CHANGES 
/usr/share/doc/apr-1.3.9/LICENSE 
/usr/share/doc/apr-1.3.9/NOTICE. 

⑦查看apr須要的依賴

[root@xinghan ~]# rpm -qR apr
/sbin/ldconfig  
/sbin/ldconfig  
libapr-1.so.0()(64bit)  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.10)(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3)(64bit) 

七、rpm檢查

1.命令格式

rpm [參數] [應用名稱]

2.選項和參數

-V:後面加軟件名稱,若該軟件安裝以後被改動過,會列出被修改過的文件!!

-Va:列出目前系統上面rpm安裝的全部包中被修改過的文件!

-Vp:後面加的是rpm文件名,列出rpm包中的文件在當前系統中是否修改。

-Vf:列出某個文件(直接列出軟件包安裝以後的文件名)是否被改動過!!

示例:

列出lrzsz這個軟件被改動過的文件。

[root@xinghan ~]# rpm -V lrzsz

沒有被修改的文件顯示,說明該軟件沒有文件被改動過

查詢/etc/crontab是否被改動過。

[root@xinghan ~]# rpm -Vf /etc/crontab

沒有信息顯示說明沒有被改動過,若是被改動過,會顯示被改動的信息。

八、rpm卸載

-e:卸載軟件。

找出與apr有關的軟件名稱,並嘗試移除apr這個軟件。

[root@xinghan ~]# rpm -qa | grep apr 
apr-1.3.9-5.el6_2.x86_64 
[root@xinghan ~]# rpm -e apr 
[root@xinghan ~]# rpm -qa | grep apr 

3、yum

一、簡介

1.爲何要有yum?

rpm頭疼的依賴關係(例如安裝某個遊戲時)。當安裝一個rpm包時,發現它依賴於其它的rpm包,只能先去下載及安裝這個依賴包。當這樣的依賴關係很是複雜時,一個個rpm安裝對於大數據工程師來講,安裝這件事演變成一個災難。

卸載,也同樣!刪除某個rpm包時,若是有其它的rpm依賴於它,也得先刪掉他們。若是有一個集中的地方管理多如牛毛的rpm,簡化「下載+解決依賴問題+安裝」這樣的繁瑣步驟,該多好啊?

2.yum

yum是經過分析RPM的標頭資料後,根據各軟件的相關性製做出屬性相依時的解決方案,而後能夠自動處理軟件的依賴問題,以解決軟件安裝、移除、升級中遇到的繁瑣操做的問題。

二、yum查詢參數

search:查詢某個軟件名稱或者是描述的關鍵字。

list:列出目前yum所管理的全部的軟件名稱與版本,有點相似rpm -qa。

info:同上,格式不太同樣,不過有點相似rpm -qai的執行結果。

示例:

查找jdk相關軟件包 
[root@xinghan yum.repos.d]# yum search jdk
查看beakerlib軟件包功能 
[root@xinghan  yum.repos.d]# yum info beakerlib
列出 yum 服務器上面提供的全部軟件的詳細信息(20條)
[root@xinghan yum.repos.d]# yum info | head -20
列出 yum 服務器上面提供的全部軟件名稱(100條)
[root@xinghan yum.repos.d]# yum list |head -100
列出目前服務器上可供本機進行升級的軟件有哪些 
[root@xinghan yum.repos.d]# yum list updates !!!
列出目前服務器上xz.x86_64可更新版本
[root@xinghan yum.repos.d]# yum list updates|grep xz.x86_64

三、yum安裝、升級、卸載軟件

1.命令格式

yum [install | update | remove] 軟件名

2.選項參數

install:後面接要安裝的軟件。

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

remove:刪除某個軟件時,依賴於該軟件並已經安裝到系統中的其它軟件或者包,會被一併刪除(rpm方式刪除某個包時,若是依賴於該包的其它包以前也被安裝到系統中,刪除

不會成功,須要先手動刪除那些包)。

示例:
安裝common-lisp-controller.noarch

[root@xinghan ~]# yum install common-lisp-controller.noarch
Dependencies Resolved
============================================== 
Package              Arch      Version           Repository   Size
==============================================
Installing:
 common-lisp-controller   noarch     7.4-2.el6           epel        20 k
Installing for dependencies:
 cl-asdf               noarch       20101028-1.el6      epel        88 k
Transaction Summary
==============================================
Install       2 Package(s)   Total download size: 108 k   Installed size: 427 k
Is this ok [y/N]:y
Downloading Packages:
      (1/2): cl-asdf-20101028-1.el6.noarch.rpm                     |  88 kB 00:00
      (2/2): common-lisp-controller-7.4-2.el6.noarch.rpm            |  20 kB 00:00
       Installed:  common-lisp-controller.noarch 0:7.4-2.el6
       Dependency Installed:  cl-asdf.noarch 0:20101028-1.el6
       Complete!

刪除cl-asdf

[root@xinghan ~]# yum remove cl-asdf
Dependencies Resolved
==============================================================
 Package               Arch         Version            Repository   Size
==============================================================
Removing:
 cl-asdf                noarch       20101028-1.el6        @epel   401 k
Removing for dependencies:
 common-lisp-controller  noarch       7.4-2.el6             @epel   26 k
Transaction Summary
=============================================================
Remove        2 Package(s)  Installed size: 427 k
Is this ok [y/N]: y
Downloading Packages:  Running rpm_check_debug   Running Transaction Test
Transaction Test Succeeded   Running Transaction
  Erasing:common-lisp-controller-7.4-2.el6.noarch                   1/2 
  Erasing:cl-asdf-20101028-1.el6.noarch                            2/2 
  Verifying:cl-asdf-20101028-1.el6.noarch                          1/2 
  Verifying:common-lisp-controller-7.4-2.el6.noarch                  2/2 
Removed:  cl-asdf.noarch 0:20101028-1.el6    Dependency Removed:common-lisp-controller.noarch 0:7.4-2.el6                Complete!

升級xz.x86_64

[root@xinghan ~]# yum  update xz.x86_64
Dependencies Resolved
===================================================================== Package            Arch      Version                      Repository  Size
=====================================================================Updating:
 xz               x86_64  4.999.9-0.5.beta.20091007git.el6   base    137 k
Updating for dependencies:
 xz-libs           x86_64  4.999.9-0.5.beta.20091007git.el6    base    89 k
 xz-lzma-compat   x86_64  4.999.9-0.5.beta.20091007git.el6    base    16 k
Transaction Summary
=====================================================================Upgrade       3 Package(s)  Total download size: 242 k  Is this ok [y/N]: y
Downloading Packages:
(1/3): xz-4.999.9-0.5.beta.20091007git.el6.x86_64.rpm       | 137 kB     00:00
(2/3): xz-libs-4.999.9-0.5.beta.20091007git.el6.x86_64.rpm    | 89 kB     00:00
(3/3): xz-lzma-compat-4.999.9-0.5.beta.20091007git.el6.x86_64.rpm | 16 kB 00:00
-------------------------------------------------------------------------------------------------------
     Total                                                           423 kB/s | 242 kB     00:00    
Updated:  xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6                   
Dependency Updated:  xz-libs.x86_64 0:4.999.9-0.5.beta.20091007git.el6   
  xz-lzma-compat.x86_64 0:4.999.9-0.5.beta.20091007git.el6      Complete!

四、yun進階

yum服務器與客戶端架構圖:


1.yum客戶端運行機制

客戶端每次使用yum調用 install或者search的時候,都會去解析/etc/yum.repos.d/下面全部以.repo結尾的文件,這些配置文件指定了yum服務器的地址。

yum須要按期去「更新」yum服務器上的rpm「清單」,而後把「清單」下載保存到yum本身的cache裏面,根據/etc/yum.conf裏配置(默認是在/var/cache/yum/$basearch/$releasever下、即/var/cache/yum/x86_64/6),每次調用yum安裝包的時候都會去這個cache目錄下去找「清單」,根據「清單」裏的rpm包描述從而來肯定安裝包的名字,版本號,所須要的依賴包等,若是rpm包的cache不存在,就去yum服務器下載rpm包安裝。 

2.yum repo配置文件信息

[root@xinghan soft]# cd /etc/yum.repos.d
[root@xinghan yum.repos.d]# cat CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 

[base]:表明容器的名字,中括號是必須帶的,裏面名字能夠自定義,但不能有兩個相同的名字,不然yum找不到相關的軟件列表 

name:只是描述容器。

mirrorlist:「#」註釋掉。

     baseurl:容器的固定地址。

     gpgcheck:gpg驗證是否開啓,1是開啓,0是不開啓;「開啓」會讓yum檢查每一個下載的RPM的GnuPG簽名。這麼作是由於你須要適當的GnuPG key註冊到您的RPM數據庫。能夠防止被欺騙,如:非法入侵發行版網站,木馬導入軟件包,使不知情用戶下載。

gpgkey:數字證書公鑰文件所在位置。

3.yum支持hodoop分佈式

如何讓yum支持hadoop分佈式軟件安裝?(僅做了解,建議手動配置,第一是學習,第二是未來的面試會有人問集羣的搭建步驟和集羣的配置文件。)

一、查看當前系統中yum支持的全部軟件包中是否存在hadoop。

[root@xinghan yum.repos.d]# yum list|grep hadoop  #發現沒有

二、若是想要當前系統的yum支持hadoop軟件包,須要本地/etc/yum.repos.d下建立cloudera-cdh5.repo文件,保存hadoop對應的repo配置,而具體的配置信息可以使用:http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloudera-cdh5.repo

三、再次查看。

[root@xinghan yum.repos.d]# yum list|grep hadoop #發現顯示不少hadoop相關的包

注:http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/5/RPMS/

noarch:    這個版本對系統沒有要求。

x86_64/:須要64位操做系統。點擊進入x86_64/能夠看到不少與hadoop相關的rpm包。

4.yum服務器端

全部要發行的rpm包都放在yum服務器上以提供別人來下載,rpm包根據kernel的版本號,cpu的版本號分別編譯發佈。yum服務器只要提供簡單的下載就能夠了,ftp或者httpd的形式均可以。yum服務器有一個最重要的環節就是整理出每一個rpm包的基本信息,包括rpm包對應的版本號,conf文件,binary信息,以及很關鍵的依賴信息。在yum服務器上提供了createrepo工具,用於把rpm包的基本概要信息作成一張"清單",這張"清單"就是描述每一個rpm包的spec文件中信息。

上一篇:Linux基礎之vim

下一篇:

相關文章
相關標籤/搜索