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

📄 0520rpm_and_srpm.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
mQGiBD+dnTsRBACwnlz4AhctOLlVBAsq+RaU82nb5P3bD1YJJpsAce1Ckd2sBUOJD11NUCqH
<span class=term_say>.....中间省略.....</span>
=mJAx
-----END PGP PUBLIC KEY BLOCK-----
</pre></td></tr></table>

		这样就能看到相关的资讯棉! ^_^<br><br>
	</div>

	<hr><a NAME="rpmmanager_rebuild"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>RPM 反安装与重建资料库</span>
	<div class=block2>
		反安装就是将套件解除安装啦!要注意的是,『解安装的过程一定要由最上层往下解除』,以
		rp-pppoe 为例,这一个套件主要是依据 ppp 这个套件来安装的,所以当您要解除
		ppp 的时候,就必须要先解除 rp-pppoe 才行!否则就会发生结构上的问题啦!这个可以由建筑物来说明,
		如果你要拆除五、六楼,那么当然要由六楼拆起,否则拆了第五楼,那么上面的楼层难道会悬空?<br><br>

		那么重建资料库呢?由于我们会一直在修改一些档案内容,例如 /etc/xinetd.d
		里头的参数档案,加上可能自系统操作的过程中新增、移除等等的动作,导致系统的资料库有点乱,
		这个时候可以使用<span class=text_import2>--rebuilddb</span> 来重建一下
		rpm 的资料库!这两个方法的参数如下棉∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rpm -e logrotate  <span class=term_note>&lt;==解安装 logrotate 套件</span></span>
[root@linux ~]# <span class=term_command>rpm --rebuilddb   <span class=term_note>&lt;==重建资料库</span></span>
</pre></td></tr></table>

	</div>
</div>


<hr><a NAME="srpmmanager"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class=text_h1>SRPM 的使用</span>
<div class=block1>
	谈完了 RPM 类型的套件之后,再来我们谈一谈包含了 Source code
	的 SRPM 该如何使用呢?!假如今天我们由网路上面下载了一个 SRPM 的档案,该如何安装他?又,如果我想要修改这个
	SRPM 里面原始码的相关设定值,又该如何订正与重新编译呢?!此外,最需要注意的是,新版的
	rpm 已经将 RPM 与 SRPM 的指令分开了,SRPM 使用的是 rpmbuild 这个指令,而不是
	rpm 喔!如果您是 Red Hat 7.3 以前的用户,那么请使用 rpm 来替代 rpmbuild 啦!<br><br>

	<hr><a NAME="srpmmanager_rebuild"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>利用系统预设值安装
	SRPM 档案</span>
	<div class=block2>
		假设我下载了一个 SRPM 的档案,又不想要修订这个档案内的原始码与相关的设定值,
		那么我可以直接编译并安装吗?当然可以!利用
		rpmbuild 配合参数即可。参数主要有底下两个∶<br><br>

<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr><td WIDTH="100"><span class=text_import2><font face="细明体">--rebuild</span></font></td>
	<td><font face="细明体">这个参数会将后面的 SRPM 进行『编译』与『打包』的动作,最后会产生
	RPM 的档案,但是产生的 RPM 档案并没有安装到系统上。当您使用 --rebuild 的时候,最后通常会发现一行字体∶<br>
	<b>Wrote: /usr/src/RPM/RPMS/i386/pkgname.i386.rpm</b><br>
	这个就是编译完成的 RPM 档案棉!那么这个档案就可以用来安装啦!安装的时候请加绝对路径来安装即可!</font></td></tr>
<tr><td><span class=text_import2><font face="细明体">--recompile</font></span></td>
	<td><font face="细明体">这个动作会直接的『编译』『打包』并且『安装』棉!请注意,
	rebuild 仅『编译并打包』而已,而 recompile 不但进行编译跟打包,还同时进行『安装』了!</font></td></tr>
