⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0520rpm_and_srpm.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
</div>


<hr><a NAME="rpmmanager"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class=text_h1>RPM 套件管理程式</span>
<div class=block1>
	RPM 的使用其实不难,只要使用 rpm 这个指令即可!鸟哥最喜欢的就是
	rpm 指令的查询功能了,可以让我很轻易的就知道某个系统有没有安装鸟哥要的套件呢!此外,
	我们最好还是得要知道一下,到底
	RPM 类型的档案他们是将套件的相关档案放置在哪里呢?还有,我们说的那个 RPM
	的资料库又是放置在哪里呢?<br><br>

	<hr><a NAME="rpmmanager_dir"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>RPM 预设安装的路径</span>
	<div class=block2>
		一般来说,RPM 类型的档案在安装的时候,会先去读取档案内记载的设定参数内容,然后将该资料用来比对
		Linux 系统的环境( <span class=text_vbird>例如属性相依的套件</span>
		),例如目前 <a href="../linux_server/0310telnetssh.php#ssh">SSH</a> 这个远端连线软体(
		<span class=text_vbird>请参考伺服器篇</span>
		)使用的是 OpenSSL 的加密机制,所以,要安装 SSH 的时候,就得要先安装好 OpenSSL
		才行啊,如果没有安装 OpenSSL 的话, SSH 就不让您安装了!这些都是 RPM 环境的要求,
		如果环境相符就予以安装,如果不符就会显示出不符合的内容所在!
		<span class=text_import2>等到安装完毕之后,
		rpm 就会将套件的资讯写入∶<b>/var/lib/rpm</b> 这个目录中去!</span>所以,
		往后您在进行查询的时候或者是预计要升级的时候,相关的资讯就会由
		<span class=text_import1>/var/lib/rpm</span>
		这个目录的内容资料来提供棉!<br><br>

		一般来说,由于 RPM 有资料库来纪录套件相关的资讯,所以 RPM 
		类型的套件所拥有的档案都放置在系统预设放置的目录底下,亦即如同我们在
		<a href="0210filepermission.php#Linux_directory">档案属性与目录配置</a>
		一文当中提到的∶<br><br>

<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr><td WIDTH="120"><font face="细明体"><font color="#000066">/etc</font></font></td>
	<td><font face="细明体"><font color="#000066">一些设定档放置的目录,例如 /etc/crontab</font></font></td></tr>
<tr><td><font face="细明体"><font color="#000066">/usr/bin</font></font></td>
	<td><font face="细明体"><font color="#000066">一些可执行档案</font></font></td></tr>
<tr><td><font face="细明体"><font color="#000066">/usr/lib</font></font></td>
	<td><font face="细明体"><font color="#000066">一些程式使用的动态函式库</font></font></td></tr>
<tr><td><font face="细明体"><font color="#000066">/usr/share/doc</font></font></td>
	<td><font face="细明体"><font color="#000066">一些基本的软体使用手册与说明档</font></font></td></tr>
<tr><td><font face="细明体"><font color="#000066">/usr/share/man</font></font></td>
	<td><font face="细明体"><font color="#000066">一些 man page 档案</font></font></td></tr>
</table><br>

		好了,底下我们就来针对每个 RPM 的相关指令来进行说明棉!<br><br>
	</div>

	<hr><a NAME="rpmmanager_install"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>RPM 安装( install )</span>
	<div class=block2>
		安装就是 install 嘛!所以棉,使用 rpm 来安装就很简单啦!假设我要安装一个档名为
		rp-pppoe-3.1-5.i386.rpm 的档案,那么我可以这样( 
		<span class=text_vbird>记得某些套件可能需要以系统管理员的身份来安装</span> )∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rpm -i rp-pppoe-3.1-5.i386.rpm</span>
</pre></td></tr></table>

		不过,这样的参数其实无法显示安装的进度,所以,通常我们会这样下达安装指令∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rpm -ivh package_name</span>
<span class=term_say>参数∶
-i ∶install 的意思
-v ∶察看更细部的安装资讯画面
-h ∶以安装资讯列显示安装进度
范例∶</span>

<span class=term_hd>范例一∶安装 rp-pppoe-3.1-5.i386.rpm</span>
[root@linux ~]# <span class=term_command>rpm -ivh rp-pppoe-3.1-5.i386.rpm</span>
Preparing...     ####################################### [100%]
   1:rp-pppoe    ####################################### [100%] 

