嵌入式 Linux下如何安装rpm包以及相关问题的解决方案

来源:互联网 发布:js 拼接防止脚本注入 编辑:程序博客网 时间:2024/05/29 00:31

安装RPM时提示error: Faileddependencies:错误,缺少什么依赖包。。
如图示:

  1. [root@bogon RPMS]# rpm-ivh *.rpm
  2. error: Faileddependencies:
  3. libgnomevfs-2.so.0()(64bit) is needed byooobasis3.3-gnome-integration-3.3.0-9567.x86_64
  4. libgconf-2.so.4()(64bit) is needed byooobasis3.3-gnome-integration-3.3.0-9567.x86_64

GOGGLE到。直接可以无视其依赖包。
解决如下:

rpm -ivh *.rpm--nodeps --force

加上那两个参数的意义就在于,
安装时不再分析包之间的依赖关系而直接安装,
也就不会再提示error: Faileddependencies:这样的错误
在RedHatLinux和Mandrake等兼容RedHat的发行版中,整个发行版都是利用RPM安装的。所以安装新软件的最好方法是从网络上下载rpm包。

1)用RPM安装软件包,最简单的命令如下:

# rpm -ivh foo-1.0-l.i386.rpm(这里讲的软件包是foo-1.0-l.i386.rpm,以下都是)

foo####################

下面rpm就会输出该软件包的名称,并显示一个状态条。安装很简单。

2)拆除已安装的软件包

要反安装软件包foo,只需输入以下这行命令:

# rpm -efoo

注意:软件包名是foo,而不是rpm文件名"foo-1.0-l.i386.rpm"。

3)升级软件包

升级软件类似于安装软件:

# rpm -Uvhfoo-2.0-l.i386.rpm

foo####################

用户要注意的是:rpm会自动反安装相应软件包的老版本。如果老版本软件的配置文件通新版本的不兼容,rpm会自动将其保存为另外一个文件,用户会看到下面的信息:

saving /etc/foo.conf as/etc/foo.conf.rpmsave

这样用户就可以自己手工去更改相应的配置文件。

另外如果用户要安装老版本的软件,用户就会看到下面的出错信息:

# rpm -Uvhfoo-1.0-l.i386.rpm

foo packag foo-2.0-l(whichis newer) is already installed

error:foo-1.0-l.i386.rpmcannot be installed

如果用户要抢行安装就使用-oldpackage参数。

4)查询软件包

用户可以用rpm-q在rpm的数据库中查询相应的软件,rpm会给出软件包的名称,版本,发布版本号,例如:

# rpm -qfoo

foo-2.0-l

下面是查询时可以使用的特定参数:

-a 查询目前系统安装的所有软件包。

-f 文件名查询包括嘎文件的软件包。

-F 同-f参数,只是输入是标准输入(例如 find /usr/bin | rpm-qF)

-q 软件包名 : 查询该软件包

-Q 同-p参数,只是输入是标准输入(例如 find/mnt/cdrom/RedHat/RPMS | rpm -qQ)

下面是输出时的格式选择:

-i显示软件包的名称,描述,发行,大小,编译日期,安装日期,开发人员等信息。

-l 显示软件包包含的文件

-s显示软件包包含的文件目前的状态,只有两种状态:normal和missing

-d显示软件包中的文档(如man,info,README等)

-c显示软件包中的配置文件,这些文件一般是安装后需要用户手工修改的,例如:sendmail.cf,passwd,inittab等

如果用-v参数就可以得到类似于ls -l的输出


5)用rpm校验软件包 

用户可以用rpm来校验已经安装的软件包,rpm可以校验文件大小、MD5校验码、文件权限、类型和属主等信息。

下面是校验时的参数说明:

-a 简单校验软件包中的文件是否存在

-b 校验软件包中的单个文件

-c 校验安装的所有软件包

-d 比较一个源软件包和已经安装的软件包


如果检验通过就没有任何出错信息,如果有出错信息,它的格式如下:出错信息是一个8位的字符串,如果是一个".",就代表没有问题,下面是相应的字符的意义:

5 MD5校验错

S 文件大小错

L 符号连接

T 文件修改时间错

D 设备文件错

U 用户名错

G 组名错

M 属性(包括改写权和文件类型)错

如果用户看到这些信息,最好重新安装或者手工修复。

+++++++++++++++++++++++++++++++++++++

rpm 实用技巧! 

