Fedora 和 Red Hat Linux 使用RPM作为包管理工具,更新工具(yum、up2date、apt)使用 rpmlib 来访问系统上的 rpm 数据。
安装
rpm -i package.rpm
rpm -ivh package.rpm
rpm -ivh --test new-kernel.rpm
rpm -Uvh new-package.rpm
其中“-i”是安装参数,“package.rpm”是您要安装的 RPM。
“-v” 表示详细,“-h” 表示散列标记。解压时会打印一些“#”,
您还可以模拟安装--test
“-U”升级选项只会删除已安装的旧软件包,然后安装新软件包。如果系统中不存在该软件包,则会安装 new-package.rpm。
如果安装的新版 Samba 与您的应用程序不兼容,该怎么办?答案:升级到旧版本。如果您愿意,可以将其称为“降级”。安装旧包的命令将是:
rpm -Uvh --oldpackage Samba-old-version.rpm
rpm -Uvh ftp://user:pass@ftpserver/directory/package.rpm
rpm -Uvh --repackage new-kernel.rpm
其中“--oldpackage”选项表示 Samba 软件包版本比已安装的版本旧。该命令将删除已安装的版本,然后安装 Samba-old-ver.rpm。
RPM 可用于直接从网络安装和更新。您无需下载软件包然后安装它,RPM 可以为您完成。它支持 HTTP 和 FTP 协议,要从 FTP 服务器安装/升级。
升级时,使用备份选项“--repackage”,
删除
rpm -e package
rpm -e --test package
rpm -e --repackage package
其中“-e”是 Erase 参数,“package.rpm”是您要删除的 RPM。您还可以模拟--test
将要执行的操作并备份--repackage
软件包。
还有危险参数--nodeps
和--force
,表示强制删除。几乎所有事情都可以在没有这两个的情况下完成。
如果其他软件包依赖于它,RPM 将不允许删除。您可以通过执行以下命令查看需要您尝试删除的 RPM 软件包的软件包列表:
rpm -q --whatrequires kernel
如果要删除某个软件包,请首先尝试找出哪些软件包依赖于它,并尽可能删除它们。
查询
rpm -q yum
rpm -q yum-2.0.4-2
rpm -qa
rpm -qa | grep -i python
这里我们使用了“-q”参数,表示我们正在执行查询。如果安装了 yum 包,1.2命令将返回 true(Shell 变量 $? = 0)。
如果想知道系统上所有已安装的软件包,请添加参数“-a”,可以使用grep检查包是否已安装或找出所有与字符串匹配的包“-i”是“不区分大小写”。
查询一个未安装的包
那么 RPM 文件呢?想象一下,我们想查询一个未安装的包。这在很多情况下都很有用。如果你刚刚从互联网上下载了包并想检索其信息,请尝试以下操作:
rpm -qpi vnc-server-4.0-0.beta4.3.2.i386.rpm
通过运行上述命令,有关软件包的所有信息都将打印在屏幕上。使用“-p”查询参数时,RPM 知道它正在处理一个文件,在本例中是 VNC RPM 软件包。
列出某些 RPM 包所需的包
rpm -qpR package.rpm #未安装
rpm -qR kernel #已安装
rpm -qpl --ftpproxy proxyserver --ftpport port ftp://ftpserver/dir/remote-package.rpm
“-R”参数代表“Requires”。
查询程序或文件是否是某个 RPM 包的一部分
rpm -qf /usr/bin/smbmount
在这种情况下,它将返回包含 smbmount 文件的包名称:
或者您只知道需要哪个程序或文件,但不知道需要哪个包时,此命令非常有用。
查询 RPM 包将安装哪些文件
rpm -ql cpp #已安装
rpm -qpl cpp-3.3.2-1.i386.rpm #未安装
rpm -qpl --ftpproxy proxyserver --ftpport port ftp://ftpserver/dir/remote-package.rpm
“-l”参数代表列表。参数“-p”表示 RPM 包。
“proxyserver”可以是代理服务器的主机名或 IP 地址,而“port”是该服务器上的监听端口。同样的规则适用于 HTTP 协议,因此命令使3用代理服务器查询“remote-package.rpm”安装所需的软件包:
查询arch 类型和内核名称
从 RPM 包升级或安装新内核版本时,需要注意以下几点:arch 类型和内核名称/版本。有关升级命令的更多详细信息, 请参阅内核升级说明。
要从已安装的当前内核中获取这些值,请发出以下命令:
rpm -q --qf "Kernel arch type is: %{ARCH}\nKernel name is: %{VERSION}\n" kernel
问题
我如何知道已安装软件包的大小?
当您遇到硬盘空间不足的问题时,以下 RPM 命令很有用,它将打印按软件包大小(以字节为单位)排序的已安装软件包列表:
rpm -qa --queryformat '%10{size} %{name}-%{version}\n' | sort -n
我如何确定我的软件包的安装时间?
当您最近安装的软件包出现问题时,以下命令很有用,它们将打印按安装时间排序的操作系统安装软件包列表:
rpm -qa --queryformat '%{installtime} %{installtime:date} %{name}-%{version}\n' | sort -n | sed 's/^[0-9]*//'
rpm -qa -last | tac