<span class=term_hd>范例二、一口气安装两个以上的套件时∶</span>
[root@linux ~]# <span class=term_command>rpm -ivh a.i386.rpm b.i386.rpm *.rpm</span>
<span class=term_say># 后面直接接上许多的套件档案!</span>

<span class=term_hd>范例三、直接由网路上面的某个档案安装,以网址来安装∶</span>
[root@linux ~]# <span class=term_command>rpm -ivh http://website.name/path/pkgname.rpm</span>
</pre></td></tr></table>

		另外,如果我们在安装的过程当中发现问题,或者已经知道会发生的问题,
		而还是『执意』要安装这个套件时,可以使用如下的参数『强制』安装上去∶<br><br>

<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr bgcolor=lightblue align=center><td width=130>可下达的参数</td><td>代表意义</td></tr>
<tr><td><span class=text_import2><font face="细明体">--nodeps</font></span></td>
	<td><span class=text_import2><font face="细明体">使用时机∶</font></span>
	如果您在安装某个套件时,老是发现 rpm 告诉你『有属性相依的套件尚未安装』,
	而您又想要直接强制安装这个套件时,可以加上 --nodeps 告知 RPM 不要去检查套件的相依性。<br>
	<span class=text_import2><font face="细明体">危险性∶</font></span>
	套件会有相依性的原因是因为彼此会使用到对方的机制或功能,如果强制安装而不考虑套件的属性相依,
	则可能会造成该套件的无法正常使用!</td></tr>
<tr><td><span class=text_import2><font face="细明体">--nomd5</font></span></td>
	<td><span class=text_import2><font face="细明体">使用时机∶</font></span>
	不想检查 RPM 档案所含的 MD5 资讯时。<br>
	<span class=text_import2><font face="细明体">说明∶</font></span>
	还记得我们在前一章有提到的 MD5 这个指纹辨识吧?!没错,这里指的就是不要检查 RPM 套件的 MD5 
	资讯。但除非您很清楚这个套件的来源,否则不建议使用这个参数。</td></tr>
<tr><td><span class=text_import2><font face="细明体">--noscripts</font></span></td>
	<td><span class=text_import2><font face="细明体">使用时机∶</font></span>
	不想让该套件自行启用或者自行执行某些系统指令。<br>
	<span class=text_import2><font face="细明体">说明∶</font></span>
	RPM 的优点除了可以将档案放置到定位之外,还可以自动执行一些前置作业的指令,例如资料库的初始化。
	如果您不想要让 RPM 帮您自动执行这一类型的指令,就加上他吧!</td></tr>
<tr><td><span class=text_import2><font face="细明体">--replacefiles</font></span></td>
	<td><span class=text_import2><font face="细明体">使用时机∶</font></span>
	如果在安装的过程当中出现了『<span class=text_import2>某个档案已经被安装在您的系统上面</span>』的资讯,
	又或许出现版本不合的讯息( confilcting files )时,可以使用这个参数来直接覆盖档案。<br>
	<span class=text_import2><font face="细明体">危险性∶</font></span>
	覆盖的动作是无法复原的!所以,您必须要很清楚的知道被覆盖的档案是真的不重要喔!否则会欲哭无泪!</td></tr>
<tr><td><span class=text_import2><font face="细明体">--replacepkgs</font></span></td>
	<td><span class=text_import2><font face="细明体">使用时机∶</font></span>
	重新安装某个已经安装过的套件!</td></tr>
<tr><td><span class=text_import2><font face="细明体">--force</font></span></td>
	<td><span class=text_import2><font face="细明体">使用时机∶</font></span>
	这个参数其实就是 --replacefiles 与 --replacepkgs 的综合体!</td></tr>
<tr><td><span class=text_import2><font face="细明体">--test</font></span></td>
	<td><span class=text_import2><font face="细明体">使用时机∶</font></span>
	想要测试一下该套件是否可以被安装到使用者的 Linux 环境当中。范例为∶<br>
	<span class=text_import2><font face="细明体">rpm -ivh pkgname.i386.rpm --test</font></span></td></tr>
</table><br>

		一般来说,安装的指令大约就是这些了。通常鸟哥建议直接使用 -ivh 就好了,
		如果安装的过程中发现问题,一个一个去将问题找出来,尽量不要使用『
		<span class=text_import2>暴力安装法</span> 』,因为可能会发生很多不可预期的问题呢!
		除非您很清楚的知道使用上面的参数后,安装的结果是您预期的!<br><br>
	</div>

	<hr><a NAME="rpmmanager_update"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>RPM 升级与更新</span>
	<div class=block2>
		使用 RPM 来升级真是太简单了!就以 -Uvh 或 -Fvh 来升级即可( 
		<span class=text_vbird>注∶vh 的功能仍是在于显示细部资讯与安装进度而已</span> 
		)!不过,这两种升级方式是不太一样的∶<br><br>