1)用户可以通过FTP来安装软件包。如果用户能够连上网络,想安装某个新的软件包时,可以直接用它的URL地址来安装: 

比如:现在在ftp.linuxsir.com/pub/linux/redhat/RPMS/下有这个文件包:foo-1.0-1.i386.rpm,那就可以用这样的命令: 


# rpm -iftp.linuxsir.com/pub/linux/redhat/RPMS/foo-1.0-1.i386.rpm 


来安装,也可以查询! 


2)如果用户不小心巫山了几个文件,但不确定到底是那些文件,想对整个系统进行校验,以了解哪些部分可能已经损坏,可以用: 


# rpm -Va 


3)如果用户碰到一个人不出来的文件,想要知道它是属于那一个软件包的话,可以这样做: 


# rpm -qf/usr/X11R6/bin/xjewel 

结果会得到以下信息: 

xjewel-1.6-1 

4)如果用户得到一个新的RPM文件,却不清楚它的内容;或想了解某个文件包将会在系统里安装那些文件,可以这样做: 

# rpm -qpikoules-1.2-2.i386.rpm

 

rpm 执行安装包
二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
常用命令组合:
-ivh:安装显示安装进度--install--verbose--hash
-Uvh:升级软件包--Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的 RPM软件包,查找丢失的文件[View Lost];
-e:删除包
rpm -q samba//查询程序是否安装
rpm -ivh/media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm//按路径安装并显示进度
rpm -ivh --relocate /=/opt/gaimgaim-1.3.0-1.fc4.i386.rpm   //指定安装目录
rpm -ivh --testgaim-1.3.0-1.fc4.i386.rpm    //用来检查依赖关系;并不是真正的安装;
rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm//新版本降级为旧版本
rpm -qa | grephttpd      #[搜索指定rpm包是否安装]--all搜索*httpd*
rpm -ql httpd         #[搜索rpm包]--list所有文件安装目录
rpm -qpiLinux-1.4-6.i368.rpm #[查看rpm包]--query--package--installpackage信息
rpm -qpf Linux-1.4-6.i368.rpm #[查看rpm包]--file
rpm -qpR file.rpm       #[查看包]依赖关系
rpm2cpio file.rpm |cpio-div   #[抽出文件]
rpm -ivhfile.rpm  #[安装新的rpm]--install--verbose--hash
rpm -ivh
[url]http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm[/url]
rpm -Uvhfile.rpm   #[升级一个rpm]--upgrade
rpm -efile.rpm     #[删除一个rpm包]--erase
常用参数:
Install/Upgrade/Erase options:
-i,--install                    install package(s)
-v,--verbose                    provide more detailed output
-h,--hash                       print hash marks as package installs (good with -v)
-e,--erase                      erase (uninstall) package
-U,--upgrade=+     upgrade package(s)
--replacepkge                   无论软件包是否已被安装,都强行安装软件包
--test                           安装测试,并不实际安装
--nodeps                         忽略软件包的依赖关系强行安装
--force                          忽略软件包及文件的冲突
Query options(with -q or --query):
-a,--all                        query/verify all packages
-p,--package                    query/verify a package file
-l,--list                       list files in package
-d,--docfiles                   list all documentation files
-f,--file                       query/verify package(s) owning file
RPM源代码包装安装
.src.rpm结尾的文件,这些文件是由软件的源代码包装而成的,用户要安装这类RPM软件包,必须使用命令:
rpm --recompile vim-4.6-4.src.rpm  #这个命令会把源代码解包并编译、安装它,如果用户使用命令:

rpm --rebuild vim-4.6-4.src.rpm  #在安装完成后,还会把编译生成的可执行文件重新包装成i386.rpm的RPM软件包。

[root@localhost src]# rpm -ivh awstats-6.8-1.noarch.rpm
error: Failed dependencies:
perl(LWP::UserAgent) is needed by awstats-6.8-1.noarch
[root@localhost src]#

使用rpm 属性相依套件的档案

[root@localhost src]# rpm -qpR awstats-6.8-1.noarch.rpm
/bin/sh
/usr/bin/perl
config(awstats) = 6.8-1
perl >= 0:5.005
perl(LWP::UserAgent)
perl(POSIX)
perl(Socket)
perl(Time::Local)
perl(strict)
perl(vars)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1






另外:# rpm -ivh --aid samba*.rpm(一定要安装rpmdb后才可以用这种方式安装排除依赖关系)