资讯专栏INFORMATION COLUMN

使用RPM安装软件

yexiaobai / 2385人阅读

摘要:它做了什么一说到,人们第一时间想到的就是能用来安装软件。将会有两个步骤来处理这个问题把原来的文件改名为使用安装包中的来安装软件。

rpm -i 它做了什么

一说到rpm,人们第一时间想到的就是rpm能用来安装软件。正如我们前面提及到的,安装软件时一个复杂的,经常出错的事情,但在rpm眼中,安装软件只不过是一个命令的事。

rpm -i (等同于rpm --install) 命令能够安装已经被打包成rpm格式的软件,它主要做以下几件事:

依赖检查.

检测冲突

做一些正式安装前必须做的准备工作

根据配置文件确定如何安装软件

解压包并把它们放在一个合适的路径下

执行一些在安装后须要做的工作

对它自身的所作所为进行跟踪

下面将逐个解释上述所述的几点:

依赖检查

有时候,一些安装包须要在它所依赖的安装包安装好了之后才能正常安装。RPM将会确认所需安装软件的依赖包已经安装好了,它也会保证安装软件包时不影响其它已经安装好的软件。

检测冲突

RPM在这个阶段将会进行一系列检测,如果试图安装一个已经安装过的软件,或者用旧版本覆盖新版本的软件,或者是非法改写某个已安装软件的软件。这些RPM都能检测出来并及时制止。

做一些正式安装前必须做的准备工作

一些命令必须在正式软件安装开始之前优先执行,RPM将会执行你所定义的这些命令,这样能够避免在安装时遇到很多问题。

根据配置文件确定如何安装软件

RPM与其他包管理软件不同的一点是,它会使用配置文件,尽管有时候改变配置文件只是为了个性化地安装软件,但这会激怒你的小伙伴,因为他们之前所做的一些个性化配置全都没了。而RPM会分析配置文件,并尝试去做正确的事,即使这些软件一开始并不是使用RPM安装的。

解压包并把它们放在一个合适的路径下

每个安装包都会包含许多待安装的文件,并且包含了每个文件需要被安装到哪个目录下,而且,文件的其他一些属性,例如权限和所有者,RPM都会进行正确的设置。

执行一些在安装后须要做的工作

有时候,需要在软件安装后执行一些命令。比如说,执行ldconfig命令来使一些库变成公用的。

对它自身的所作所为进行跟踪

每当RPM把软件安装到你的系统上后,它会在数据库中保留对文件的跟踪,数据库中存储了大量有用的信息,例如,当RPM检测冲突时,它就会使用到它存储在数据库中的信息。

RPM安装实战

让我们来看看一个例子,安装一个软件,你只需要使用命令rpm -i,命令后跟着rpm包文件就可以:
# rpm -i eject-1.2-2.i386.rpm

这时候,上文中所提到的几件事情在这个时候已经完成了。这个软件包已经被安装好了,需要注意的是,这里的安装包文件并不需要严格遵守rpm包的命名规范,例如:
# mv eject-1.2-2.i386.rpm baz.txt
# rpm -i baz.txt

在这个例子中,我们把rpm包的名字从eject-1.2-2.i386.rpm改为了baz.txt,安装结果将会和之前的安装结果的一样。rpm包的名字在RPM进行安装时,将不会被使用。RPM用的是包里的文件的内容,无论名字怎么改,RPM始终都能读取包里的文件来实现正确安装。

使用URL来指定包文件

如果你上网,你一定会注意到一个网页是这样被标识的:

http://www.redhat.com/support/docs/rpm/RPM-HOWTO/RPM-HOWTO.html

这叫做一个统一资源定位符(Uniform Resource Locator),或者叫URL,RPM也可以使用URL来安装软件,尽管URL看起来有些不一样,下面有另外一个例子:

# ftp://ftp.redhat.com/pub/redhat/code/rpm/rpm-2.3-1.i386.rpm

ftp标识着这个URL是基于文件传输协议的,正如名字所暗示的那样,这个类型的URL是用来传输文件的。

RPM对URL的支持使我们能够通过一个简单的命令来安装软件:

# rpm -i ftp://ftp.gnomovision.com/pub/rpms/foobar-1.0-1.i386.rpm

也许你会看到你从未见过的警告信息

依环境而定,当你在安装一个普通软件的时候,以下信息你可以从来没有见到过或者是经常见到过:

# rpm -i cdp-0.33-100.i386.rpm

warning: /etc/cdp-config saved as /etc/cdp-config.rpmorig

这是什么意思,这要从RPM处理配置文件说起,在上面的例子中,RPM找到了一个文件(/etc/cdp-config),这个文件不属于任何已经安装了的包,由于cdp-0.33-100包含了一个与该文件同名的包,并且该文件要安装在同一个目录下,就会遇到上面这个警告信息。

RPM将会有两个步骤来处理这个问题:

把原来的文件改名为cdp-config.rpmorig.

使用安装包中的cdp-config来安装软件。

接下来我们查看这个目录,我们会看到一切如我们所说的那样发生了:

    # ls -al /etc/cdp*
    -rw-r--r--   1 root     root      119 Jun 23 16:00 /etc/cdp-config
    -rw-rw-r--   1 root     root       56 Jun 14 21:44 /etc/cdp-config.rpmorig
