1洒疚、每12小時(shí)備份并壓縮/etc/目錄至/backup目錄中钮呀,保存文件名稱(chēng)格式為删掀,"etc-年-月-日-時(shí)-分.tar.gz"
答:? * /12 * * * root /etc -cvjf /backup -$(etc+%Y-%m-%d-%H-%M).tar.gz
2患膛、rpm包管理功能總結(jié)以及實(shí)例應(yīng)用演示凡蚜。
答:一人断、rpm包管理
簡(jiǎn)介:
在GNU/Linux操作系統(tǒng)中,RPM和DPKG為最常見(jiàn)的兩類(lèi)軟件包管理工具朝蜘,他們分別應(yīng)用于基于RPM軟件包的Linux發(fā)行版本和DEB軟件包的Linux發(fā)行版本恶迈。軟件包管理工具的作用是提供在操作系統(tǒng)中安裝,升級(jí)谱醇,卸載需要的軟件的方法暇仲,并提供對(duì)系統(tǒng)中所有軟件狀態(tài)信息的查詢(xún)。
? ? RPM (The RPM PackageManager)副渴,是由Red Hat公司開(kāi)發(fā)的一個(gè)Linux軟件包安裝與管理程序奈附,是以一種數(shù)據(jù)庫(kù)記錄的方式來(lái)將所需要的軟件安裝到你的Linux系統(tǒng)的一套管理機(jī)制。用戶(hù)可以方便地在Linux系統(tǒng)中安裝煮剧、升級(jí)和刪除軟件斥滤,以及在一個(gè)統(tǒng)一的界面中對(duì)所有的RPM軟件包進(jìn)行管理将鸵。
RPM軟件包分為二進(jìn)制包(Binary)、源代碼包(Source)和Delta包三種中跌。二進(jìn)制包(.rpm)可以直接安裝在計(jì)算機(jī)中咨堤,而源代碼包將會(huì)由RPM自動(dòng)編譯、安裝漩符。源代碼包經(jīng)常以src.rpm作為后綴名一喘。
特點(diǎn):
將你要安裝的軟件先編譯過(guò),并且打包成為RPM機(jī)制的包裝檔案嗜暴,透過(guò)包裝好的軟件里頭默認(rèn)的數(shù)據(jù)庫(kù)記錄凸克,記錄這個(gè)軟件要安裝的時(shí)候必須具備的相依屬性軟件,當(dāng)安裝在你的Linux主機(jī)時(shí)闷沥,RPM會(huì)先依照軟件里面的數(shù)據(jù)查詢(xún)Linux主機(jī)的相依屬性軟件是否滿(mǎn)足萎战,若滿(mǎn)足則予以安裝,若不滿(mǎn)足產(chǎn)則不予安裝舆逃。那么安裝的時(shí)候就將該軟件的信息整個(gè)寫(xiě)入RPM的數(shù)據(jù)庫(kù)中蚂维,以便未來(lái)的查詢(xún)、驗(yàn)證與反安裝路狮。
rpm包的命令格式
? ? ? ? ? ? ? Name-Version-Relase.Arch.rpm
? ? ? ? ? ? ? ? ? ?? eg:bash-4.1.2-15.el6_4.x86_64
Name:軟件的名稱(chēng)虫啥,bash
Version: 版本信息。同源代碼(4.1.2)?
源代碼的version:major.minor.release
Release: rpm自身釋放的發(fā)行號(hào)(次數(shù))奄妨,通常是編譯的次數(shù)涂籽。與程序源碼的發(fā)行號(hào)無(wú)關(guān),僅用于標(biāo)識(shí)對(duì)rpm包不同制作的修訂砸抛;同時(shí)评雌,release還包含此包適用的OS
Arch:硬件平臺(tái),
? ? ?? x86: i386, i486, i586, i686等直焙;
? ? ?? x86_64: 針對(duì)64位的CPU進(jìn)行優(yōu)化編譯設(shè)定
? ? ?? powerpc: ppc
? ? ?? noarch: 依賴(lài)于虛擬機(jī)景东,沒(méi)有任何硬件等級(jí)上的限制。
例如:bash-4.2.3-3.centos5.x86_64.rpm
獲取rpm包的途徑:
? ? ?? 1箕般、發(fā)行的光盤(pán)或站點(diǎn)服務(wù)器
? ? ? ? ?? 鏡像:
? ? ? ? ? ?? http://mirrors.163.com
? ? ? ? ? ?? http://mirrors.sohu.com
? ? ? ? ? ?? http://centos.ustc.edu.cn/centos/
? ? ?? 2耐薯、項(xiàng)目的官網(wǎng)
? ? ? ? ? ?? 源代碼
? ? ? ? ? ?? rpm包
? ? ?? 3、很多第三方機(jī)構(gòu)或個(gè)人制作并公開(kāi)發(fā)布許多rpm包
? ? ? ? ? ?? http://rpmfind.net
? ? ? ? ? ?? http://rpm.pbone.net
? ? ?? 4丝里、可靠的途徑:EPEL
? ? ? ? EPEL是Extra Packages forEnterprise Linux的縮寫(xiě),企業(yè)版 Linux 附加軟件包体谒。https://fedoraproject.org/wiki/EPEL/zh-cn
rpm包的合法性驗(yàn)證:
包制作者制作完成之后會(huì)附加數(shù)字簽名于包上杯聚;
來(lái)源合法性
包的完整性
包的制作者使用單向加密提取原始數(shù)據(jù)的特征碼,而后使用自己的私鑰加密這段特性碼抒痒,附加原始數(shù)據(jù)后面幌绍。
驗(yàn)證過(guò)程:
前提:必須有可靠機(jī)制獲取到包制作者的公鑰;
1、使用制作者的公鑰解密加密的特征碼傀广,能解密則意味著來(lái)源合法颁独;
2、使用與制作者同樣的意向加密算法提取原始數(shù)據(jù)的特征碼伪冰,并與解密出來(lái)的特征作比對(duì)誓酒,相同,則意味著完整性沒(méi)問(wèn)題贮聂;
rpm命令使用方法:
RPM軟件包的安裝靠柑、刪除、升級(jí)吓懈、查看和驗(yàn)證等所有的操作都由rpm這一命令來(lái)進(jìn)行的歼冰。rpm命令有12種模式,不同模式有不同的命令模式耻警,能完成不同的管理功能隔嫡。常用的模式的有:
安裝模式:rpm? {-i |--install}? [install-options]? PACKAGE_File …
升級(jí)模式:rpm? {-U|--upgrade}? [install-options]? PACKAGE_File …
卸載(刪除)模式:rpm {-e|--erase} [erase-options]PACKAGE_Name …
查詢(xún)模式:rpm? {-q |--query }? [select-options]? [query-options]
驗(yàn)證模式:rpm? {-V |--verify}? [select-options]? [verify-options]
一般選項(xiàng):可以用于rpm命令的所有模式。
? ? ?? -h :用#顯示完成的進(jìn)度甘穿。
? ? ?? --version:顯示當(dāng)前使用的RPM版本腮恩。
選擇選項(xiàng):select-options,用于查詢(xún)和驗(yàn)證模式扒磁。
? ? ?? -a:查詢(xún)所安裝的軟件包庆揪。
? ? ?? -f,--file FILE :查詢(xún)擁有<文件>的軟件包妨托,即是哪一個(gè)軟件包安裝的<解文件>缸榛。
查詢(xún)選項(xiàng):query-options,可用于查詢(xún)和驗(yàn)證模式兰伤。
? ? ?? -i内颗,--info:顯示軟件包的信息,包括名稱(chēng)敦腔、版本均澳、描述信息。
? ? ?? -l符衔,--list:列出這個(gè)軟件包內(nèi)所包含的文件找前。
? ? ?? --provides:顯示這個(gè)軟件包所提供的功能。
? ? ?? -R判族,--requires:查詢(xún)安裝該軟件包所需要的其他軟件包躺盛。
? ? ?? -s,--state:列出軟件包中所有文件的狀態(tài)形帮。
驗(yàn)證選項(xiàng):verify-options槽惫,只能用于驗(yàn)證模式周叮。
? ? ?? --nodeps:不驗(yàn)證依賴(lài)的軟件包。
? ? ?? --nofiles:不驗(yàn)證軟件包文件的屬性界斜。
安裝選項(xiàng):install-options仿耽,用于安裝模式和升級(jí)模式。
? ? ?? --force:同--replacepkgs,--replacefiles一樣各薇,就算要安裝的軟件版本已經(jīng)安裝在系統(tǒng)上项贺,或者是系統(tǒng)上現(xiàn)在的版本比要安裝的版本高,依然強(qiáng)制覆蓋安裝得糜。
? ? ?? --nodeps:使用RPM安裝前敬扛,RPM會(huì)檢查該軟件包的依賴(lài)關(guān)系,即正確運(yùn)行該軟件包所需的其他軟件是否已經(jīng)安裝朝抖。使用該選項(xiàng)將忽略軟件包所依賴(lài)的其他軟件強(qiáng)制安裝啥箭。但不推薦這種做法,因?yàn)檫@樣安裝的軟件大部是不能運(yùn)行的治宣。
? ? ?? --test:模擬安裝急侥,軟件包并不會(huì)實(shí)際安裝到系統(tǒng)中,只是檢查并顯示可能存在的沖突侮邀。
刪除選項(xiàng):erase-options坏怪,只能用于刪除模式。
? ? ?? --nodeps:忽略其他依賴(lài)該軟件包的軟件绊茧,強(qiáng)制刪除該軟件包铝宵。正常情況下不建議這樣做,因?yàn)閯h除軟件包后华畏,其他相關(guān)的軟件就不能運(yùn)行了鹏秋。
? ? ?? --test:不真正刪除,只是模擬亡笑。
rpm包管理器的常見(jiàn)使用場(chǎng)景
安裝軟件包:-i 侣夷,--install
軟件包的安裝分為兩個(gè)階段,首先是安裝準(zhǔn)備階段仑乌,在準(zhǔn)備階段會(huì)檢查磁盤(pán)空間百拓、軟件是否已安裝、依賴(lài)軟件包是否已安裝等晰甚,準(zhǔn)備階段完成后才會(huì)進(jìn)行軟件包的安裝衙传。
? ? ?? -i,--install 安裝新軟件包厕九》嗌可用于內(nèi)核的升級(jí)和安裝,可以同時(shí)保留老內(nèi)核版本和新版本兩個(gè)內(nèi)核止剖。
-h腺阳,--hash 用#(hash)符顯示rpm安裝過(guò)程
-v,--verbose詳述安裝過(guò)程
-vv 穿香,顯示調(diào)試信息
常用組合選項(xiàng):-ivh
--test:安裝準(zhǔn)備階段亭引,模擬安裝,檢查為了檢查一個(gè)軟件包的安裝是否會(huì)有沖突皮获,可以事先使用--test選項(xiàng)進(jìn)行模擬安裝焙蚓,例如
[root@stu19 Packages]# rpm-ivh --test zsh-4.3.10-7.el6.x86_64.rpm
Preparing...? ? ? ? ? ? ? ? ###########################################[100%]
[root@stu19 Packages]# rpm-ivh zsh-4.3.10-7.el6.x86_64.rpm
warning:zsh-4.3.10-7.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de:NOKEY
Preparing...? ? ? ? ? ? ? ? ###########################################[100%]
?? 1:zsh? ? ? ? ? ? ? ? ? ###########################################[100%]
RPM軟件包有可能會(huì)依賴(lài)于其他軟件包,也就是說(shuō)在安裝了特定的軟件包之后才可以安裝該軟件包洒宝。如果軟件依賴(lài)于其它包則:
1购公、解決依賴(lài)關(guān)系
如果多個(gè)包之間相互依賴(lài),可以同時(shí)使用rpm命令安裝多個(gè)包雁歌,或者使用yum進(jìn)行安裝宏浩。
有依賴(lài)關(guān)系包的會(huì)報(bào)錯(cuò),error: Faileddependencies:靠瞎。根據(jù)提示安裝所依賴(lài)包比庄,其中一些>=、<=符號(hào)乏盐。
>=:表示必須要大于或等于某個(gè)版本佳窑。
<=:表示要小于或等于某個(gè)版本。
2父能、忽略依賴(lài)關(guān)系
--nodeps神凑,強(qiáng)制安裝軟件包,但有可能無(wú)法運(yùn)行何吝;一般不建議溉委。
[root@stu19Packages]# rpm -ivh --test libgnomecanvas-devel-2.26.0-4.el6.x86_64.rpm
error: Faileddependencies:
? ? ? ?? gtk-doc is needed bylibgnomecanvas-devel-2.26.0-4.el6.x86_64
? ? ? ?? gtk2-devel >= 2.1.2 is needed bylibgnomecanvas-devel-2.26.0-4.el6.x86_64
? ? ? ?? libart_lgpl-devel >= 2.3.8 is neededby libgnomecanvas-devel-2.26.0-4.el6.x86_64
? ? ? ?? libglade2-devel >= 2.6.3-2 is neededby libgnomecanvas-devel-2.26.0-4.el6.x86_64
? ? ? ?? pkgconfig(gail) is needed bylibgnomecanvas-devel-2.26.0-4.el6.x86_64
? ? ? ?? pkgconfig(gtk+-2.0) is needed bylibgnomecanvas-devel-2.26.0-4.el6.x86_64
[root@stu19Packages]# rpm -ivh --nodeps libgnomecanvas-devel-2.26.0-4.el6.x86_64.rpm
Preparing...? ? ? ? ? ? ?? ########################################### [100%]
?? 1:libgnomecanvas-devel?? ###########################################[100%]
--force:同 --replacepkgs,--replacefiles一樣,就算要安裝的軟件版本已經(jīng)安裝在系統(tǒng)上岔霸,或者是系統(tǒng)上現(xiàn)在的版本比要安裝的版本高薛躬,依然強(qiáng)制覆蓋安裝。
卸載程序包:-e呆细,-- erase
rpm [option] package_name
-e: erase 刪除軟件包
--test模擬刪除型宝,可以先檢查被刪除軟件包是否有依賴(lài)軟件包
--nodeps,強(qiáng)制刪除絮爷,忽略依賴(lài)關(guān)系趴酣,但依賴(lài)于此包程序包可能會(huì)運(yùn)行不正常;同安裝的選項(xiàng)類(lèi)似坑夯。? ?
注意:在卸載時(shí)岖寞,如果原有配置文件作了修改,系統(tǒng)提示警告信息柜蜈,并將安裝生成的配置文件重命名為以 .rpmsave結(jié)尾仗谆。
[root@stu19 Packages]# rpm -e --test libgnome
error: Failed dependencies:
? ? ? ?? libgnome-2.so.0()(64bit)is needed by (installed) libbonoboui-2.24.2-3.el6.x86_64
? ? ? ?? libgnome-2.so.0()(64bit)is needed by (installed) gnome-power-manager-2.28.3-7.el6_4.x86_64
? ? ? ?? libgnome-2.so.0()(64bit)is needed by (installed) gnote-0.6.3-3.el6.x86_64
? ? ? ?? libgnome-2.so.0()(64bit)is needed by (installed) mousetweaks-2.28.2-1.el6.x86_64
? ? ? ?? libgnome >= 2.8.0 isneeded by (installed) gnome-python2-gnome-2.28.0-3.el6.x86_64
? ? ? ?? libgnome is needed by(installed) gnome-terminal-2.31.3-8.el6.x86_64
[root@stu19 Packages]# rpm -e --nodeps libgnome
查詢(xún)軟件包:-q指巡,--query
? ? 使用rpm命令可以查看指定軟件包的詳細(xì)信息、安裝的文件清單隶垮、依賴(lài)的軟件包清單藻雪、某個(gè)軟件包是否已經(jīng)安裝、系統(tǒng)中所有已安裝軟件包的清單等信息狸吞。
? ? 常用組合選項(xiàng):
? ? -q勉耀,--query查詢(xún)某軟件包是否安裝,如果有則表示軟件全名蹋偏。
? ? 格式:rpm -qpackage_name...
? ? # rpm -q bash
? ? bash-4.1.2-15.el6_4.x86_64
? ? -aq? ? ? 便斥,--all查詢(xún)系統(tǒng)中所有已經(jīng)安裝的軟件包列表
? ? 按條件過(guò)濾:rpm -qa | grep 'PATTERN'等同于選項(xiàng)-qi
? ? -iq,--info查詢(xún)軟件包的詳細(xì)描述信息威始。輸出中包括軟件名稱(chēng)(name)枢纠、版本(Version)、修正版(Release)字逗、軟件包的安裝時(shí)間(Install Date)京郑、安裝軟件包的文件名稱(chēng)(Source RPM)、程序的占用空間(Size)?
[root@stu19 Packages]# rpm -qi bash
? ? Name? ? ? ? : bash? ? ? ? ? ? ? ? ? ? ? ?? Relocations: (not relocatable)
? ? Version? ?? : 4.1.2? ? ? ? ? ? ? ? ? ? ? ? ? ?? Vendor: CentOS
? ? Release? ?? : 15.el6_4? ? ? ? ? ?? Build Date: Thu 18 Jul 201309:21:24 PM CST
? ? Install Date: Mon 30 Jun 2014 12:27:55 PM CST? ? ? Build Host: c6b10.bsys.dev.centos.org
? ? Group? ? ?? : SystemEnvironment/Shells? ?? Source RPM:bash-4.1.2-15.el6_4.src.rpm
? ? Size? ? ? ? : 3139291? ? ? ? ? ? ? ? ? ? ? ? ? License: GPLv3+
? ? Signature?? : RSA/SHA1, Thu 18Jul 2013 09:46:10 PM CST, Key ID 0946fca2c105b9de
? ? Packager? ? : CentOS BuildSystem<http://bugs.centos.org>
? ? URL? ? ? ?? :http://www.gnu.org/software/bash
? ? Summary? ?? : The GNU BourneAgain shell
? ? Description :
? ? The GNU Bourne Again shell (Bash) is a shell or command language
? ? interpreter that is compatible with the Bourne shell (sh). Bash
? ? incorporates useful features from the Korn shell (ksh) and the C shell
? ? (csh). Most sh scripts can be run by bash without modification.
? ? -lq葫掉,--list?? 查詢(xún)系統(tǒng)中已安裝軟件包生成的文件列表些举。
? ? ? ? ? rpm -ql package_name
? ? [root@stu19 ~]# rpm -ql bash
? ? /bin/bash
? ? /bin/sh
? ? /etc/skel/.bash_logout
? ? /etc/skel/.bash_profile
? ? /etc/skel/.bashrc
? ? /usr/bin/bashbug-64
? ? /usr/share/doc/bash-4.1.2/COPYING
? ? … … … ….
? ? -cq,--configfiles查詢(xún)某包安裝生成了哪些配置文件
? ? #rpm -qc bash
? ? ? ? ? /etc/skel/.bash_logout
? ? /etc/skel/.bash_profile
? ? /etc/skel/.bashrc
? ? -dq,--docfiles查詢(xún)某包安裝生成了哪些幫助文件
? ? #rpm -qd bash
? ? --scripts查詢(xún)程序包的相關(guān)腳本
? ? #rpm -q --scripts bash
? ? 顯示的腳本有四類(lèi):
? ? ? ? ? ? preinstall:在安裝之前運(yùn)行腳本
? ? ? ? postinstall: 在安裝之后腳本
? ? ? ? ? ? ? preuninstall: 在卸載之前腳本
? ? ? ? ? ? ? postuninstall: 在卸載之后腳本
? ? -fq,--queryformat QUERYFMT查詢(xún)某文件是由哪個(gè)軟件包安裝生成的俭厚。
? ? ? ? 格式:?? rpm -qf /path/to/some_file
? ? # rpm -qf/bin/cat
? ? coreutils-8.4-31.el6.x86_64
? ? -p,--package PACKAGE_FILE:對(duì)尚未安裝的軟件執(zhí)行相關(guān)查詢(xún)
? ? ? ? 格式:? ? rpm [option] /path/to/package_file
? ? 可以結(jié)合選項(xiàng)-qpi户魏、-qpl、-qpc挪挤、-qpd使用叼丑,查看未安裝軟件包的相關(guān)信息。
? ? [root@stu19 Packages]# rpm -q zsh
? ? package zsh is not installed
? ? [root@stu19 Packages]# rpm -qpc zsh-4.3.10-7.el6.x86_64.rpm
? ? /etc/skel/.zshrc
? ? /etc/zlogin
? ? /etc/zlogout
? ? /etc/zprofile
? ? /etc/zshenv
? ? /etc/zshrc
? ? -Rq扛门,--requires查看已安裝的某個(gè)軟件包所依賴(lài)的軟件包清單鸠信。格式:rpm –qR 軟件包名稱(chēng)
[root@stu19 Packages]# rpm -qR vim-common
/bin/sh?
config(vim-common) = 2:7.2.411-1.8.el6
libc.so.6()(64bit)?
libc.so.6(GLIBC_2.2.5)(64bit)?
libc.so.6(GLIBC_2.3)(64bit)?
libc.so.6(GLIBC_2.3.4)(64bit)?
libc.so.6(GLIBC_2.4)(64bit)?
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)?
rpmlib(PayloadIsXz) <= 5.2-1
升級(jí)程序包:
格式:rpm [option]/path/to/package_file
-U,--upgrade升級(jí)或安裝论寨。如果有老版本星立,則升級(jí)為新版本,否則安裝葬凳。
由于版本過(guò)低绰垂,希望升級(jí)到更高的版本。新版的軟件包安裝文件覆蓋舊版本的文件火焰。
用戶(hù)要注意的是:rpm會(huì)自動(dòng)反安裝相應(yīng)軟件包的老版本劲装。如果老版本軟件的配置文件通新版本的不兼容,rpm會(huì)自動(dòng)將其保存為另外一個(gè)文件,用戶(hù)會(huì)看到下面的信息:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
這樣用戶(hù)就可以自己手工去更改相應(yīng)的配置文件占业。
另外如果用戶(hù)要安裝老版本的軟件绒怨,用戶(hù)就會(huì)看到下面的出錯(cuò)信息:
-Uvh,如果有老版本纺酸,則升級(jí)為新版本窖逗,否則安裝。
-F餐蔬,--freshen純升級(jí),如果沒(méi)有老版本佑附,則不升級(jí)樊诺。
組合選項(xiàng):-Uvh 、-Fvh
? ? ? 升級(jí)后的版本可能會(huì)有依賴(lài)關(guān)系的沖突等音同;
? ? ? --force: 強(qiáng)制升級(jí)
注意:內(nèi)核升級(jí)一般使用安裝-ivh词爬,而不是升級(jí)-Uvh(直接升級(jí)),系統(tǒng)允許多內(nèi)核并存权均。
軟件包校驗(yàn):-V顿膨,--verify
? ? -V,--verify用于檢查包安裝生成的文件屬性是否發(fā)生變化叽赊。
? ? 格式:rpm -V package_name
? ? 檢驗(yàn)項(xiàng)目共九項(xiàng)恋沃,結(jié)果以下面8個(gè)字母來(lái)和一個(gè)可能的屬性標(biāo)記:
? ? S : 表示文件大小;
? ? M : 表示權(quán)限;
? ? 5 : 表示MD5檢查和;
? ? D : 表示主從設(shè)備號(hào);
? ? L : 表示符號(hào)連接;
? ? U : 表示屬主;
? ? G : 表示屬組;
? ? T : 表示最后修改時(shí)間根據(jù)文件類(lèi)型的不同檢驗(yàn)的項(xiàng)目也不同
? ? P:caPabilities differ
? ? c %config? configuration file.
? ? d %doc? documentation file.
? ? l %license? license file.
? ? r %readme? readme file.
? ? 某屬性無(wú)變化,顯示為.
? ? 示例:
? ? [root@stu19 Packages]# vi /etc/zshrc
? ? [root@stu19 Packages]# rpm -V zsh
? ? S.5....T.? c /etc/zshrc
? ? 表示zsh包的配置文件/etc/zshrc文件大小必指、MD5囊咏、修改時(shí)間發(fā)生改變。
rpm包來(lái)源合法性及完整性檢驗(yàn):
? ? 在安裝軟件的時(shí)候塔橡,會(huì)warning提示? NOKEY相關(guān)信息梅割,說(shuō)明rpm包對(duì)來(lái)源合法性驗(yàn)證有警示信息。需要在當(dāng)前系統(tǒng)上導(dǎo)入包的制作者的公鑰
? ? [root@stu19 Packages]# rpm -vhizsh-4.3.10-7.el6.x86_64.rpm
? ? warning: zsh-4.3.10-7.el6.x86_64.rpm:Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
? ? Preparing...? ? ? ? ? ? ? ? ###########################################[100%]
? ? ? 1:zsh? ? ? ? ? ? ? ? ? ###########################################[100%]
? ? 導(dǎo)入格式:#rpm --import/path/to/key_file
? ? 導(dǎo)入光盤(pán)鏡像軟件包公鑰:
? ? #rpm --import/media/cdrom/RPM-GPG-KEY-CentOS-6
? ? # rpm -qa gpg-pubkey*? ? 顯示所有已經(jīng)導(dǎo)入的gpg格式的公鑰
? ? # rpm -qi gpg-pubkey-NAME?? #顯示密鑰的詳細(xì)信息
? ? 示例:
? ? [root@stu19 Packages]# rpm -K zsh-4.3.10-7.el6.x86_64.rpm
? ? zsh-4.3.10-7.el6.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSINGKEYS: (MD5) PGP#c105b9de)
? ? [root@stu19 Packages]# rpm --checksig zsh-4.3.10-7.el6.x86_64.rpm
? ? zsh-4.3.10-7.el6.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSINGKEYS: (MD5) PGP#c105b9de)
? ? [root@stu19 Packages]# rpm --import ../RPM-GPG-KEY-CentOS-6
? ? [root@stu19 Packages]# rpm --checksig zsh-4.3.10-7.el6.x86_64.rpm
? ? zsh-4.3.10-7.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
? ? [root@stu19 Packages]# rpm -K zsh-4.3.10-7.el6.x86_64.rpm
? ? zsh-4.3.10-7.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
? ? 手動(dòng)檢查:
? ? #rpm -K/path/to/package_file
? ? #rpm --checksig/path/to/package_file
? ? 不檢查包完整性:
? ? #rpm -K --nodigest
? ? 不檢查來(lái)源合法性:
? ? #rpm -K --nosignature
數(shù)據(jù)庫(kù)重建:
? ? ? ?? 通過(guò)rpm 命令查詢(xún)一個(gè)rpm 包是否安裝了葛家,也是要通過(guò)rpm 數(shù)據(jù)庫(kù)來(lái)完成的户辞;有時(shí)rpm 系統(tǒng)出了問(wèn)題,不能安裝和查詢(xún)癞谒,可能會(huì)是數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題底燎,可以使用下面命令重建;
? ? rpm包數(shù)據(jù)庫(kù)目錄:/var/lib/rpm
? ? #rpm --initdb:初始化數(shù)據(jù)庫(kù)
? ? ? ? ##如果事先沒(méi)有庫(kù)扯俱,會(huì)新建一個(gè)书蚪;如果有,則不新建迅栅;
? ? #rpm --rebuilddb: 重建數(shù)據(jù)庫(kù)
? ? ? ? ##直接重建殊校,覆蓋原有的數(shù)據(jù)庫(kù)
3、yum的配置和使用總結(jié)以及yum私有倉(cāng)庫(kù)的創(chuàng)建读存。
答: yum (Yellowdog Update Modifier)? 程序包管理器的前端工具
? ? 是一個(gè)在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器为流∨皇海基於RPM包管理,能夠從指定的服務(wù)器自動(dòng)下載RPM包并且安裝敬察,可以自動(dòng)處理依賴(lài)性關(guān)系秀睛,并且一次安裝所有依賴(lài)的軟體包.
yum客戶(hù)端安裝軟件等操作實(shí)現(xiàn)原理:
? ? ? ? ? ? 1、配置文件:指定各可用的yum倉(cāng)庫(kù);
? ? ? ? ? ? 2莲祸、緩存元數(shù)據(jù):yum會(huì)到各可用yum倉(cāng)庫(kù)獲取元數(shù)據(jù)蹂安,并緩存至本地;
? ? ? ? ? ? 3、分析元數(shù)據(jù):根據(jù)具體操作請(qǐng)求完成元數(shù)據(jù)分析, 可能包括檢查依賴(lài)關(guān)系锐帜、文件列表等信息田盈;
? ? ? ? ? ? 4、執(zhí)行具體操作:
客戶(hù)端配置文件指定對(duì)應(yīng)服務(wù)器訪問(wèn)方式如下幾種:
? ? ? ? ? ? ftp?? ftp://server/path/to/repo
? ? ? ? ? ? http? http://server/path/to/repo
? ? ? ? ? ? nfs?? nfs://server/nfs_path
? ? ? ? ? ? file? file:///path/to/repository
要使用yum管理應(yīng)用程序缴阎,首先得配置其可用的yum倉(cāng)庫(kù)允瞧,保存在配置文件中:
?? 主配置 /etc/yum.conf
?? 倉(cāng)庫(kù)配置 /etc/yum.repos.d/*.repo
配置文件格式:由兩段組成,類(lèi)似windows的ini配置文件
? ? ? ? [main] :主配置段
? ? ? ? [repo] :倉(cāng)庫(kù)配置段
配置文件格式蛮拔,文件 存放于/etc/yum.repos.d/ 并以repo結(jié)尾的文件
? ? [repo_id]
? ? name=repo_name?? 顯示的名稱(chēng)述暂,可以是任意的字符串
? ? baseurl=url? ? ? ? ? ?? 軟件路徑可以是網(wǎng)絡(luò)上的,也可以是本地的
? ? gpgcheck={0|1}? ? ?? 是否啟用包來(lái)源合法性驗(yàn)證
? ? enabled={0|1}? ? ? ? ? 是否啟用倉(cāng)庫(kù)
? ? gpgkey=公鑰文件(可以在本地建炫,也可是服務(wù)器端路徑)
? ? cost=1000 倉(cāng)庫(kù)開(kāi)銷(xiāo)畦韭,用來(lái)做優(yōu)先級(jí),默認(rèn)不指定就是1000 數(shù)值越小踱卵,優(yōu)先級(jí)越大
yum 命令使用:
格式:
yum的各命令:
? ? 安裝
? ? ? ? install package_name ...: 安裝指定的程序包
? ? ? ? reinstall package_name ...: 重新安裝指定的程序包? ?
? ? ? ? groupinstall "group_name":安裝指定的包組
? ? ? ? ? ? ? ? # yum install httpd
?? 查找
? ? ? ? repolist [all|enabled|disabled]: 列出所有可用yum repo
? ? ? ? list [all|installed|available]: 列出rpm包
? ? ? ? info package_name: 列出包的描述信息
? ? ? ? grouplist: 列出所有包組
? ? ? ? groupinfo "package_group_name":顯示包組信息? ? ? ?
? ? 升級(jí)
? ? ? ? ? ? check-update: 檢查可升級(jí)的包
? ? ? ? ? ? update package_name ...: 升級(jí)指定的程序包
? ? ? ? ? ? ? ? 如現(xiàn)在的版本:x-1.2.1, x-1.2.2, x-1.2.3
? ? ? ? ? ? ? ? ? ? 要升級(jí)到指定版本需指定版本號(hào):yum update x-1.2.2?
? ? 降級(jí)?? downgrade package_name:
? ? 刪除
? ? ? ? ? ? erase|remove? package_name ...:? 刪除己安裝的包廊驼,會(huì)連依賴(lài)的包一起刪除?
? ? ? ? ? ? groupremove "group_name": 卸載指定的包組
? ? 查詢(xún)
? ? ? ? ? ? whatprovides|provides /path/to/somefile: 查詢(xún)某文件是由哪個(gè)包安裝生成的?
? #? yum provides */ifcofnig?? # 這樣可以查詢(xún)ifconfig這個(gè)命令由哪個(gè)包提供的
? ? 清除元倉(cāng)庫(kù)數(shù)據(jù)
? ? ? ? ? ? clean [all|packages|metadata|expire-cache|rpmdb|plugins]: 清理緩存
? ? 安裝本地包:(yum 安裝本地的rpm包依舊會(huì)檢查軟件來(lái)源合法性的,無(wú)法通過(guò)的不予安裝惋砂。需要安裝則要禁止檢查妒挎。)
? ? ? ? install /path/to/package_file
? ? ? ? ? ? 手動(dòng)禁止檢查來(lái)源及完整性:--nogpgcheck
? ? ? ? ? ? ? ? yum install /tmp/zsh-2.3.1-2.el6.x86_64.rpm --nogpgcheck
以光盤(pán)為rpm源配置倉(cāng)庫(kù)
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
vim /etc/yum.repos.d/cdrom.repo
[base-cdrom]
name=cdrom_repo
baseurl=file:///mnt/cdrom/? ? ? ? ? ? ? ? ? ? ?? # 一般為repodata所在的目錄,這里面有rpm包的元數(shù)據(jù)
gpgcheck=1
enabled=1
gpgkey=file://mnt/cdrom/RPM-GPG-KEY-CentOS-6
保存退出西饵,yum repolist 可以查看是否配置成功
搭建本地離線yum倉(cāng)庫(kù)
把rpm包及其相關(guān)依賴(lài)全部都下載到本地酝掩,保存好。
(yum install? --downloadonly --downloaddir=/aspack/ \
mysql-community-server
上述命令即可把mysql-community-server對(duì)應(yīng)的所有rpm包及其依賴(lài)下載到/aspack/目錄里眷柔,也就是說(shuō)yum本地安裝mysql需要的所有文件我們都準(zhǔn)備好了;如果需要其他包期虾,則把mysql替換為其他包名字。
手動(dòng)在/etc/yum.repos.d/目錄下配置本地倉(cāng)庫(kù)信息驯嘱。
# vim /etc/yum.repos.d/as4k.repo
[as4k]
name=as4k(倉(cāng)庫(kù)名镶苞,隨便起,下面注意對(duì)應(yīng)鞠评,注意拼寫(xiě))
baseurl=file:///倉(cāng)庫(kù)路徑或網(wǎng)址
gpgcheck=0
enabled=1
可以看到.repo配置文件茂蚓,也是如此簡(jiǎn)單:
as4k是本地倉(cāng)庫(kù)名,可任意起名,但是注意不能與已有的倉(cāng)庫(kù)名重復(fù)聋涨。
name后面是注釋信息晾浴,隨意書(shū)寫(xiě)。
baseurl這后面就是填寫(xiě)本地倉(cāng)庫(kù)路徑了牍白,file://表示使用本地文件協(xié)議脊凰,后面的/aspack本地rpm包存放路徑。
gpgcheck=0這是和驗(yàn)證包的安全信息的茂腥,最好設(shè)置成0狸涌,表示關(guān)閉安全驗(yàn)證,否則還需要準(zhǔn)備安全驗(yàn)證文件础芍,麻煩一堆一堆的杈抢。
enabled=0,表示啟用本倉(cāng)庫(kù)仑性,0關(guān)閉,1啟用
使用createrepo命令生成repodata信息右蹦。
此功能默認(rèn)沒(méi)有诊杆,需要手動(dòng)先安裝yum install createrepo -y
安裝完畢之后,直接使用:createrepo /倉(cāng)庫(kù)路徑/
使用yum repoinfo檢查確認(rèn)
yum repoinfo 倉(cāng)庫(kù)名
以上全部執(zhí)行完畢之后即可正常使用yum安裝
補(bǔ)充:
如何對(duì)本地倉(cāng)庫(kù)進(jìn)行更新
下載一個(gè)新的rpm軟件包到本地倉(cāng)庫(kù)何陆,此時(shí)我們使用yum repoinfo as4k查看會(huì)發(fā)現(xiàn)軟件包的數(shù)量并沒(méi)有增加晨汹,我們安裝新增的軟件包也會(huì)提示,找不到次軟件包的現(xiàn)象贷盲,可以按照下述步驟淘这,更新倉(cāng)庫(kù)信息。
查看舊的軟件包總數(shù) yum repoinfo as4k | grep pkgs
更新本地倉(cāng)庫(kù) createrepo --update /aspack/
清除所有緩存 yum clean all
查看新的軟件包總數(shù) yum repoinfo as4k | grep pkgs
如果軟件包的數(shù)量增加巩剖,說(shuō)明倉(cāng)庫(kù)更新成功铝穷。
4、寫(xiě)一個(gè)腳本實(shí)現(xiàn)列出以下菜單給用戶(hù):答
(1)disk:show disk info信息
(2)mem: show memory info信息
(3)cpu: show cpu info信息
(*)quit
#!/bin/bash
echo -e "Please input a number for the following command.\n(1) disk:show disk info.\n(2) mem: show memory info.\n(3) cpu: show cpu info.\n(4) Quit"
echo -n "Please enter an integer -> "
read int
if [ -n $int ];then
? case $int in
? ? 1)
? ? echo"`df -h`"
? ? ;;
? ? 2)
? ? echo"`free`"
? ? ;;
? ? 3)
? ? echo"`cat /proc/cpuinfo`"
? ? ;;
? ? 4)
? ? echo"`exit 1`"
? ? ;;
esac
else
echo "please input a correct number"
fi
5佳魔、sed用法總結(jié)并結(jié)合實(shí)例演示
答:sed命令行格式為:
? ? ? ?? sed [-nefri] ‘command’ 輸入文本
常用選項(xiàng):
? ? ? ? -n∶使用安靜(silent)模式曙聂。在一般 sed 的用法中,所有來(lái)自 STDIN的資料一般都會(huì)被列出到螢?zāi)簧暇舷省5绻由?-n 參數(shù)后宁脊,則只有經(jīng)過(guò)sed 特殊處理的那一行(或者動(dòng)作)才會(huì)被列出來(lái)。
? ? ? ? -e∶直接在指令列模式上進(jìn)行 sed 的動(dòng)作編輯贤姆;
? ? ? ? -f∶直接將 sed 的動(dòng)作寫(xiě)在一個(gè)檔案內(nèi)榆苞, -f filename 則可以執(zhí)行 filename 內(nèi)的sed 動(dòng)作;
? ? ? ? -r∶sed 的動(dòng)作支援的是延伸型正規(guī)表示法的語(yǔ)法霞捡。(預(yù)設(shè)是基礎(chǔ)正規(guī)表示法語(yǔ)法)
? ? ? ? -i∶直接修改讀取的檔案內(nèi)容坐漏,而不是由螢?zāi)惠敵觥? ? ?
常用命令:
? ? ? ? a?? ∶新增, a 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的下一行)~
? ? ? ? c?? ∶取代仙畦, c 的后面可以接字串输涕,這些字串可以取代 n1,n2 之間的行!
? ? ? ? d?? ∶刪除慨畸,因?yàn)槭莿h除啊莱坎,所以 d 后面通常不接任何咚咚;
? ? ? ?? i?? ∶插入寸士, i 的后面可以接字串檐什,而這些字串會(huì)在新的一行出現(xiàn)(目前的上一行);
? ? ? ?? p? ∶列印弱卡,亦即將某個(gè)選擇的資料印出乃正。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)作~
? ? ? ?? s? ∶取代,可以直接進(jìn)行取代的工作哩婶博!通常這個(gè) s 的動(dòng)作可以搭配正規(guī)表示法瓮具!例如 1,20s/old/new/g 就是啦!
舉例:(假設(shè)我們有一文件名為ab)
? ?? 刪除某行
? ?? [root@localhost ruby] # sed '1d' ab? ? ? ? ? ? ? #刪除第一行
? ?? [root@localhost ruby] # sed '$d' ab? ? ? ? ? ? ? #刪除最后一行
? ?? [root@localhost ruby] # sed '1,2d' ab? ? ? ? ?? #刪除第一行到第二行
? ?? [root@localhost ruby] # sed '2,$d' ab? ? ? ? ?? #刪除第二行到最后一行
顯示某行
.? ? [root@localhost ruby] # sed -n '1p' ab? ? ? ? ?? #顯示第一行
? ?? [root@localhost ruby] # sed -n '$p' ab? ? ? ? ?? #顯示最后一行
? ?? [root@localhost ruby] # sed -n '1,2p' ab? ? ? ? #顯示第一行到第二行
? ?? [root@localhost ruby] # sed -n '2,$p' ab? ? ? ? #顯示第二行到最后一行
使用模式進(jìn)行查詢(xún)
? ?? [root@localhost ruby] # sed -n '/ruby/p' ab? ? #查詢(xún)包括關(guān)鍵字ruby所在所有行
? ?? [root@localhost ruby] # sed -n '/\$/p' ab? ? ? ? #查詢(xún)包括關(guān)鍵字$所在所有行凡人,使用反斜線\屏蔽特殊含
6名党、 用bash實(shí)現(xiàn)統(tǒng)計(jì)訪問(wèn)日志文件中狀態(tài)碼大于等于400的IP數(shù)量并排序
答:#!/bin/bash
#---test for sed and awk---
sed -n '/404/p' /usr/local/nginx/logs/access.log|awk -F":" '{print $1}'>ipnum.txt
echo "total 404 amount is `awk 'END{print NR}' ipnum.txt`"
cat ipnum.txt|sort -t ':' -k 3
7、 使用自制的yum源安裝ftp挠轴、openssh传睹、curl、wget岸晦、tcpdump等軟件包欧啤。
答:? 創(chuàng)建倉(cāng)庫(kù)文件夾;
? 使用命令yum install? --downloadonly --downloaddir=/pk/curl/? \curl(以curl為例)下載完整包與依賴(lài)到對(duì)應(yīng)文件夾启上;
? 在/etc/yum.repos.d/文件夾下創(chuàng)建相應(yīng)的配置文件curl.repo;
? 編輯curl.repo內(nèi)容:
[pk]
name=pk(倉(cāng)庫(kù)名邢隧,隨便起,下面注意對(duì)應(yīng)碧绞,注意拼寫(xiě))
baseurl=file:///pk/curl
gpgcheck=0
enabled=1
? 使用命令createrepo /倉(cāng)庫(kù)路徑/生成對(duì)應(yīng)的repo信息
? 使用命令yum repoinfo 倉(cāng)庫(kù)名進(jìn)行檢查確認(rèn)