1、每12小時(shí)備份并壓縮/etc/目錄至/backup目錄中,保存文件名稱格式為,"etc-年-月-日-時(shí)-分.tar.gz"
? * /12 * * * root /etc -cvjf /backup -$(etc+%Y-%m-%d-%H-%M).tar.gz
2、rpm包管理功能總結(jié)以及實(shí)例應(yīng)用演示。
? RPM包管理與YUM的使用總結(jié)
一碴倾、rpm包管理
簡(jiǎn)介:
在GNU/Linux操作系統(tǒng)中,RPM和DPKG為最常見的兩類軟件包管理工具,他們分別應(yīng)用于基于RPM軟件包的Linux發(fā)行版本和DEB軟件包的Linux發(fā)行版本跌榔。軟件包管理工具的作用是提供在操作系統(tǒng)中安裝异雁,升級(jí),卸載需要的軟件的方法僧须,并提供對(duì)系統(tǒng)中所有軟件狀態(tài)信息的查詢纲刀。
? ? RPM (The RPM PackageManager),是由Red Hat公司開發(fā)的一個(gè)Linux軟件包安裝與管理程序担平,是以一種數(shù)據(jù)庫(kù)記錄的方式來(lái)將所需要的軟件安裝到你的Linux系統(tǒng)的一套管理機(jī)制示绊。用戶可以方便地在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ù)查詢Linux主機(jī)的相依屬性軟件是否滿足,若滿足則予以安裝泽篮,若不滿足產(chǎn)則不予安裝盗尸。那么安裝的時(shí)候就將該軟件的信息整個(gè)寫入RPM的數(shù)據(jù)庫(kù)中,以便未來(lái)的查詢帽撑、驗(yàn)證與反安裝泼各。
rpm包的命令格式
? ? ? ? ? ? ? Name-Version-Relase.Arch.rpm
? ? ? ? ? ? ? ? ? ? eg:bash-4.1.2-15.el6_4.x86_64
Name:軟件的名稱,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: 依賴于虛擬機(jī),沒有任何硬件等級(jí)上的限制。
例如:bash-4.2.3-3.centos5.x86_64.rpm
獲取rpm包的途徑:
? ? ? 1亿笤、發(fā)行的光盤或站點(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è)人制作并公開發(fā)布許多rpm包
? ? ? ? ? ? http://rpmfind.net
? ? ? ? ? ? http://rpm.pbone.net
? ? ? 4净薛、可靠的途徑:EPEL
? ? ? ? EPEL是Extra Packages forEnterprise Linux的縮寫汪榔,企業(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ì)枢舶,相同懦胞,則意味著完整性沒問(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 …
查詢模式: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括堤,用于查詢和驗(yàn)證模式。
? ? ? -a:查詢所安裝的軟件包绍移。
? ? ? -f悄窃,--file FILE :查詢擁有<文件>的軟件包,即是哪一個(gè)軟件包安裝的<解文件>蹂窖。
查詢選項(xiàng):query-options轧抗,可用于查詢和驗(yàn)證模式。
? ? ? -i恼策,--info:顯示軟件包的信息鸦致,包括名稱潮剪、版本、描述信息分唾。
? ? ? -l抗碰,--list:列出這個(gè)軟件包內(nèi)所包含的文件。
? ? ? --provides:顯示這個(gè)軟件包所提供的功能绽乔。
? ? ? -R弧蝇,--requires:查詢安裝該軟件包所需要的其他軟件包。
? ? ? -s折砸,--state:列出軟件包中所有文件的狀態(tài)看疗。
驗(yàn)證選項(xiàng):verify-options,只能用于驗(yàn)證模式睦授。
? ? ? --nodeps:不驗(yàn)證依賴的軟件包两芳。
? ? ? --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ì)檢查該軟件包的依賴關(guān)系特咆,即正確運(yùn)行該軟件包所需的其他軟件是否已經(jīng)安裝。使用該選項(xiàng)將忽略軟件包所依賴的其他軟件強(qiáng)制安裝录粱。但不推薦這種做法腻格,因?yàn)檫@樣安裝的軟件大部是不能運(yùn)行的。
? ? ? --test:模擬安裝关摇,軟件包并不會(huì)實(shí)際安裝到系統(tǒng)中荒叶,只是檢查并顯示可能存在的沖突碾阁。
刪除選項(xiàng):erase-options输虱,只能用于刪除模式。
? ? ? --nodeps:忽略其他依賴該軟件包的軟件脂凶,強(qiáng)制刪除該軟件包宪睹。正常情況下不建議這樣做,因?yàn)閯h除軟件包后蚕钦,其他相關(guān)的軟件就不能運(yùn)行了亭病。
? ? ? --test:不真正刪除,只是模擬嘶居。
rpm包管理器的常見使用場(chǎng)景
安裝軟件包:-i 罪帖,--install
軟件包的安裝分為兩個(gè)階段促煮,首先是安裝準(zhǔn)備階段,在準(zhǔn)備階段會(huì)檢查磁盤空間整袁、軟件是否已安裝菠齿、依賴軟件包是否已安裝等,準(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ì)依賴于其他軟件包梨州,也就是說(shuō)在安裝了特定的軟件包之后才可以安裝該軟件包。如果軟件依賴于其它包則:
1田轧、解決依賴關(guān)系
如果多個(gè)包之間相互依賴暴匠,可以同時(shí)使用rpm命令安裝多個(gè)包,或者使用yum進(jìn)行安裝傻粘。
有依賴關(guān)系包的會(huì)報(bào)錯(cuò)每窖,error: Faileddependencies:。根據(jù)提示安裝所依賴包弦悉,其中一些>=窒典、<=符號(hào)。
>=:表示必須要大于或等于某個(gè)版本稽莉。
<=:表示要小于或等于某個(gè)版本瀑志。
2、忽略依賴關(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模擬刪除,可以先檢查被刪除軟件包是否有依賴軟件包
--nodeps聋亡,強(qiáng)制刪除井厌,忽略依賴關(guān)系垢袱,但依賴于此包程序包可能會(huì)運(yùn)行不正常爽锥;同安裝的選項(xiàng)類似臣樱。? ?
注意:在卸載時(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
查詢軟件包:-q,--query
? ? 使用rpm命令可以查看指定軟件包的詳細(xì)信息、安裝的文件清單汁尺、依賴的軟件包清單苞也、某個(gè)軟件包是否已經(jīng)安裝此再、系統(tǒng)中所有已安裝軟件包的清單等信息逛裤。
? ? 常用組合選項(xiàng):
? ? -q,--query查詢某軟件包是否安裝薪介,如果有則表示軟件全名道偷。
? ? 格式:rpm -qpackage_name...
? ? # rpm -q bash
? ? bash-4.1.2-15.el6_4.x86_64
? ? -aq? ? ? ,--all查詢系統(tǒng)中所有已經(jīng)安裝的軟件包列表
? ? 按條件過(guò)濾:rpm -qa | grep 'PATTERN'等同于選項(xiàng)-qi
? ? -iq记劈,--info查詢軟件包的詳細(xì)描述信息勺鸦。輸出中包括軟件名稱(name)、版本(Version)目木、修正版(Release)换途、軟件包的安裝時(shí)間(Install Date)、安裝軟件包的文件名稱(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? 查詢系統(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查詢某包安裝生成了哪些配置文件
? ? #rpm -qc bash
? ? ? ? ? /etc/skel/.bash_logout
? ? /etc/skel/.bash_profile
? ? /etc/skel/.bashrc
? ? -dq,--docfiles查詢某包安裝生成了哪些幫助文件
? ? #rpm -qd bash
? ? --scripts查詢程序包的相關(guān)腳本
? ? #rpm -q --scripts bash
? ? 顯示的腳本有四類:
? ? ? ? ? ? preinstall:在安裝之前運(yùn)行腳本
? ? ? ? postinstall: 在安裝之后腳本
? ? ? ? ? ? ? preuninstall: 在卸載之前腳本
? ? ? ? ? ? ? postuninstall: 在卸載之后腳本
? ? -fq誓禁,--queryformat QUERYFMT查詢某文件是由哪個(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)查詢
? ? ? ? 格式:? ? 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è)軟件包所依賴的軟件包清單。格式:rpm –qR 軟件包名稱
[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í)到更高的版本救拉。新版的軟件包安裝文件覆蓋舊版本的文件难审。
用戶要注意的是:rpm會(huì)自動(dòng)反安裝相應(yīng)軟件包的老版本。如果老版本軟件的配置文件通新版本的不兼容亿絮,rpm會(huì)自動(dòng)將其保存為另外一個(gè)文件告喊,用戶會(huì)看到下面的信息:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
這樣用戶就可以自己手工去更改相應(yīng)的配置文件。
另外如果用戶要安裝老版本的軟件派昧,用戶就會(huì)看到下面的出錯(cuò)信息:
-Uvh黔姜,如果有老版本,則升級(jí)為新版本蒂萎,否則安裝秆吵。
-F,--freshen純升級(jí)五慈,如果沒有老版本纳寂,則不升級(jí)。
組合選項(xiàng):-Uvh 泻拦、-Fvh
? ? ? 升級(jí)后的版本可能會(huì)有依賴關(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ù)文件類型的不同檢驗(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)入光盤鏡像軟件包公鑰:
? ? #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 命令查詢一個(gè)rpm 包是否安裝了靡砌,也是要通過(guò)rpm 數(shù)據(jù)庫(kù)來(lái)完成的;有時(shí)rpm 系統(tǒng)出了問(wèn)題珊楼,不能安裝和查詢通殃,可能會(huì)是數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題,可以使用下面命令重建;
? ? rpm包數(shù)據(jù)庫(kù)目錄:/var/lib/rpm
? ? #rpm --initdb:初始化數(shù)據(jù)庫(kù)
? ? ? ? ##如果事先沒有庫(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)處理依賴性關(guān)系,并且一次安裝所有依賴的軟體包.
yum客戶端安裝軟件等操作實(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ù)分析, 可能包括檢查依賴關(guān)系勾缭、文件列表等信息;
? ? ? ? ? ? 4宗收、執(zhí)行具體操作:
客戶端配置文件指定對(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
配置文件格式:由兩段組成混稽,類似windows的ini配置文件
? ? ? ? [main] :主配置段
? ? ? ? [repo] :倉(cāng)庫(kù)配置段
配置文件格式采驻,文件 存放于/etc/yum.repos.d/ 并以repo結(jié)尾的文件
? ? [repo_id]
? ? name=repo_name? 顯示的名稱,可以是任意的字符串
? ? 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ù)開銷,用來(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ì)連依賴的包一起刪除?
? ? ? ? ? ? groupremove "group_name": 卸載指定的包組
? ? 查詢
? ? ? ? ? ? whatprovides|provides /path/to/somefile: 查詢某文件是由哪個(gè)包安裝生成的?
? #? yum provides */ifcofnig? # 這樣可以查詢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
以光盤為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)依賴全部都下載到本地,保存好烛卧。
(yum install? --downloadonly --downloaddir=/aspack/ \
mysql-community-server
上述命令即可把mysql-community-server對(duì)應(yīng)的所有rpm包及其依賴下載到/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)甥啄,注意拼寫)
baseurl=file:///倉(cāng)庫(kù)路徑或網(wǎng)址
gpgcheck=0
enabled=1
可以看到.repo配置文件存炮,也是如此簡(jiǎn)單:
as4k是本地倉(cāng)庫(kù)名,可任意起名型豁,但是注意不能與已有的倉(cāng)庫(kù)名重復(fù)僵蛛。
name后面是注釋信息尚蝌,隨意書寫迎变。
baseurl這后面就是填寫本地倉(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)沒有,需要手動(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ù)量并沒有增加,我們安裝新增的軟件包也會(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倦蚪、寫一個(gè)腳本實(shí)現(xiàn)列出以下菜單給用戶:
(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)作寫在一個(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)行查詢
? ? [root@localhost ruby] # sed -n '/ruby/p' ab? ? #查詢包括關(guān)鍵字ruby所在所有行
? ? [root@localhost ruby] # sed -n '/\$/p' ab? ? ? ? #查詢包括關(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為例)下載完整包與依賴到對(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)谓谦,注意拼寫)
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)