两个有用的选项

有两个选项,能够帮助rpm -i 工作得更好,也很有用。你也许会意味它们是RPM的默认行为,但实际上不是,只不过要使用它们,你得多打一些字:

使用 -v 选项得到更多的反馈

尽管rpm -i 已经做了很多事情,但是还不够,不是吗? 当进行安装的时候,rpm表现得太安静了,除非安装过程中出了错。不过我们可以通过加上 -v 选项来让它输出更多的信息:

# rpm -iv eject-1.2-2.i386.rpm
Installing eject-1.2-2.i386.rpm

使用 -v 好处是很多的,特别是当你需要用一行命令来安装多个软件的时候:

# rpm -iv *.rpm
Installing eject-1.2-2.i386.rpm
Installing iBCS-1.2-3.i386.rpm
Installing logrotate-1.0-1.i386.rpm
无耐心者的福音 -h

有时候一个安装包可能非常大,除了呆呆地看着硬盘的灯在闪,你找不到其他方式知道RPM的工作进度,还要多久才能安装完。加上-h选项,RPM会打印出#来显示进度,50个#的出现意味着安装完成。

# rpm -ih eject-1.2-2.i386.rpm
##################################################

一旦50个#出先了,那么就代表软件已经完成,这一点在你安装多个软件时也很有用:

# rpm -ivh *.rpm
eject          ##################################################
iBCS           ##################################################
logrotate      ##################################################
更多rpm -i 的选项

-vv:得到更多的信息

--test:只进行安装测试

--replacepkgs:覆盖安装

--replacefiles:即使覆盖了其他软件的文件,也照常安装

--nodeps:安装前不做依赖检查

--force:无论怎样,都给老子安装

--excludedocs:不安装文档

--includedocs:安装文档

--prefix :重定向安装包路径为

--noscripts:不执行安装前后的脚本命令

--percent:显示安装进度的百分比

--rcfile :使用作为备选的rcfile

--root:使用作为备选的root

--dbpath :使用来访问数据库

--ftpport :使用所指定的端口来执行基于FTP协议的安装

--ftpproxy :使用所指定的地址作为FTP代理

--ignorearch:不校验安装包的格式

--ignoreos:不检查安装包的操作系统信息

参考资料

Maximum RPM

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9066.html

相关文章

  • 使用RPM安装软件

    摘要:它做了什么一说到,人们第一时间想到的就是能用来安装软件。将会有两个步骤来处理这个问题把原来的文件改名为使用安装包中的来安装软件。 rpm -i 它做了什么 一说到rpm,人们第一时间想到的就是rpm能用来安装软件。正如我们前面提及到的,安装软件时一个复杂的,经常出错的事情,但在rpm眼中,安装软件只不过是一个命令的事。 rpm -i (等同于rpm --install) 命令能够安装已...

    voyagelab 评论0 收藏0
  • Linux软件安装管理之——RPM与YUM详解

    摘要:这里将要介绍的是系列发行版的与的详细使用方法,如需要了解系列发行版的包管理系统可查看我的另一篇文章软件安装管理之与详解。 一、序言 上一篇文章《Linux软件安装管理之——源码安装详解》详细介绍了Linux平台下的源码包安装原理,虽然使用源代码进行软件编译可以具有定制化的设置,但对于Linux distribution的发行商来说,则有软件管理不晚的问题,毕竟不是每个人都会进行源代码编...

    fredshare 评论0 收藏0
  • Linux软件安装管理之——RPM与YUM详解

    摘要:这里将要介绍的是系列发行版的与的详细使用方法,如需要了解系列发行版的包管理系统可查看我的另一篇文章软件安装管理之与详解。 一、序言 上一篇文章《Linux软件安装管理之——源码安装详解》详细介绍了Linux平台下的源码包安装原理,虽然使用源代码进行软件编译可以具有定制化的设置,但对于Linux distribution的发行商来说,则有软件管理不晚的问题,毕竟不是每个人都会进行源代码编...

    Yumenokanata 评论0 收藏0
  • Linux 软件安装管理

    摘要:文章内容来自一命令管理命名规则安装命令包全名选项安装显示详细信息显示进度不检测依赖性这个作用不大升级与卸载升级包全名选项卸载包名卸载,普通卸载,考虑到依赖性,可能会报错包名强制卸载,不考虑依赖性选项卸载不检查依 文章内容来自 一、rpm 命令管理 1. rpm 命名规则 showImg(https://segmentfault.com/img/bVDYYJ?w=697&h=394); ...

    bang590 评论0 收藏0
  • Linux 软件安装管理

    摘要:文章内容来自一命令管理命名规则安装命令包全名选项安装显示详细信息显示进度不检测依赖性这个作用不大升级与卸载升级包全名选项卸载包名卸载,普通卸载,考虑到依赖性,可能会报错包名强制卸载,不考虑依赖性选项卸载不检查依 文章内容来自 一、rpm 命令管理 1. rpm 命名规则 showImg(https://segmentfault.com/img/bVDYYJ?w=697&h=394); ...

    Terry_Tai 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<