Linux_09 Linux软件包管理 rpm与yum
生活随笔
收集整理的這篇文章主要介紹了
Linux_09 Linux软件包管理 rpm与yum
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Linux軟件包管理 rpm與yum
- 文件的壓縮與打包
- rpm安裝軟件
- yum安裝刪除軟件
- yum進(jìn)階
一、 文件的打包 與壓縮
常見的文件擴(kuò)展名
*.gz gzip程序壓縮的文件 *.bz2 bzip2 程序壓縮的文件 *.Z compress(舊的加密算法,目前基本不用) 程序壓縮的文件 *.tar tar命令打包的數(shù)據(jù),并沒有壓縮過 *.tar.gz tar程序打包的文件,并且經(jīng)過 gzip 的壓縮 *.tar.bz2 tar程序打包的文件,并且經(jīng)過 bzip2 的壓縮常見的壓縮\打包命令
compress壓縮效率低下,壓縮比也較差,幾乎已經(jīng)不再使用 gzip 與 bzip2 gzip比bzip2性能好,但bzip2可以獲得更高壓縮比。 tar可以將很多文件打包成為一個(gè)文件gzip命令: 可以解壓compress 、 zip 、 gzip等算法壓縮的文件
選項(xiàng)與參數(shù)
-c :將壓縮的數(shù)據(jù)輸出到標(biāo)準(zhǔn)輸出(stdout)上 -d :解壓縮 -t :可以用來檢驗(yàn)一個(gè)壓縮文件的一致性,看看文件有無錯(cuò)誤 -v :可以顯示出原文件/壓縮文件的壓縮比等信息 -(1,2,...,9):壓縮等級,1最快,但是壓縮比最差;9最慢,但是壓縮比最好,默認(rèn)是6。 -l :查看壓縮文件的壓縮比: gzip –l *.gz示例
壓縮 命令 gzip -v install.log (如果不加 -v 則默認(rèn)直接壓縮) 顯示 install.log: 76.8% -- replaced with install.log.gz 注意 : 源文件被壓縮之后 , 自動(dòng)在源文件名后追加“.gz” , 源文件將不再存在解壓 命令 gzip -d install.log.gz 注意: 源文件被解壓之后 , 自動(dòng)將源文件名后的“.gz”刪掉 , 源文件將不再存在 。 壓縮或解壓縮之后保留源文件 命令 gzip -c install.log > install.log.gz 查看源文件是否存在 ll | grep installzcat查看壓縮文件的內(nèi)容
示例
[root@root tmp]# zcat *.gz #查看全部內(nèi)容 [root@root tmp]# zcat *.gz |head -n #查看前n行bzip2命令
選項(xiàng)與參數(shù)
-c :將壓縮的過程產(chǎn)生的數(shù)據(jù)輸出到標(biāo)準(zhǔn)輸出(stdout) -d :解壓縮的參數(shù) -k :保留源文件,而不會(huì)刪除原始的文件 -f :強(qiáng)制壓縮 -z :壓縮的參數(shù)(有無均可) -v :可以顯示出原文件/壓縮文件案的壓縮比等信息; -(1,2,...,9) :與gzip同樣的,都是在計(jì)算壓縮比的參數(shù),-9壓縮率最佳,-1壓縮速度最快示例
壓縮 [root@root tmp]# bzip2 -z install.log #刪除源文件 [root@root tmp]# ls install* install.log.bz2 [root@root tmp]# bzip2 -zk install.log#保留源文件 解壓 [root@root tmp]# bzip2 -d install.log.bz2 #刪除源文件 [root@root tmp]# bzip2 -dk install.log.bz2 #不刪源文件compress、uncompress(僅做了解,目前已不用,當(dāng)前系統(tǒng)內(nèi)核已不提供該命令)
選項(xiàng)與參數(shù)
-r :可以連同目錄下的文件也同時(shí)給予壓縮 -c :將壓縮數(shù)據(jù)輸出成為standard output -v :可以列出壓縮后的文件信息以及壓縮過程中的一些文件名變化tar命令
選項(xiàng)與參數(shù)
-c :建立打包文件, -t :查看打包文件的內(nèi)容含有哪些文件 -x :解打包或解壓縮的功能,可以搭配-C(大寫)在特定到特定目錄解開 -j :通過bzip2的支持進(jìn)行壓縮/解壓縮:此時(shí)文件最好為 *.tar.bz2 -z :通過gzip的支持進(jìn)行壓縮/解壓縮:此時(shí)文件最好為 *.tar.gz -v :在壓縮/解壓縮的過程中,將正在處理的文件名顯示出來 -f filename:-f 后面跟處理后文件的全名稱(路徑+文件名+后綴名) -C 目錄:這個(gè)選項(xiàng)用在解壓縮,若要在特定目錄解壓縮,可以使用這個(gè) 選項(xiàng) -p :保留備份數(shù)據(jù)的原本權(quán)限與屬性,常用于備份(-c)重要的配置文件 --exclude=FILE:在壓縮的過程中,不要將那些文件打包 注意 -c, -t, -x 不可同時(shí)出現(xiàn)在一串指令列中tar命令僅解壓壓縮包中的某一個(gè)文件 ,如:shell文件
1、查詢shells文件在壓縮包中是否存在tar –ztv –f [/路徑/]filename.tar.gz|grep ‘shells’[root@root ~]# tar -ztv -f /tmp/etc01.tar.gz |grep 'shells’或[root@root tmp]# tar -ztv -f etc01.tar.gz |grep 'shells'2、僅解壓出shells文件 [root@root tmp]# tar -zxv -f etc01.tar.gz etc/shells 解壓后在/tmp下生產(chǎn)一個(gè)etc文件夾,etc下有shells文件 3、僅解壓出etc/yum目錄:也可以解壓壓縮包中的某一個(gè)子目錄二、 rpm安裝軟件
RPM(RedHat Package Manager)安裝管理
這個(gè)機(jī)制最早是由Red Hat開發(fā)出來,后來實(shí)在很好用,因此很多 distributions(發(fā)行版)就使用這個(gè)機(jī)制來作為軟件安裝的管理方式 。包括Fedora,CentOS,SuSE等等知名的開發(fā)商。 例如:CDH(Cloudera Distributed Hadoop,Cloudera公司的 Hadoop發(fā)行版)提供rpm包(省略部分詳細(xì)版本號),使得在 Linux上安裝Hadoop這樣的分布式系統(tǒng)變得更加簡單: hadoop-mapreduce-2.5.0xx.rpm hadoop-mapreduce-historyserver-2.5.0xx.rpm hadoop-yarn-2.5.0xx.rpmRPM的優(yōu)點(diǎn)
RPM內(nèi)含已經(jīng)編譯過的程序與配置文件等數(shù)據(jù),可以讓用戶免除重 新編譯的困擾 RPM在被安裝之前,會(huì)先檢查系統(tǒng)的硬盤容量、操作系統(tǒng)版本等,可 避免文件被錯(cuò)誤安裝 RPM文件本身提供軟件版本信息、相依屬性軟件名稱、軟件用途說明、軟件所含文件等信息,便于了解軟件 RPM管理的方式使用數(shù)據(jù)庫記錄 RPM 文件的相關(guān)參數(shù),便于升級 、移除、查詢與驗(yàn)證RPM的默認(rèn)安裝路徑
/etc 一些配置文件放置的目錄,例如/etc/crontab /usr/bin 一些可執(zhí)行文件 /usr/lib 一些程序使用的動(dòng)態(tài)鏈接庫 /usr/share/doc 一些基本的軟件使用手冊與說明文件 /usr/share/man 一些man page(Linux命令的隨機(jī)幫助說明)文件rpm安裝命令
選項(xiàng)與參數(shù)
-i :install的意思 -v :察看更細(xì)部的安裝信息畫面 -h :顯示指令執(zhí)行過程。示例: rpm 按裝JDK
使用wget http://rpmfind.net/linux/rpm2html/search.php?query=lrzsz,下載lrzsz-0.12.21-15.x86_64.rpm 將所需要的JDK rpm包下載到本地執(zhí)行rpm -ivh jdk-8u111-linux-x64.rpm 執(zhí)行完成之后 鍵入 java -version 查看是否安裝成功 這里并不是自動(dòng)為我們配置了環(huán)境變量 具體看這里http://blog.csdn.net/qq_31246691/article/details/79331355 但是有些特定的場合下是需要java的環(huán)境變量的 , 最好還是自己也配置一遍: [root@root ~]# vim /etc/profile 加入內(nèi)容如下: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@root ~]# source /etc/profile [root@root ~]# java -version java version “1.8.0_111?“rpm升級與更新
rpm -Uvh <package_name> -Uvh后面接的軟件如果沒有安裝過, 系統(tǒng)會(huì)直接安裝,若后面接的軟件安裝過但版本較舊,則更新至新版 [root@localhost 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 rpm -Fvh <pacakge_name> -Fvh如果后面接的軟件并未安裝到Linux系統(tǒng)上,則該軟件不會(huì)被安裝,只有已安裝的軟件才會(huì)被升級rpm查詢
簡單原理:
簡單原理:rpm在查詢的時(shí)候,其實(shí)查詢的地方是在/var/lib/rpm/ 這個(gè)目錄下的數(shù)據(jù)庫文件 [root@localhost ~]# 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.002rpm查詢已安裝軟件
選項(xiàng)與參數(shù)
-q :僅查詢,后面接的軟件名稱是否有安裝 -qa :列出所有的,已經(jīng)安裝在本機(jī)Linux系統(tǒng)上面的所有軟件名稱 !!! -qi :列出該軟件的詳細(xì)信息,包含開發(fā)商、版本和說明等 !! -ql :列出該軟件所有的文件與目錄所在完整文件名 !! -qc :列出該軟件的所有配置文件 ! -qd :列出該軟件的所有說明文件 -qR :列出和該軟件有關(guān)的相依軟件所含的文件 -qf :由后面接的文件名,找出該文件屬于哪一個(gè)已安裝的軟件 查詢某個(gè) RPM 文件內(nèi)含有的信息: -qp[icdlR]: 注意 -qp 后面接的所有參數(shù)以上面的說明一致。但用途僅在于找出 某個(gè) RPM 文件內(nèi)的信息,而非已安裝的軟件信息rpm檢查
-V :后面加軟件名稱,若該軟件安裝之后被改動(dòng)過,會(huì)列出被修改過的 文件。!! -Va :列出目前系統(tǒng)上面rpm安裝的所有包中被修改過的文件。! -Vp :后面加的是rpm文件名,列出rpm包中的文件在當(dāng)前系統(tǒng)中是否修改。 -Vf :列出某個(gè)文件(直接列出軟件包安裝之后的文件名)是否被改動(dòng)過。!!rpm 卸載
找出與apr有關(guān)的軟件名稱,并嘗試移除apr這個(gè)軟件 [root@root ~]# rpm -qa | grep apr apr-1.3.9-5.el6_2.x86_64 [root@root ~]# rpm -e apr [root@root ~]# rpm -qa | grep apr三、 yum安裝 、 刪除 、 更新軟件
為什么要有yum?
rpm頭疼的依賴關(guān)系 (例如安裝某個(gè)游戲時(shí))
當(dāng)安裝一個(gè)rpm包時(shí),發(fā)現(xiàn)它依賴于其它的rpm包,只能先去下載及安裝這個(gè)依賴包。 當(dāng)這樣的依賴關(guān)系非常復(fù)雜時(shí),一個(gè)個(gè)rpm安裝對于大數(shù)據(jù)工程師來說,安裝這件事演變成一個(gè)災(zāi)難。 卸載,也一樣!刪除某個(gè)rpm包時(shí),如果有其它的rpm依賴于它,也得先刪掉他們。如果有一個(gè)集中的地方管理多如牛毛的rpm,簡化“下載+解決依賴問題+安裝”這樣的繁瑣步驟,該多好啊yum
yum是通過分析RPM的標(biāo)頭資料后,根據(jù)各軟件的相關(guān)性制作出屬 性相依時(shí)的解決方案,然后可以自動(dòng)處理軟件的依賴問題,以解決軟 件安裝、移除、升級中遇到的繁瑣操作的問題yum查詢
search :查詢某個(gè)軟件名稱或者是描述的關(guān)鍵字 list :列出目前yum所管理的所有的軟件名稱與版本,有點(diǎn)類似 rpm -qa info :同上,格式不太一樣,不過有點(diǎn)類似 rpm -qai 的執(zhí)行結(jié)果 查找jdk相關(guān)軟件包 [root@root yum.repos.d]# yum search jdk 查看beakerlib軟件包功能 [root@root yum.repos.d]# yum info beakerlib 列出 yum 服務(wù)器上面提供的所有軟件的詳細(xì)信息(20條) [root@root yum.repos.d]# yum info | head -20 列出 yum 服務(wù)器上面提供的所有軟件名稱(100條) [root@root yum.repos.d]# yum list |head -100 列出目前服務(wù)器上可供本機(jī)進(jìn)行升級的軟件有哪些 [root@root yum.repos.d]# yum list updates !!! 列出目前服務(wù)器上xz.x86_64可更新版本 [root@root yum.repos.d]# yum list updates|grep xz.x86_64yum 安裝/升級/卸載軟件
yum [install | update | remove] 軟件名 install :后面接要安裝的軟件 update :后面接要升級的軟件,若要整個(gè)系統(tǒng)都升級,就直接update即可 remove:刪除某個(gè)軟件時(shí),依賴于該軟件并已經(jīng)安裝到系統(tǒng)中的 其它軟件或者包,會(huì)被一并刪除(rpm方式刪除某個(gè)包時(shí),如果依賴于該包的其它包之前也被安裝到系統(tǒng)中,刪除不會(huì)成功,需要先手動(dòng)刪除那些包. )在安裝過程中有時(shí)會(huì)出現(xiàn) 需要輸入y/n確認(rèn)的情況 在確定的情況下 使用 yum [install | update | remove] -y 跳過所有的選擇 , 默認(rèn)為選擇yes四 、 yum進(jìn)階
yum客戶端運(yùn)行機(jī)制
客戶端每次使用yum調(diào)用?install或者search的時(shí)候,都會(huì)去解析/etc/yum.repos.d下面所有以.repo結(jié)尾的文件,這些配置文件指定了yum服務(wù)器的地址。 yum會(huì)定期去“更新”yum服務(wù)器上的rpm “清單” ,然后把“清單”下載保存到y(tǒng)um自己的cache里面,根據(jù)/etc/yum.conf里配置(默認(rèn)是在/var/cache/yum/$basearch/$releasever下、即/var/cache/yum/x86_64/6),每次調(diào)用yum安裝包的時(shí)候都會(huì)去這個(gè)cache目錄下去找“清單”,根據(jù)“清單”里的rpm包描述從而來確定安裝包的名字,版本號,所需要的依賴包等,如果rpm包的cache不存在,就去yum服務(wù)器下載rpm包安裝。yum配置文件信息
[root@localhost soft]# cd /etc/yum.repos.d [root@root 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] ?:代表容器的名字,中括號是必須帶的,里面名字可以自定義,但不能有兩個(gè)相同的名字,否則yum找不到相關(guān)的軟件列表 name:只是描述容器 mirrorlist: “#”注釋掉 baseurl:容器的固定地址 gpgcheck:gpg驗(yàn)證是否開啟, 1是開啟,0是不開啟;“開啟”會(huì)讓yum檢查每個(gè)下載的RPM的GnuPG簽名。這么做是因?yàn)槟阈枰m當(dāng)?shù)腉nuPG key注冊到您的RPM數(shù)據(jù)庫??梢苑乐贡黄垓_,如:非法入侵發(fā)行版網(wǎng)站,木馬導(dǎo)入軟件包,使不知情用戶下載 gpgkey:數(shù)字證書公鑰文件所在位置yum服務(wù)器端
所有要發(fā)行的rpm包都放在yum服務(wù)器上以提供別人來下載,rpm包根據(jù)kernel的版本號,cpu的版本號分別編譯發(fā)布。yum服務(wù)器只要提供簡單的下載就可以了,ftp或者h(yuǎn)ttpd的形式 都可以。yum服務(wù)器有一個(gè)最重要的環(huán)節(jié)就是整理出每個(gè)rpm 包的基本信息,包括rpm包對應(yīng)的版本號,conf文件,binary 信息,以及很關(guān)鍵的依賴信息。在yum服務(wù)器上提供 了createrepo工具,用于把rpm包的基本概要信息做成一張"清 單",這張"清單"就是描述每個(gè)rpm包的spec文件中信息。 ?總結(jié)
以上是生活随笔為你收集整理的Linux_09 Linux软件包管理 rpm与yum的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据 NIO
- 下一篇: Linux 中su 与su - 的区别