RPM 기본 설치 경로
일반적으로 RPM 유형 파일을 설치할 때 먼저 파일에 기록된 구성 매개변수 내용을 읽은 다음 해당 데이터를 사용하여 Linux 시스템 환경을 비교하여 알아냅니다. 설치되지 않은 속성 종속 소프트웨어에 문제가 있는 경우.
예를 들어 Openssh는 암호화 소프트웨어 Openssl에 의존하므로 openssh를 설치하기 전에 openssl을 먼저 설치해야 합니다. 사용자 환경에 openssl이 없으면 openssh를 설치할 수 없습니다.
환경 점검을 통과하면 Linux 시스템에 RPM 파일이 설치됩니다. 설치가 완료된 후 소프트웨어 관련 정보가 /var/lib/rpm/ 디렉터리의 데이터베이스 파일에 기록됩니다. . /var/lib/rpm/ 디렉토리는 매우 중요합니다. 향후 소프트웨어 업그레이드 요구 사항 및 버전 비교는 이 데이터베이스에서 제공됩니다. 설치된 소프트웨어를 쿼리하려면 여기에서 해당 쿼리를 수행할 수도 있습니다.
소프트웨어에서 해당 파일의 설치 위치는 다음과 같습니다.
/etc 구성 파일이 있는 일부 디렉터리(예: /etc/crontab
/usr) /bin 일부 실행 파일
/usr/lib 프로그램에서 사용하는 일부 동적 라이브러리
/usr/share/doc 일부 기본 소프트웨어 매뉴얼 및 문서
/usr/share/ man 일부 매뉴얼 페이지 파일
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.rpmPreparing... ####################################### [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 업그레이드
RPM을 이용한 업그레이드는 정말 쉽습니다! -Uvh 또는 -Fvh를 사용하여 업그레이드하세요. -Uvh 및 -Fvh에 사용할 수 있는 옵션과 매개 변수는 설치와 동일합니다. 그러나 -U와 -F의 의미는 여전히 다릅니다.
-Uvh 后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自动升级至新版; -Fvh 如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』!
위의 설명으로 판단하면, 다수의 오래된 시스템 소프트웨어를 업그레이드하려는 경우입니다. -Fvh를 사용하는 것이 더 좋습니다. 제거된 소프트웨어가 실수로 시스템에 설치되지 않기 때문입니다. 그러나 -Fvh를 사용하고 있고 이 소프트웨어를 아직 귀하의 컴퓨터에서 사용할 수 없는 경우 죄송합니다. 소프트웨어가 Linux 호스트에 설치되지 않으므로 ivh Bar를 사용하여 다시 설치하십시오!
RPM 쿼리
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는 패키지를 의미함)를 사용해야 합니다. 몇 가지 간단한 예를 살펴보겠습니다!
范例一:找出你的 Linux 是否有安装 logrotate 这个软件? [root@www ~]# rpm -q logrotatelogrotate-3.7.4-8 [root@www ~]# rpm -q logrotatingpackage logrotating is not installed# 注意到,系统会去找是否有安装后面接的软件名称。注意, # 不必要加上版本喔!至於显示的结果,一看就知道有没有安装啦!范例二:列出上题当中,属於该软件所提供的所有目录与文件: [root@www ~]# rpm -ql logrotate/etc/cron.daily/logrotate /etc/logrotate.conf ....(以下省略)....# 可以看出该软件到底提供了多少的文件与目录,也可以追踪软件的数据。范例三:列出 logrotate 这个软件的相关说明数据: [root@www ~]# rpm -qi logrotateName : 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 oflog files on a system which generates a lot of log files. Logrotate allows for the automatic rotation compression, removal and mailing oflog 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 thelog 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-8libc.so.6....(以下省略).... # 由这里看起来,呵呵~还需要很多文件的支持才行喔!范例六:由上面的范例五,找出 /bin/sh 是那个软件提供的? [root@www ~]# rpm -qf /bin/shbash-3.2-21.el5 # 这个参数后面接的可是『文件』呐!不像前面都是接软件喔! # 这个功能在查询系统的某个文件属於哪一个软件所有的。范例七:假设我有下载一个 RPM 文件,想要知道该文件的需求文件,该如何? [root@www ~]# rpm -qpR filename.i386.rpm# 加上 -qpR ,找出该文件需求的数据!
要特别说明的是,在查询本机上面的 RPM 软件相关资讯时, 不需要加上版本的名称,只要加上软件名称即可!因为他会由 /var/lib/rpm 这个数据库里面去查询, 所以我们可以不需要加上版本名称。但是查询某个 RPM 文件就不同了,我们必须要列出整个文件的完整档名才行~ 这一点朋友们常常会搞错。底下我们就来做几个简单的练习吧!
RPM 卸载
解安装的过程一定要由最上一级往下解除以 rp-pppoe 为例,这一个软件主要是依据 ppp 这个软件来安装的,所以当你要解除 ppp 的时候,就必须要先解除 rp-pppoe 才行!否则就会发生结构上的问题啦!这个可以由建筑物来说明, 如果你要拆除五、六楼,那么当然要由六楼拆起,否则先拆的是第五楼时,那么上面的楼层难道会悬空?
移除的选项很简单,就透过 -e 即可移除。不过,很常发生软件属性相依导致无法移除某些软件的问题! 我们以底下的例子来说明:
# 1. 找出与 pam 有关的软件名称,并尝试移除 pam 这个软件:[root@www ~]# rpm -qa | grep pampam-devel-0.99.6.2-3.27.el5 pam_passwdqc-1.0.2-1.2.2pam_pkcs11-0.5.3-23pam_smb-1.1.7-7.2.1pam-0.99.6.2-3.27.el5 pam_ccreds-3-5pam_krb5-2.2.14-1[root@www ~]# rpm -e pamerror: 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 <==重建数据库
以上就是笔记005 RRM软件管理程序的内容,更多相关内容请关注PHP中文网(www.php.cn)!