- 浏览: 595602 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
RPM 的使用其实不难,只要使用 rpm 这个命令即可!鸟哥最喜欢的就是 rpm 命令的查询功能了,可以让我很轻易的就知道某个系统有没有安装鸟哥要的软件呢!此外, 我们最好还是得要知道一下,到底 RPM 类型的文件他们是将软件的相关文件放置在哪里呢?还有,我们说的那个 RPM 的数据库又是放置在哪里呢?
RPM 默认安装的路径
一般来说,RPM 类型的文件在安装的时候,会先去读取文件内记载的配置参数内容,然后将该数据用来比对 Linux 系统的环境,以找出是否有属性相依的软件尚未安装的问题。例如 Openssh 这个连线软件需要透过 Openssl 这个加密软件的帮忙,所以得先安装 openssl 才能装 openssh 的意思。那你的环境如果没有 openssl , 你就无法安装 openssh 的意思啦。
若环境检查合格了,那么 RPM 文件就开始被安装到你的 Linux 系统上。安装完毕后,该软件相关的资讯就会被写入 /var/lib/rpm/ 目录下的数据库文件中了。 上面这个目录内的数据很重要喔!因为未来如果我们有任何软件升级的需求,版本之间的比较就是来自於这个数据库, 而如果你想要查询系统已经安装的软件,也是从这里查询的!同时,目前的 RPM 也提供数码签章资讯, 这些数码签章也是在这个目录内记录的呢!所以说,这个目录得要注意不要被删除了啊!
那么软件内的文件到底是放置到哪里去啊?当然与文件系统有关对吧!我们在第六章的目录配置谈过每个目录的意义, 这里再次的强调罗:
/etc 一些配置档放置的目录,例如 /etc/crontab
/usr/bin 一些可运行文件
/usr/lib 一些程序使用的动态函式库
/usr/share/doc 一些基本的软件使用手册与说明档
/usr/share/man 一些 man page 文件
好了,底下我们就来针对每个 RPM 的相关命令来进行说明罗!
RPM 安装 (install)
因为安装软件是 root 的工作,因此你得要是 root 的身份才能够操作 rpm 这命令的。 用 rpm 来安装很简单啦!假设我要安装一个档名为 rp-pppoe-3.5-32.1.i386.rpm 的文件,那么我可以这样:
不过,这样的参数其实无法显示安装的进度,所以,通常我们会这样下达安装命令:
另外,如果我们在安装的过程当中发现问题,或者已经知道会发生的问题, 而还是『执意』要安装这个软件时,可以使用如下的参数『强制』安装上去:
rpm 安装时常用的选项与参数说明
可下达的选项 代表意义
--nodeps 使用时机:当发生软件属性相依问题而无法安装,但你执意安装时
危险性: 软件会有相依性的原因是因为彼此会使用到对方的机制或功能,如果强制安装而不考虑软件的属性相依, 则可能会造成该软件的无法正常使用!
--replacefiles 使用时机: 如果在安装的过程当中出现了『某个文件已经被安装在你的系统上面』的资讯,又或许出现版本不合的信息 (confilcting files) 时,可以使用这个参数来直接覆盖文件。
危险性: 覆盖的动作是无法复原的!所以,你必须要很清楚的知道被覆盖的文件是真的可以被覆盖喔!否则会欲哭无泪!
--replacepkgs 使用时机: 重新安装某个已经安装过的软件!如果你要安装一堆 RPM 软件文件时,可以使用 rpm -ivh *.rpm ,但若某些软件已经安装过了, 此时系统会出现『某软件已安装』的资讯,导致无法继续安装。此时可使用这个选项来重复安装喔!
--force 使用时机:这个参数其实就是 --replacefiles 与 --replacepkgs 的综合体!
--test 使用时机: 想要测试一下该软件是否可以被安装到使用者的 Linux 环境当中,可找出是否有属性相依的问题。范例为:
rpm -ivh pkgname.i386.rpm --test
--justdb 使用时机: 由於 RPM 数据库破损或者是某些缘故产生错误时,可使用这个选项来升级软件在数据库内的相关资讯。
--nosignature 使用时机: 想要略过数码签章的检查时,可以使用这个选项。
--prefix 新路径 使用时机: 要将软件安装到其他非正规目录时。举例来说,你想要将某软件安装到 /usr/local 而非正规的 /bin, /etc 等目录, 就可以使用『 --prefix /usr/local 』来处理了。
--noscripts 使用时机:不想让该软件在安装过程中自行运行某些系统命令。
说明: RPM 的优点除了可以将文件放置到定位之外,还可以自动运行一些前置作业的命令,例如数据库的初始化。 如果你不想要让 RPM 帮你自动运行这一类型的命令,就加上他吧!
一般来说,rpm 的安装选项与参数大约就是这些了。通常鸟哥建议直接使用 -ivh 就好了, 如果安装的过程中发现问题,一个一个去将问题找出来,尽量不要使用『 暴力安装法 』,就是透过 --force 去强制安装! 因为可能会发生很多不可预期的问题呢!除非你很清楚的知道使用上面的参数后,安装的结果是你预期的!
例题:
在没有网络的前提下,你想要安装一个名为 pam-devel 的软件,你手边只有原版光盘,该如何是好?
答:
你可以透过挂载原版光盘来进行数据的查询与安装。请将原版光盘放入光驱,底下我们尝试将光盘挂载到 /media 当中, 并据以处理软件的下载罗:
挂载光盘,使用: mount /dev/cdrom /media
找出文件的实际路径:find /media -name 'pam-devel*'
测试此软件是否具有相依性: rpm -ivh pam-devel... --test
直接安装: rpm -ivh pam-devel...
卸载光盘: umount /dev/cdrom
在鸟哥的系统中,刚好这个软件并没有属性相依的问题,因此最后一个步骤可以顺利的进行下去呢!
RPM 升级与升级 (upgrade/freshen)
使用 RPM 来升级真是太简单了!就以 -Uvh 或 -Fvh 来升级即可,而 -Uvh 与 -Fvh 可以用的选项与参数,跟 install 是一样的。不过, -U 与 -F 的意义还是不太一样的,基本的差别是这样的:
-Uvh 后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自动升级至新版;
-Fvh 如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』!
由上面的说明来看,如果你想要大量的升级系统旧版本的软件时,使用 -Fvh 则是比较好的作法,因为没有安装的软件才不会被不小心安装进系统中。但是需要注意的是,如果你使用的是 -Fvh ,偏偏你的机器上尚无这一个软件,那么很抱歉,该软件并不会被安装在你的 Linux 主机上面,所以请重新以 ivh 来安装吧!
通常有的朋友在进行整个操作系统的旧版软件修补时,喜欢这么进行:
先到各发展商的 errata 网站或者是国内的 FTP 映像站捉下来最新的 RPM 文件;
使用 -Fvh 来将你的系统内曾安装过的软件进行修补与升级!(真是方便呀!)
所以,在不晓得 yum 功能的情况下,你依旧可以到 CentOS 的映设站台下载 updates 数据,然后利用上述的方法来一口气升级! 当然罗,升级也是可以利用 --nodeps/--force 等等的参数啦!
RPM 查询 (query)
RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的数据库文件啦!另外, RPM 也可以查询未安装的 RPM 文件内的资讯喔!那如何去查询呢? 我们先来谈谈可用的选项有哪些?
在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!查询主要分为两部分, 一个是查已安装到系统上面的的软件资讯,这部份的资讯都是由 /var/lib/rpm/ 所提供。另一个则是查某个 rpm 文件内容, 等於是由 RPM 文件内找出一些要写入数据库内的资讯就是了,这部份就得要使用 -qp (p 是 package 的意思)。 那就来看看几个简单的范例吧!
常见的查询就是这些了!要特别说明的是,在查询本机上面的 RPM 软件相关资讯时, 不需要加上版本的名称,只要加上软件名称即可!因为他会由 /var/lib/rpm 这个数据库里面去查询, 所以我们可以不需要加上版本名称。但是查询某个 RPM 文件就不同了,我们必须要列出整个文件的完整档名才行~ 这一点朋友们常常会搞错。底下我们就来做几个简单的练习吧!
例题:
我想要知道我的系统当中,以 c 开头的软件有几个,如何实做?
我的 WWW 服务器为 Apache ,我知道他使用的 RPM 软件档名为 httpd 。现在,我想要知道这个软件的所有配置档放置在何处,可以怎么作?
承上题,如果查出来的配置文件已经被我改过,但是我忘记了曾经修改过哪些地方,所以想要直接重新安装一次该软件,该如何作?
如果我误砍了某个重要文件,例如 /etc/crontab,偏偏不晓得他属於哪一个软件,该怎么办?
答:
rpm -qa | grep ^c | wc -l
rpm -qc httpd
假设该软件在网络上的网址为:
http://web.site.name/path/httpd-x.x.xx.i386.rpm
则我可以这样做:
rpm -ivh http://web.site.name/path/httpd-x.x.xx.i386.rpm --replacepkgs
虽然已经没有这个文件了,不过没有关系,因为 RPM 有记录在 /var/lib/rpm 当中的数据库啊!所以直接下达:
rpm -qf /etc/crontab
就可以知道是那个软件罗!重新安装一次该软件即可!
RPM 验证与数码签章 (Verify/signature)
验证 (Verify) 的功能主要在於提供系统管理员一个有用的管理机制!作用的方式是『使用 /var/lib/rpm 底下的数据库内容来比对目前 Linux 系统的环境下的所有软件文件 』也就是说,当你有数据不小心遗失, 或者是因为你误杀了某个软件的文件,或者是不小心不知道修改到某一个软件的文件内容, 就用这个简单的方法来验证一下原本的文件系统吧!好让你了解这一阵子到底是修改到哪些文件数据了!验证的方式很简单:
好了,那么我怎么知道到底我的文件被更动过的内容是什么?例如上面的范例二。呵呵!简单的说明一下吧! 例如,我们检查一下 logrotate 这个软件:
你会发现在档名之前有个 c ,然后就是一堆奇怪的文字了。那个 c 代表的是 configuration , 就是配置档的意思。至於最前面的八个资讯是:
S :(file Size differs) 文件的容量大小是否被改变
M :(Mode differs) 文件的类型或文件的属性 (rwx) 是否被改变?如是否可运行等参数已被改变
5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
D :(Device major/minor number mis-match) 装置的主/次代码已经改变
L :(readLink(2) path mis-match) Link 路径已被改变
U :(User ownership differs) 文件的所属人已被改变
G :(Group ownership differs) 文件的所属群组已被改变
T :(mTime differs) 文件的创建时间已被改变
所以,如果当一个配置档所有的资讯都被更动过,那么他的显示就会是:
SM5DLUGT c filename
至於那个 c 代表的是『 Config file 』的意思,也就是文件的类型,文件类型有底下这几类:
c :配置档 (config file)
d :文件数据档 (documentation)
g :鬼文件~通常是该文件不被某个软件所包含,较少发生!(ghost file)
l :授权文件 (license file)
r :读我文件 (read me)
经过验证的功能,你就可以知道那个文件被更动过。那么如果该文件的变更是『预期中的』, 那么就没有什么大问题,但是如果该文件是『非预期的』,那么是否被入侵了呢?呵呵!得注意注意罗! 一般来说,配置档 (configure) 被更动过是很正常的,万一你的 binary program 被更动过呢? 那就得要特别特别小心啊!
RPM 反安装与重建数据库 (erase/rebuilddb)
反安装就是将软件卸载啦!要注意的是,『解安装的过程一定要由最上一级往下解除』,以 rp-pppoe 为例,这一个软件主要是依据 ppp 这个软件来安装的,所以当你要解除 ppp 的时候,就必须要先解除 rp-pppoe 才行!否则就会发生结构上的问题啦!这个可以由建筑物来说明, 如果你要拆除五、六楼,那么当然要由六楼拆起,否则先拆的是第五楼时,那么上面的楼层难道会悬空?
移除的选项很简单,就透过 -e 即可移除。不过,很常发生软件属性相依导致无法移除某些软件的问题! 我们以底下的例子来说明:
从范例一我们知道 pam 所提供的函式库是让非常多其他软件使用的,因此你不能移除 pam ,除非将其他相依软件一口气也全部移除!你当然也能加 --nodeps 来强制移除, 不过,如此一来所有会用到 pam 函式库的软件,都将成为无法运行的程序,我想,你的主机也只好准备停机休假了吧! 至於范例二中,由於 pam-devel 是依附於 pam 的开发工具,你可以单独安装与单独移除啦!
由於 RPM 文件常常会安装/移除/升级等,某些动作或许可能会导致 RPM 数据库 /var/lib/rpm/ 内的文件破损。果真如此的话,那你该如何是好?别担心,我们可以使用 --rebuilddb 这个选项来重建一下数据库喔! 作法如下:
转自:http://vbird.dic.ksu.edu.tw/linux_basic/0520rpm_and_srpm_2.php
RPM 默认安装的路径
一般来说,RPM 类型的文件在安装的时候,会先去读取文件内记载的配置参数内容,然后将该数据用来比对 Linux 系统的环境,以找出是否有属性相依的软件尚未安装的问题。例如 Openssh 这个连线软件需要透过 Openssl 这个加密软件的帮忙,所以得先安装 openssl 才能装 openssh 的意思。那你的环境如果没有 openssl , 你就无法安装 openssh 的意思啦。
若环境检查合格了,那么 RPM 文件就开始被安装到你的 Linux 系统上。安装完毕后,该软件相关的资讯就会被写入 /var/lib/rpm/ 目录下的数据库文件中了。 上面这个目录内的数据很重要喔!因为未来如果我们有任何软件升级的需求,版本之间的比较就是来自於这个数据库, 而如果你想要查询系统已经安装的软件,也是从这里查询的!同时,目前的 RPM 也提供数码签章资讯, 这些数码签章也是在这个目录内记录的呢!所以说,这个目录得要注意不要被删除了啊!
那么软件内的文件到底是放置到哪里去啊?当然与文件系统有关对吧!我们在第六章的目录配置谈过每个目录的意义, 这里再次的强调罗:
/etc 一些配置档放置的目录,例如 /etc/crontab
/usr/bin 一些可运行文件
/usr/lib 一些程序使用的动态函式库
/usr/share/doc 一些基本的软件使用手册与说明档
/usr/share/man 一些 man page 文件
好了,底下我们就来针对每个 RPM 的相关命令来进行说明罗!
RPM 安装 (install)
因为安装软件是 root 的工作,因此你得要是 root 的身份才能够操作 rpm 这命令的。 用 rpm 来安装很简单啦!假设我要安装一个档名为 rp-pppoe-3.5-32.1.i386.rpm 的文件,那么我可以这样:
[root@www ~]# rpm -i rp-pppoe-3.5-32.1.i386.rpm
不过,这样的参数其实无法显示安装的进度,所以,通常我们会这样下达安装命令:
[root@www ~]# rpm -ivh package_name 选项与参数: -i :install 的意思 -v :察看更细部的安装资讯画面 -h :以安装资讯列显示安装进度 范例一:安装 rp-pppoe-3.5-32.1.i386.rpm [root@www ~]# rpm -ivh rp-pppoe-3.5-32.1.i386.rpm Preparing... ####################################### [100%] 1:rp-pppoe ####################################### [100%] 范例二、一口气安装两个以上的软件时: [root@www ~]# rpm -ivh a.i386.rpm b.i386.rpm *.rpm # 后面直接接上许多的软件文件! 范例三、直接由网络上面的某个文件安装,以网址来安装: [root@www ~]# rpm -ivh http://website.name/path/pkgname.rpm
另外,如果我们在安装的过程当中发现问题,或者已经知道会发生的问题, 而还是『执意』要安装这个软件时,可以使用如下的参数『强制』安装上去:
rpm 安装时常用的选项与参数说明
可下达的选项 代表意义
--nodeps 使用时机:当发生软件属性相依问题而无法安装,但你执意安装时
危险性: 软件会有相依性的原因是因为彼此会使用到对方的机制或功能,如果强制安装而不考虑软件的属性相依, 则可能会造成该软件的无法正常使用!
--replacefiles 使用时机: 如果在安装的过程当中出现了『某个文件已经被安装在你的系统上面』的资讯,又或许出现版本不合的信息 (confilcting files) 时,可以使用这个参数来直接覆盖文件。
危险性: 覆盖的动作是无法复原的!所以,你必须要很清楚的知道被覆盖的文件是真的可以被覆盖喔!否则会欲哭无泪!
--replacepkgs 使用时机: 重新安装某个已经安装过的软件!如果你要安装一堆 RPM 软件文件时,可以使用 rpm -ivh *.rpm ,但若某些软件已经安装过了, 此时系统会出现『某软件已安装』的资讯,导致无法继续安装。此时可使用这个选项来重复安装喔!
--force 使用时机:这个参数其实就是 --replacefiles 与 --replacepkgs 的综合体!
--test 使用时机: 想要测试一下该软件是否可以被安装到使用者的 Linux 环境当中,可找出是否有属性相依的问题。范例为:
rpm -ivh pkgname.i386.rpm --test
--justdb 使用时机: 由於 RPM 数据库破损或者是某些缘故产生错误时,可使用这个选项来升级软件在数据库内的相关资讯。
--nosignature 使用时机: 想要略过数码签章的检查时,可以使用这个选项。
--prefix 新路径 使用时机: 要将软件安装到其他非正规目录时。举例来说,你想要将某软件安装到 /usr/local 而非正规的 /bin, /etc 等目录, 就可以使用『 --prefix /usr/local 』来处理了。
--noscripts 使用时机:不想让该软件在安装过程中自行运行某些系统命令。
说明: RPM 的优点除了可以将文件放置到定位之外,还可以自动运行一些前置作业的命令,例如数据库的初始化。 如果你不想要让 RPM 帮你自动运行这一类型的命令,就加上他吧!
一般来说,rpm 的安装选项与参数大约就是这些了。通常鸟哥建议直接使用 -ivh 就好了, 如果安装的过程中发现问题,一个一个去将问题找出来,尽量不要使用『 暴力安装法 』,就是透过 --force 去强制安装! 因为可能会发生很多不可预期的问题呢!除非你很清楚的知道使用上面的参数后,安装的结果是你预期的!
例题:
在没有网络的前提下,你想要安装一个名为 pam-devel 的软件,你手边只有原版光盘,该如何是好?
答:
你可以透过挂载原版光盘来进行数据的查询与安装。请将原版光盘放入光驱,底下我们尝试将光盘挂载到 /media 当中, 并据以处理软件的下载罗:
挂载光盘,使用: mount /dev/cdrom /media
找出文件的实际路径:find /media -name 'pam-devel*'
测试此软件是否具有相依性: rpm -ivh pam-devel... --test
直接安装: rpm -ivh pam-devel...
卸载光盘: umount /dev/cdrom
在鸟哥的系统中,刚好这个软件并没有属性相依的问题,因此最后一个步骤可以顺利的进行下去呢!
RPM 升级与升级 (upgrade/freshen)
使用 RPM 来升级真是太简单了!就以 -Uvh 或 -Fvh 来升级即可,而 -Uvh 与 -Fvh 可以用的选项与参数,跟 install 是一样的。不过, -U 与 -F 的意义还是不太一样的,基本的差别是这样的:
-Uvh 后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自动升级至新版;
-Fvh 如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』!
由上面的说明来看,如果你想要大量的升级系统旧版本的软件时,使用 -Fvh 则是比较好的作法,因为没有安装的软件才不会被不小心安装进系统中。但是需要注意的是,如果你使用的是 -Fvh ,偏偏你的机器上尚无这一个软件,那么很抱歉,该软件并不会被安装在你的 Linux 主机上面,所以请重新以 ivh 来安装吧!
通常有的朋友在进行整个操作系统的旧版软件修补时,喜欢这么进行:
先到各发展商的 errata 网站或者是国内的 FTP 映像站捉下来最新的 RPM 文件;
使用 -Fvh 来将你的系统内曾安装过的软件进行修补与升级!(真是方便呀!)
所以,在不晓得 yum 功能的情况下,你依旧可以到 CentOS 的映设站台下载 updates 数据,然后利用上述的方法来一口气升级! 当然罗,升级也是可以利用 --nodeps/--force 等等的参数啦!
RPM 查询 (query)
RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的数据库文件啦!另外, RPM 也可以查询未安装的 RPM 文件内的资讯喔!那如何去查询呢? 我们先来谈谈可用的选项有哪些?
[root@www ~]# rpm -qa <==已安装软件 [root@www ~]# rpm -q[licdR] 已安装的软件名称 <==已安装软件 [root@www ~]# rpm -qf 存在於系统上面的某个档名 <==已安装软件 [root@www ~]# rpm -qp[licdR] 未安装的某个文件名称 <==查阅RPM文件 选项与参数: 查询已安装软件的资讯: -q :仅查询,后面接的软件名称是否有安装; -qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称; -qi :列出该软件的详细资讯 (information),包含开发商、版本与说明等; -ql :列出该软件所有的文件与目录所在完整档名 (list); -qc :列出该软件的所有配置档 (找出在 /etc/ 底下的档名而已) -qd :列出该软件的所有说明档 (找出与 man 有关的文件而已) -qR :列出与该软件有关的相依软件所含的文件 (Required 的意思) -qf :由后面接的文件名称,找出该文件属於哪一个已安装的软件; 查询某个 RPM 文件内含有的资讯: -qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在於找出 某个 RPM 文件内的资讯,而非已安装的软件资讯!注意!
在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!查询主要分为两部分, 一个是查已安装到系统上面的的软件资讯,这部份的资讯都是由 /var/lib/rpm/ 所提供。另一个则是查某个 rpm 文件内容, 等於是由 RPM 文件内找出一些要写入数据库内的资讯就是了,这部份就得要使用 -qp (p 是 package 的意思)。 那就来看看几个简单的范例吧!
范例一:找出你的 Linux 是否有安装 logrotate 这个软件? [root@www ~]# rpm -q logrotate logrotate-3.7.4-8 [root@www ~]# rpm -q logrotating package logrotating is not installed # 注意到,系统会去找是否有安装后面接的软件名称。注意, # 不必要加上版本喔!至於显示的结果,一看就知道有没有安装啦! 范例二:列出上题当中,属於该软件所提供的所有目录与文件: [root@www ~]# rpm -ql logrotate /etc/cron.daily/logrotate /etc/logrotate.conf ....(以下省略).... # 可以看出该软件到底提供了多少的文件与目录,也可以追踪软件的数据。 范例三:列出 logrotate 这个软件的相关说明数据: [root@www ~]# rpm -qi logrotate Name : logrotate Relocations: (not relocatable) Version : 3.7.4 Vendor: CentOS Release : 8 Build Date: Sun 02 Dec 2007 08:38:06 AM CST Install Date: Sat 09 May 2009 11:59:05 PM CST Build Host: builder6 Group : System Environment/Base Source RPM: logrotate-3.7.4-8.src.rpm Size : 53618 License: GPL Signature : DSA/SHA1, Sun 02 Dec 2007 09:10:01 AM CST, Key ID a8a447dce8562897 Summary : Rotates, compresses, removes and mails system log files. Description : The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files. Logrotate allows for the automatic rotation compression, removal and mailing of log files. Logrotate can be set to handle a log file daily, weekly, monthly or when the log file gets to a certain size. Normally, logrotate runs as a daily cron job. Install the logrotate package if you need a utility to deal with the log files on your system. # 列出该软件的 information (资讯),里面的资讯可多著呢,包括了软件名称、 # 版本、开发商、SRPM文件名称、打包次数、简单说明资讯、软件打包者、 # 安装日期等等!如果想要详细的知道该软件的数据,用这个参数来了解一下 范例四:分别仅找出 logrotate 的配置档与说明档 [root@www ~]# rpm -qc logrotate [root@www ~]# rpm -qd logrotate 范例五:若要成功安装 logrotate ,他还需要什么文件的帮忙? [root@www ~]# rpm -qR logrotate /bin/sh config(logrotate) = 3.7.4-8 libc.so.6 ....(以下省略).... # 由这里看起来,呵呵~还需要很多文件的支持才行喔! 范例六:由上面的范例五,找出 /bin/sh 是那个软件提供的? [root@www ~]# rpm -qf /bin/sh bash-3.2-21.el5 # 这个参数后面接的可是『文件』呐!不像前面都是接软件喔! # 这个功能在查询系统的某个文件属於哪一个软件所有的。 范例七:假设我有下载一个 RPM 文件,想要知道该文件的需求文件,该如何? [root@www ~]# rpm -qpR filename.i386.rpm # 加上 -qpR ,找出该文件需求的数据!
常见的查询就是这些了!要特别说明的是,在查询本机上面的 RPM 软件相关资讯时, 不需要加上版本的名称,只要加上软件名称即可!因为他会由 /var/lib/rpm 这个数据库里面去查询, 所以我们可以不需要加上版本名称。但是查询某个 RPM 文件就不同了,我们必须要列出整个文件的完整档名才行~ 这一点朋友们常常会搞错。底下我们就来做几个简单的练习吧!
例题:
我想要知道我的系统当中,以 c 开头的软件有几个,如何实做?
我的 WWW 服务器为 Apache ,我知道他使用的 RPM 软件档名为 httpd 。现在,我想要知道这个软件的所有配置档放置在何处,可以怎么作?
承上题,如果查出来的配置文件已经被我改过,但是我忘记了曾经修改过哪些地方,所以想要直接重新安装一次该软件,该如何作?
如果我误砍了某个重要文件,例如 /etc/crontab,偏偏不晓得他属於哪一个软件,该怎么办?
答:
rpm -qa | grep ^c | wc -l
rpm -qc httpd
假设该软件在网络上的网址为:
http://web.site.name/path/httpd-x.x.xx.i386.rpm
则我可以这样做:
rpm -ivh http://web.site.name/path/httpd-x.x.xx.i386.rpm --replacepkgs
虽然已经没有这个文件了,不过没有关系,因为 RPM 有记录在 /var/lib/rpm 当中的数据库啊!所以直接下达:
rpm -qf /etc/crontab
就可以知道是那个软件罗!重新安装一次该软件即可!
RPM 验证与数码签章 (Verify/signature)
验证 (Verify) 的功能主要在於提供系统管理员一个有用的管理机制!作用的方式是『使用 /var/lib/rpm 底下的数据库内容来比对目前 Linux 系统的环境下的所有软件文件 』也就是说,当你有数据不小心遗失, 或者是因为你误杀了某个软件的文件,或者是不小心不知道修改到某一个软件的文件内容, 就用这个简单的方法来验证一下原本的文件系统吧!好让你了解这一阵子到底是修改到哪些文件数据了!验证的方式很简单:
[root@www ~]# rpm -Va [root@www ~]# rpm -V 已安装的软件名称 [root@www ~]# rpm -Vp 某个 RPM 文件的档名 [root@www ~]# rpm -Vf 在系统上面的某个文件 选项与参数: -V :后面加的是软件名称,若该软件所含的文件被更动过,才会列出来; -Va :列出目前系统上面所有可能被更动过的文件; -Vp :后面加的是文件名称,列出该软件内可能被更动过的文件; -Vf :列出某个文件是否被更动过~ 范例一:列出你的 Linux 内的 logrotate 这个软件是否被更动过? [root@www ~]# rpm -V logrotate # 如果没有出现任何信息,恭喜你,该软件所提供的文件没有被更动过。 # 如果有出现任何信息,才是有出现状况啊! 范例二:查询一下,你的 /etc/crontab 是否有被更动过? [root@www ~]# rpm -Vf /etc/crontab S.5....T c /etc/crontab # 瞧!因为有被更动过,所以会列出被更动过的资讯类型!
好了,那么我怎么知道到底我的文件被更动过的内容是什么?例如上面的范例二。呵呵!简单的说明一下吧! 例如,我们检查一下 logrotate 这个软件:
[root@www ~]# rpm -ql logrotate /etc/cron.daily/logrotate /etc/logrotate.conf /etc/logrotate.d /usr/sbin/logrotate /usr/share/doc/logrotate-3.7.4 /usr/share/doc/logrotate-3.7.4/CHANGES /usr/share/man/man8/logrotate.8.gz /var/lib/logrotate.status # 呵呵!共有八个文件啊!请修改 /etc/logrotate.conf 内的 rotate 变成 5 [root@www ~]# rpm -V logrotate ..5....T c /etc/logrotate.conf
你会发现在档名之前有个 c ,然后就是一堆奇怪的文字了。那个 c 代表的是 configuration , 就是配置档的意思。至於最前面的八个资讯是:
S :(file Size differs) 文件的容量大小是否被改变
M :(Mode differs) 文件的类型或文件的属性 (rwx) 是否被改变?如是否可运行等参数已被改变
5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
D :(Device major/minor number mis-match) 装置的主/次代码已经改变
L :(readLink(2) path mis-match) Link 路径已被改变
U :(User ownership differs) 文件的所属人已被改变
G :(Group ownership differs) 文件的所属群组已被改变
T :(mTime differs) 文件的创建时间已被改变
所以,如果当一个配置档所有的资讯都被更动过,那么他的显示就会是:
SM5DLUGT c filename
至於那个 c 代表的是『 Config file 』的意思,也就是文件的类型,文件类型有底下这几类:
c :配置档 (config file)
d :文件数据档 (documentation)
g :鬼文件~通常是该文件不被某个软件所包含,较少发生!(ghost file)
l :授权文件 (license file)
r :读我文件 (read me)
经过验证的功能,你就可以知道那个文件被更动过。那么如果该文件的变更是『预期中的』, 那么就没有什么大问题,但是如果该文件是『非预期的』,那么是否被入侵了呢?呵呵!得注意注意罗! 一般来说,配置档 (configure) 被更动过是很正常的,万一你的 binary program 被更动过呢? 那就得要特别特别小心啊!
RPM 反安装与重建数据库 (erase/rebuilddb)
反安装就是将软件卸载啦!要注意的是,『解安装的过程一定要由最上一级往下解除』,以 rp-pppoe 为例,这一个软件主要是依据 ppp 这个软件来安装的,所以当你要解除 ppp 的时候,就必须要先解除 rp-pppoe 才行!否则就会发生结构上的问题啦!这个可以由建筑物来说明, 如果你要拆除五、六楼,那么当然要由六楼拆起,否则先拆的是第五楼时,那么上面的楼层难道会悬空?
移除的选项很简单,就透过 -e 即可移除。不过,很常发生软件属性相依导致无法移除某些软件的问题! 我们以底下的例子来说明:
# 1. 找出与 pam 有关的软件名称,并尝试移除 pam 这个软件: [root@www ~]# rpm -qa | grep pam pam-devel-0.99.6.2-3.27.el5 pam_passwdqc-1.0.2-1.2.2 pam_pkcs11-0.5.3-23 pam_smb-1.1.7-7.2.1 pam-0.99.6.2-3.27.el5 pam_ccreds-3-5 pam_krb5-2.2.14-1 [root@www ~]# rpm -e pam error: Failed dependencies: <==这里提到的是相依性的问题 libpam.so.0 is needed by (installed) coreutils-5.97-14.el5.i386 libpam.so.0 is needed by (installed) libuser-0.54.7-2.el5.5.i386 ....(以下省略).... # 2. 若仅移除 pam-devel 这个之前范例安装上的软件呢? [root@www ~]# rpm -e pam-devel <==不会出现任何信息! [root@www ~]# rpm -q pam-devel package pam-devel is not installed
从范例一我们知道 pam 所提供的函式库是让非常多其他软件使用的,因此你不能移除 pam ,除非将其他相依软件一口气也全部移除!你当然也能加 --nodeps 来强制移除, 不过,如此一来所有会用到 pam 函式库的软件,都将成为无法运行的程序,我想,你的主机也只好准备停机休假了吧! 至於范例二中,由於 pam-devel 是依附於 pam 的开发工具,你可以单独安装与单独移除啦!
由於 RPM 文件常常会安装/移除/升级等,某些动作或许可能会导致 RPM 数据库 /var/lib/rpm/ 内的文件破损。果真如此的话,那你该如何是好?别担心,我们可以使用 --rebuilddb 这个选项来重建一下数据库喔! 作法如下:
[root@www ~]# rpm --rebuilddb <==重建数据库
转自:http://vbird.dic.ksu.edu.tw/linux_basic/0520rpm_and_srpm_2.php
发表评论
文章已被作者锁定,不允许评论。
-
Linux ubuntu配置SSH免密登陆
2017-05-05 16:15 4591、安装 Ubuntu14.04默认安装了ssh-client ... -
Linux ubuntu虚拟机连接上网总结
2017-05-05 13:37 5101.首先查看主机的ip信息 ipconfig /all ... -
Linux七个运行级别
2015-03-03 09:20 541运行级别就是操作系统当前正在运行的功能级别。级别是从0到6,具 ... -
第二十四章 CentOS 系统配置工具: setup
2014-10-30 20:05 671系统配置除了使用手动 ... -
第二十二章 启动过程的问题解决
2014-10-28 19:34 421很多时候,我们可能因 ... -
第二十二章 Boot Loader: Grub
2014-10-27 19:44 567在看完了前面的整个启 ... -
第二十二章 核心与核心模块
2014-10-23 19:28 342谈完了整个启动的流程 ... -
第二十二章 Linux 的启动流程分析
2014-10-22 20:08 389启动不是只要按一下电 ... -
第二十一章 管理的抉择:RPM 还是 Tarball
2014-10-20 19:24 499这一直是个有趣的问题 ... -
第二十一章 YUM 线上升级机制
2014-10-15 19:33 525我们在本章一开始的地方谈到过 yum 这玩意儿,这个 yum ... -
第二十一章 SRPM 的使用 : rpmbuild
2014-10-14 19:44 955谈完了 RPM 类型的软件之后,再来我们谈一谈包含了 Sour ... -
第二十章 函式库管理
2014-10-13 19:25 474在我们的 Linux 操作系统 ... -
第二十章 Tarball 的管理与建议
2014-10-10 19:54 490在我们知道了原始码的 ... -
第二十章 用 make 进行巨集编译
2014-10-09 20:04 528在本章一开始我们提到过 make 的功能是可以简化编译过程里面 ... -
第二十章 开放源码的软件安装与升级简介
2014-10-09 19:47 438如果鸟哥想要在我的 Lin ... -
第十九章 分析登录文件
2014-10-08 19:34 408登录文件的分析是很重要的!你可以自行以 vi 进入登录文 ... -
第十九章 登录文件的轮替(logrotate)
2014-10-08 19:28 511假设我们已经将登 ... -
第十九章 syslogd :记录登录文件的服务
2014-09-28 20:11 678刚刚提到说 Linux 的登录文件主要是由 syslogd 在 ... -
第十八章 系统开启的服务
2014-09-25 19:33 715好了,现在假设你已经知道了 daemons 的启动文件放置的目 ... -
第十八章 服务的防火墙管理 xinetd, TCP Wrappers
2014-09-24 19:47 550一般来说,系统的防火 ...
相关推荐
第21章 系统设置工具(网络与打印机)与硬件检测 第22章 软件安装:源码与Tarball 第23章 软件安装:RPM、SRPM与YUM功能 第24章 X Window设置介绍 第25章 Linux备份策略 第26章 Linux内核编译与管理 附录A 快速...
第20章 RPM与SRPM套件管理程序 第21章 系统服务守护程序 第22章 认识与分析登录文件 第23章 Linux备份策略 第24章 X Window简单设置 第25章 Linux硬件检测与维护 第26章 Linux核心...
第一部分:常用命令 常用命令/文件处理 0:基础功能 1:ls 显示文件目录 语法:ls 选项[-ald][文件或目录] 2:cat 显示文件内容(内容少适合) 语法:cat[文件名] 3:tac 显示文件内容 语法:tac[文件名]...第十一部分:shell
第10章 用RPM管理包 第11章 配置与查错引导过程 第12章 升级与重新编译内核 第13章 管理细节 第14章 备份系统 第四部分 管理X窗口 第15章 管理X客户机与X服务器 第16章 GNOME 第17章 KDF 第18章 ...
在Linux世界中,内核是操作系统的核心部分,负责管理硬件资源,提供系统调用接口供应用程序使用。`kernel-devel`包对于Linux开发者来说至关重要,它为构建针对特定内核版本的模块或驱动程序提供了必要的头文件和符号...
RPM是一种用于Linux发行版的软件包管理器,它使得软件的安装、升级和卸载变得简单易行。 以下是你将在这个压缩包中找到的关键组件及其作用: 1. `gcc-4.4.0-4.i586.rpm`:这是GCC的主要编译器,用于将源代码转换...
标题中的“xorg-x11-apps-7.7-21.el8.x86-64.rpm”和“xorg-x11-xbitmaps-1.1.1-6.el7.noarch.rpm”是两个在Linux环境中常见的软件包,它们与X Window系统(X11)相关,用于提供图形用户界面(GUI)应用程序和服务。...
网盘文件永久链接 第一章 基本系统管理概述 第二章 安装卫星服务器 第三章 组织管理 第四章使用版本控制软件管理更改 第五章 客户端配置管理 第六章 软件管理 ...第十一章卫星服务器管理 第十二章应用程序开发接口
* ELRepo:包含几十个各种硬件的驱动程序 * Google Chrome:包含了 Google Chrome,不会与官方源和 EPEL 源冲突 * Adobe:仅包含 flash 插件,已确认不会冲突 * dropbox:仅包含 dropbox 一个软件,已确认不会冲突 ...
第十一章:软件包管理和备份 本章介绍了Linux的软件包管理系统,如RPM和YUM,以及如何安装、升级和卸载软件。同时,还讲解了备份策略,包括全量备份、增量备份和差异备份,以及如何使用tar命令进行文件备份。 第十...
第十一章,《软件包管理和备份》:包括使用RPM(Red Hat Package Manager)和yum/dnf进行软件安装、升级和卸载,以及如何进行系统备份和恢复策略的规划。 第十二章,《进程管理》:深入探讨Linux进程的概念,如何...
Apache是其中最著名的Web服务器之一,其他常见的服务器软件还包括Microsoft的IIS(Internet Information Services)等。 ### 4. Apache的特点 - **可移植性**:Apache可以在多种操作系统上运行,包括Linux、...
2. **第二章:Linux安装与配置** - 安装过程:讲解如何在虚拟机或实体机上安装Linux,包括图形化和命令行安装方式。 - 配置网络:学会配置静态IP、动态IP,以及网络调试工具如`ping`、`traceroute`的使用。 - ...
OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现,同时还提供了各种密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序用于测试或其他目的。`openssl-devel`包则包含编译...
第2章 shell程序设计 15 2.1 为什么使用shell编程 15 2.2 一点哲学 16 2.3 什么是shell 16 2.4 管道和重定向 18 2.4.1 重定向输出 18 2.4.2 重定向输入 19 .2.4.3 管道 19 2.5 作为程序设计语言的shell 20 ...
第2章 shell程序设计 15 2.1 为什么使用shell编程 15 2.2 一点哲学 16 2.3 什么是shell 16 2.4 管道和重定向 18 2.4.1 重定向输出 18 2.4.2 重定向输入 19 .2.4.3 管道 19 2.5 作为程序设计语言的shell 20 ...
2012-06-11 21:44 2,279 C语言编一个程序完成64位数据(无符号)的加法,减法运算.txt 2012-06-11 21:43 1,480,155 Direct3D加载3d文件.rar 2012-06-11 21:29 22,102 DSP编程一周通.rar 2012-06-11 21:04 837,926 ...
21. **压缩与解压,以及Java网络编程**:第二十一讲会教你在Linux下进行文件压缩和解压操作,以及如何进行Java网络编程。 通过以上知识点的学习,初学者可以逐步建立起对Linux系统的全面认识,为今后的系统管理、...
第7章介绍的是Linux系统的开机和关机流程,以及如何设置Linux操作系统的开机启动管理程序LILO。第8章转向介绍如何对硬盘进行操作,讨论如何对硬盘进行管理、怎样建立分区以及设定硬盘的使用限额。第9章涉及到作为一...
第21章 01 查询功能 02 修改功能 03 程序的解耦 04 module模块和包的介绍 05 模块的执行以及__name__ 06 关于模块的介绍 07 time时间模块 08 random模块 第22章 01 模块的补充 02 sys修改环境变量 03 BASEDIR的...