<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr><td WIDTH="50"><font face="细明体"><font color="#000066">-Uvh</font></font></td>
	<td><font face="细明体">后面接的套件即使没有安装过,则系统将予以直接安装;
	若后面接的套件有安装过旧版,则系统自动更新至新版;</font></font></td></tr>
<tr><td><font face="细明体"><font color="#000066">-Fvh</font></font></td>
	<td><font face="细明体">如果后面接的套件并未安装到您的 Linux 系统上,则该套件不会被安装;亦即只有安装至您
	Linux 系统内的套件会被『升级』!</font></td></tr>
</table><br>

		由上面的说明来看,如果您想要大量的升级系统旧版本的套件时(
		<span class=text_vbird>例如刚安装完作业系统,而想要更新套件至最新</span>
		),使用 -Fvh 则是比较好的作法。但是需要注意的是,如果您使用的是 Fvh 
		,偏偏您的机器上尚无这一个套件,那么很抱歉,该套件并不会被安装在您的
		Linux 主机上面,所以请重新以 ivh 来安装吧!<br><br>

		通常有的朋友在进行整个作业系统的旧版套件修补时,喜欢这么进行∶
		<ol><span class=text_import2>
		<li>先到各发展商的 errata 网站或者是国内的 FTP 映像站捉下来最新的 RPM 档案;
		<li>使用 -Fvh 来将您的系统内曾安装过的套件进行修补与升级!(真是方便呀!)
		</ol></span>

		当然棉,升级也是可以利用 <span class=text_import2>--nodeps/--force</span> 等等的参数啦!<br><br>
	</div>

	<hr><a NAME="rpmmanager_query"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>RPM 查询</span>
	<div class=block2>
		RPM 在查询的时候,其实查询的地方是在 <span class=text_import1>/var/lib/rpm</span>
		这个目录下的资料库档案啦!另外, RPM 也可以查询档案内的资讯喔!那如何去查询呢?我们底下以
		简单的范例来说明∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rpm -qa</span>
[root@linux ~]# <span class=term_command>rpm -q[licdR] 已安装的套件名称</span>
[root@linux ~]# <span class=term_command>rpm -qf 存在于系统上面的某个档案</span>
[root@linux ~]# <span class=term_command>rpm -qp[licdR] 未安装的某个档案名称</span>
<span class=term_say>参数∶
在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!
查询主要分为两部分,一个是查已安装,另一个则是查某个 rpm 档案内容。
查询已安装套件的资讯∶
-q  ∶仅查询,后面接的套件名称是否有安装;
-qa ∶列出所有的,已经安装在本机 Linux 系统上面的所有套件名称;
-qi ∶列出该套件的详细资讯 (information),包含开发商、版本与说明等;
-ql ∶列出该套件所有的档案与目录所在完整档名 (list);
-qc ∶列出该套件的所有设定档 (找出在 /etc/ 底下的档名而已)
-qd ∶列出该套件的所有说明档 (找出与 man 有关的档案而已)
-qR ∶列出与该套件有关的相依套件所含的档案 (Required 的意思)
-qf ∶由后面接的档案名称,找出该档案属于哪一个已安装的套件;
查询某个 RPM 档案内含有的资讯∶
-qp[icdlR]∶注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出
	    某个 RPM 档案内的资讯,而非已安装的套件资讯!注意!
范例∶</span>

<span class=term_hd>范例一∶找出你的 Linux 是否有安装 logrotate 这个套件?</span>
[root@linux ~]# <span class=term_command>rpm -q logrotate</span>
logrotate-3.7.1-10
[root@linux ~]# <span class=term_command>rpm -q logrotating</span>
package logrotating is not installed
<span class=term_say># 注意到,系统会去找是否有安装后面接的套件名称。注意,
# 不必要加上版本喔!至于显示的结果,一看就知道有没有安装啦!</span>

<span class=term_hd>范例二∶列出上题当中,该套件的所有目录与档案∶</span>
[root@linux ~]# <span class=term_command>rpm -ql logrotate</span>
/etc/cron.daily/logrotate
/etc/logrotate.conf
<span class=term_say>......以下省略......</span>
<span class=term_say># 可以看出该套件到底提供了多少的档案与目录。</span>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -