标签: rpm/srpm管理/安装/更新/升级, 后面补充了rmp的网络安装与升级方式yum
1. RPM : 以一种数据库记录的方式来将你所需要的套件安装到你的 Linux 主机的一套管理程序。最大的特点就是将要安装的套件先编译过,并且打包好了,透过包装好的套件里头预设的数据库记录,记录这个套件要安装的时候必须要的相依属性模块(就是你的 Linux 主机需要先存在的几个必须的套件)。缺点是安装的环境必须与打包时的环境需求一致或相当, 且有套件的属性相依问题,此时就要从上到下,依次把相依套件安装好才可安装当前套件。
xxxxxxxxx.rpm <----RPM 的格式,已经经过编译且包装完成的 rpm 档案;
2. SRPM: 是原始码的格式,可以透过修改SRPM 内的参数设定档,然后重新编译产生能适合我们 Linux 环境的 RPM 档案,因此可以将该套件安装到我们的系统当中,而不必与原作者打包的 Linux 环境相同了!
xxxxx.src.rpm <----SRPM的格式,包含未编译的原始码信息。
3. RPM相关指令
[root@linux ~]# rpm -ivh package_name
-i :install 的意思
-v :察看更细部的安装信息画面
-h :以安装信息列显示安装进度
[root@linux ~]# rpm -qa
[root@linux ~]# rpm -q[licdR] 已安装的套件名称
[root@linux ~]# rpm -qf 存在于系统上面的某个档案
[root@linux ~]# rpm -qp[licdR] 未安装的某个文件名称:
-q : 仅查询,后面接的套件名称是否有安装; <----查询已安装
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有套件名称;
-qi : 列出该套件的详细信息 (information),包含开发商、版本与说明等;
-ql : 列出该套件所有的档案与目录所在完整文件名 (list);
-qc :列出该套件的所有设定档 (找出在 /etc/ 底下的檔名而已)
-qd :列出该套件的所有说明档 (找出与 man 有关的档案而已)
-qR :列出与该套件有关的相依套件所含的档案 (Required 的意思) (可看出安装这个套件需要哪些套件的支持)
-qf :由后面接的文件名称,找出该档案属于哪一个已安装的套件;
-qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出某个 RPM 档案内的信息,而非已安装的套件信息!注意!
[root@linux ~]# rpm -e logrotate <----解安装 logrotate 套件(必须从上往下解除)
[root@linux ~]# rpm --rebuilddb <----重建数据库
4. SRPM的使用 (默认路径:/usr/src/redhat)
>设定档的主要内容
因为SRPM提供源码,所以可以更改一些设定的内容,编译生成适合我们平台和要求的RPM包,然后再安装。以rp-pppoe-3.5-30.src.rpm为例,具体过程如下:
[root@linux ~]# rpm -i /root/rp-pppoe-3.5-30.src.rpm <----将手头的SRPM档案解开放到/usr/src/redhat下
[root@linux ~]# cd /usr/src/redhat/SPECS <----将SRPM编译成RPM的主要设定文档,其基本规则可以见具体文档,大致规则如下:
[root@linux SPECS]# vi rp-pppoe.spec <----查看释放出来的设定文档
#1. 整个档案的开头以Summary为开始,这部份的设定都是最基础的说明内容;
#2. 然后每个不同的段落之间,都以%来做为开头,例如%prep与%install等
>设定文档修改完毕,接下来就是将它编译成可安装的RPM档案
--rebuild: 将后接的SRPM 进行编译与打包,并产生RPM的档案,但是产生的RPM档案并没有安装到系统上,安装的时候请加绝对路径来安装即可!
--recompile: 这个动作会直接的编译打包并且安装!
在/usr/src/redhat/SPECS目录下直接执行:
[root@linux ~]# rpmbuild -bb rp-pppoe.spec <----编译成RPM档案
[root@linux ~]# rpmbuild -ba rp-pppoe.spec <----打包成SRPM档案,放到/usr/src/redhat/SRPM目录下
>RPM的升级和更新
[root@linux ~]# rpm -Fvh *.rpm ---->若后接套件未安装到您的 Linux 系统上,则该套件不会被安装;亦即只有安装至您 Linux 系统内的套件会被升级!
[root@linux ~]# rpm -Uvh *.rpm ---->后面接的套件即使没有安装过,则系统将予以直接安装;若后面接的套件有安装过旧版,则系统自动更新至新版!
-----------------------------------------------------------------------------------------------------------------------------------
@ linux上RPM的依赖关系手动整理非常恼火,如果安装某个.rpm时提示找不到某个依赖文件,最好的办法是让系统联通网络,执行网络安装命令: yum localinstal ****.rpm, 让它自己网上搜索合适的依赖文件安装。使用过,非常有效,具体命令格式如下:
查询信息(以包含foo字段为例):yum info foo (或先rpm -q foo 查看rpm是否已经安装)
搜索软件:yum search foo
安装软件(以foo-x.x.x.rpm为例):yum install foo-x.x.x.rpm
升级软件:yum upgrade foo或者yum update foo
删除软件:yum remove foo-x.x.x.rpm或者yum erase foo-x.x.x.rpm
其它参数参见man yum
(shmily_soc) |