</table><br>

		一般来说,如果编译的动作顺利的话,那么编译过程所产生的中间暂存档都会被自动删除,
		如果发生任何错误,则该中间档案会被保留在系统上,等待使用者的除错动作!那么,
		该如何除错呢?!如果想要自行除错,就得要知道利用
		SRPM 的时候,系统会动用到哪些重要的目录了!底下我们就来谈一谈当处理 SRPM
		时,系统会使用到的目录。<br><br>
	</div>

	<hr><a NAME="srpmmanager_dir"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>SRPM
	使用的路径与需要的套件</span>
	<div class=block2>
		SRPM 既然含有 source code ,那么其中必定有设定档棉,所以首先我们必需要知道,这个
		SRPM 在进行编译的时候,会使用到哪些目录呢?这样一来才能够来修改嘛!你可以到你的
		/usr/src 这个目录里面去查看一下,通常每个 distribution 提供的目录都不太相同,以
		FC4 为例,他是以 /usr/src/redhat/ 为工作目录, Openlinux 则是以 
		/usr/src/openlinux 为工作目录!无论如何,反正就是在
		/usr/src 这个目录下就对了!好了到 /usr/src/redhat 里头去看一看呦∶<br><br>

<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr><td WIDTH="200"><span class=text_import2><font face="细明体">/usr/src/redhat/SPEC</font></span></td>
	<td>这个目录当中放置的是该套件的设定档,例如这个套件的资讯参数、设定项目等等都放置在这里;</td></tr>
<tr><td><span class=text_import2><font face="细明体">/usr/src/redhat/SOURCE</font></span></td>
	<td>这个目录当中放置的是该套件的原始档(*.tar.gz的档案)以及 config 这个设定档;</td></tr>
<tr><td><span class=text_import2><font face="细明体">/usr/src/redhat/BUILD</font></span></td>
	<td>在编译的过程中,有些暂存的资料都会放置在这个目录当中;</td></tr>
<tr><td><span class=text_import2><font face="细明体">/usr/src/redhat/RPMS</font></span></td>
	<td>经过编译之后,并且顺利的编译成功之后,将打包完成的档案放置在这个目录当中。里头有包含了
	i386, i586, i686, noarch.... 等等的次目录。</td></tr>
</table><br>

		此外,在编译的过程当中,可能会发生不明的错误,或者是设定的错误,这个时候就会在
		/tmp 底下产生一个相对应的错误档,您可以根据该错误档进行除错的工作呢!
		等到所有的问题都解决之后,也编译成功了,那么刚刚解压缩之后的档案,就是在
		/usr/src/redhat/SPEC, SOURCE, BUILD 等等的档案都会被杀掉,而只剩下放置在
		/usr/src/redhat/RPMS 底下的档案了!<br><br>

		由于 SRPM 需要重新编译,而编译的过程当中,我们至少需要有 make 与其相关的程式,及
		gcc, c, c++ 等其他的编译用的程式语言来进行编译,所以,
		如果您在安装的过程当中没有选取软体开发工具之类的套件,呵呵!得重新拿出你的光碟,
		然后再安装喔!哈哈!只是得要克服一大堆的属性相依的问题就是了~
		嗯!还是建议您再次的看一下<a href="0156installfc4.php">如何安装</a>吧!<br><br>
	</div>

	<hr><a NAME="srpmmanager_config"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>设定档的主要内容</span>
	<div class=block2>
		刚刚我们在上面提过了,SRPM 还可以更改一些设定的内容,那么要如何修改这些设定的内容呢?我们以简单的
		rp-pppoe 这个套件来说明好了。比较可惜的是, rp-pppoe 的官方网站目前 (2005/10) 
		似乎不再提供新的 SRPM 档案了,所以,我们是由 rpmfind.net ( <a href="http://rpmfind.net/"
		target="_blank">http://rpmfind.net/</a> ) 找到给 FC4 使用的 SRPM 档案 (是测试版喔!) ,
		你可以自行查阅一下这个 rp-pppoe 相关的资讯以及 rpmfind.net 网站提供的资讯。
		<ul>
		<li>rp-pppoe 的官方网站∶<br><a href="http://www.roaringpenguin.com/pppoe/"
		target="_blank">http://www.roaringpenguin.com/pppoe/</a>
		<li>rpmfind.net 与 FC 系列有关的 rp-pppoe 说明与下载点∶<br>
		<a href="http://rpmfind.net//linux/RPM/fedora/devel/src/rp-pppoe-3.5-30.src.html"
		target="_blank">http://rpmfind.net//linux/RPM/fedora/devel/src/rp-pppoe-3.5-30.src.html</a><br>
		<a href="ftp://rpmfind.net/linux/fedora/core/development/SRPMS/rp-pppoe-3.5-30.src.rpm"
		target="_blank">ftp://rpmfind.net/linux/fedora/core/development/SRPMS/rp-pppoe-3.5-30.src.rpm</a></ul>
		至于基本的过程如下∶(鸟哥在这里假设你已经将 rp-pppoe-3.5-30.src.rpm 下载到 /root 底下了)<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rpm -i /root/rp-pppoe-3.5-30.src.rpm</span>
<span class=term_say># 这个过程不会显示任何东西,他只会将 SRPM 的档案解开后,放置到 
# /usr/src/redhat 下!</span>

[root@linux ~]# <span class=term_command>find /usr/src/redhat/ -type f</span>
/usr/src/redhat/SOURCES/rp-pppoe-3.5-buildroot.patch
/usr/src/redhat/SOURCES/adsl-stop
/usr/src/redhat/SOURCES/adsl-start
/usr/src/redhat/SOURCES/adsl-setup
/usr/src/redhat/SOURCES/rp-pppoe-3.4-redhat.patch
/usr/src/redhat/SOURCES/adsl-status
/usr/src/redhat/SOURCES/rp-pppoe-3.5-firewall.patch
/usr/src/redhat/SOURCES/adsl-connect
/usr/src/redhat/SOURCES/rp-pppoe-3.5.tar.gz
/usr/src/redhat/SPECS/rp-pppoe.spec
<span class=term_say># 主要含有原始码与一个重要的设定档啊! rp-pppoe.spec !</span>
</pre></td></tr></table>

		好了,来看看我们的设定参数档,亦即是在 /usr/src/redhat/SPECS 内的 *.spec 档案棉!

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>cd /usr/src/redhat/SPECS</span>
[root@linux SPECS]# <span class=term_command>vi rp-pppoe.spec</span>
<span class=term_say># 1. 首先,这个部分在介绍整个套件的基本相关资讯!不论是版本还是释出次数等。</span>
Summary: A PPP over Ethernet client (for xDSL support).
Name: rp-pppoe
Version: 3.5
Release: 30
License: GPL
Group: System Environment/Daemons
Url: http://www.roaringpenguin.com/pppoe/
Source: http://www.roaringpenguin.com/rp-pppoe-%{version}.tar.gz
Source1: adsl-connect
Source2: adsl-setup
<span class=term_say>.....中间省略.....</span>

<span class=term_say># 2. 这部分则是在设定相依属性需求的地方!</span>
Prereq: /sbin/chkconfig
Prereq: /sbin/service
Prereq: fileutils
Requires: ppp >= 2.4.2
Requires: initscripts >= 5.92
Requires: iproute >= 2.6
ExcludeArch: s390 s390x

%description
PPPoE (Point-to-Point Protocol over Ethernet) is a protocol used by
many ADSL Internet Service Providers. This package contains the
Roaring Penguin PPPoE client, a user-mode program that does not
require any kernel modifications. It is fully compliant with RFC 2516,
the official PPPoE specification.

<span class=term_say># 3. 编译前的预处理,以及编译过程当中所需要进行的指令,都写在这里
#    尤其 %build 底下的资料,几乎就是 makefile 里面的资讯啊!</span>
%prep
%setup -q
%patch0 -p1 -b .config
%patch1 -p1 -b .buildroot
%patch2 -p1 -b .ipchains

%build
cd src
autoconf
CFLAGS="-D_GNU_SOURCE" %configure
make

install -m 0755 %{SOURCE1} scripts
install -m 0755 %{SOURCE2} scripts
install -m 0755 %{SOURCE3} scripts
install -m 0755 %{SOURCE4} scripts
install -m 0755 %{SOURCE5} scripts

%install
rm -rf $RPM_BUILD_ROOT
<span class=term_say>.....中间省略.....</span>

<span class=term_say># 4. 这里列出,这个套件释出的档案有哪些的意思!</span>
%files
%defattr(-,root,root)
%doc doc/LICENSE scripts/adsl-connect scripts/adsl-setup scripts/adsl-init
%doc scripts/adsl-start scripts/adsl-status scripts/adsl-stop
%doc configs
%con

⌨️ 快捷键说明

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