📄 rpm-howto.txt
字号:
RPM HOWTO (RPM at Idle) 作者: Donnie Barnes, djb@redhat.com译者: 胡崇伟 marr@cc.nccu.edu.tw v2.0, 8 April 1997 _________________________________________________________________ 如何使用 Red Hat 包装管理程式。 _________________________________________________________________ 1. Introduction2. Overview3. General Information * 3.1 Acquiring RPM * 3.2 RPM Requirements 4. Using RPM5. Now what can I really do with RPM?6. Building RPMs * 6.1 The rpmrc File * 6.2 The Spec File * 6.3 The Header * 6.4 Prep * 6.5 Build * 6.6 Install * 6.7 Optional pre and post Install/Uninstall Scripts * 6.8 Files * 6.9 Building It * 6.10 Testing It * 6.11 What to do with your new RPMs * 6.12 What Now? 7. Multi-architectural RPM Building * 7.1 Sample spec File * 7.2 Optflags * 7.3 Macros * 7.4 Excluding Architectures from Packages * 7.5 Finishing Up 8. Copyright Notice _________________________________________________________________ 1. Introduction RPM 指的是 Red Hat Package Manager 之缩写, 虽然名称上包含著 Red Hat 的 字号, 但其原始设计理念是采开收式的, 用意在於让这个程式能提供给所有人 使用。 透过 rpm 的管理, 使用者可以将某个新软体的 source code, 重新整 理包装成另一种 source 与 binary 的档案型式, 如此一来, 我们可以轻松地 由 binary 型式的档案, 进行安装与套件追踪管理的工作, 而 source 型式的 档案, 也很方便地能够再被重新整理包装。 同时, rpm 管理著一份资料库, 里头包含了所有的程式套件的档案资料, 透过这份资料库, 我们可以进行程式 套件之确认与查询工作。 Red Hat 公司鼓励其他协力厂商, 一同发展及使用 RPM 於它们的 distribution 当中。 RPM 相当具有弹性, 其操作非常简单, 提供系统扩充发 展的基础, 另一方面, 它的发展完全公开, 而且可免费取得, 使用者可以回 覆任何程式码上的错误与修正内容。 只要在符合 GPL 的宣告条件下, 大家可以 自由地使用及传播 RPM 程式。 如果您想获得有关 RPM 更详细的文件说明, 可以参考 Ed Bailey 所撰之 Maximum RPM 一书。 这本书可由 [1]www.redhat.com 下载或购买到。 2. Overview 首先, 让我们先来了解 RPM 背後的设计哲学, 其设计的目的之一, 便是允许 使用者能够使用「纯净」的 source 档案。 关於此点, 我们必须回溯至 RPP 程 式, ( 这是一个早期所使用的程式套件管理系统, 不过, 後来 RPM 倒没有由 其衍生 ), 它所采用的 source 档案, 都是经过额外的「破解处理」。 理论上 , 使用者可以顺畅无误地, 从一份 RPP 原始档, 完成 install 与 make 的动 作。 但是这样处理过的 source 档案, 已是面貌全非, 使用者可能无从得知, 档案里到底哪些地方被更改过, 通常必须额外取回未经处理过的 source 档案。 而 RPM 的做法, 便是让使用者取得「未经处理过的 source 档案」, 同时再附 上一份「patch 档案」, 可藉之完成程式编译的工作。 我们很容易发现, 这样 的做法带来不少好处。 怎麽说呢? 举个状况为例, 在 Red Hat Linux 下, 如 果某个新版的程式问世了, 您可能没有必要再重头开始做 compile 动作, 先观 察「patch 档案」的内容, 看看是否有哪些部份才是您需要做的。 如此一来, 所有内含的程式预设值便很容易看出来。 另一方面, RPM 也具有强大的查询功能, 您可以针对整个程式套件的资料库, 或是某些特定的档案, 进行查询的动作, 也可以轻松地查出, 某个档案是属於 哪个程式套件, 或是它打从哪里来的。 RPM 档案本身是经过压缩的, 但您还是 可以很容易而快速地, 查询每个程式套件的内容, 因为在程式套件里, 已经加 入一段特殊的 binary header, 它记录了全部查询时所需的内容, 这样的做法 , 使得查询功能变得相当快速。 另一项强大的功能, 便是程式套件的完整确认。 如果您担心误砍某个档案, 而 它正是某个程式套件的重要部份, 那麽做个「确认动作」就行了。 如有任何不 正常的地方, 便会通知您, 这时候, 您可以视情况重新安装该程式套件, 而 且所有之前的设定档, 都会完好地被保存下来。 我们非常感谢来自 BOGUS distribution 的高手们, 他们提供了许多意见构想, 後来也都被采用於 RPM 当中。 虽然 RPM 完全是由 Red Hat Software 所撰写, 但其操作模式是根据 BOGUS (PM 与 PMS) 所写的程式码。 3. General Information3.1 Acquiring RPM 最好且最简单的方法, 当然就是安装 Red Hat Linux 罗, 如果您抵死不从, 那麽依然可以从 FTP 站, 抓取原始程式回来安装。 程式档案的位置是 [2]ftp.redhat.com。 3.2 RPM Requirements 顺利执行 RPM 的最大条件, 就是「要有 2.4.2 版以上的 cpio 程式」。 RPM 主要是设计给 Linux 使用的, 但对於其他 Unix 系统的相容性也相当不错, 事 实上, 它已经顺利在 SunOS、 Solaris、 AIX、 Irix、 AmigaOS 及其他系统上 完成 compile 动作。 值得注意的是, 由不同 Unix 作业平台所编译出来的 binary 程式套件, 是不能彼此相容的。 上述只是安装 RPM 的最低需求, 如果想要由 source 档案建造起, 那麽您还需 要 gcc, make 之类的编译工具程式, 这和建造一般程式套件并无二致。 4. Using RPM RPM 可以用於安装程式套件上, 最简单的操作格式如下: rpm -i foobar-1.0-1.i386.rpm 另一个简单的操作□例, 是用於解除某一个程式套件的安装: rpm -e foobar 接下来的指令□例较为复杂, 但它非常有用, 可以让您透过 FTP 来安装程式套 件。 如果您能够连上网路, 想安装某个新的程式套件时, 所需下达的指令, 便是在档案前加上适当的 URL 格式, 例如: rpm -i ftp://ftp.pht.com/pub/linux/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm 请特别注意, RPM 目前已允许透过 FTP 来进行查询或安装。 上述都是些简单的指令, rpm 还有许多不同的选项方式, 这些可由 Usage 的说 明中看出: RPM version 2.3.9Copyright (C) 1997 - Red Hat SoftwareThis may be freely redistributed under the terms of the GNU Public Licenseusage: rpm {--help} rpm {--version} rpm {--initdb} [--dbpath <dir>] rpm {--install -i} [-v] [--hash -h] [--percent] [--force] [--test] [--replacepkgs] [--replacefiles] [--root <dir>] [--excludedocs] [--includedocs] [--noscripts] [--rcfile <file>] [--ignorearch] [--dbpath <dir>] [--prefix <dir>] [--ignoreos] [--nodeps] [--ftpproxy <host>] [--ftpport <port>] file1.rpm ... fileN.rpm rpm {--upgrade -U} [-v] [--hash -h] [--percent] [--force] [--test] [--oldpackage] [--root <dir>] [--noscripts] [--excludedocs] [--includedocs] [--rcfile <file>] [--ignorearch] [--dbpath <dir>] [--prefix <dir>] [--ftpproxy <host>] [--ftpport <port>] [--ignoreos] [--nodeps] file1.rpm ... fileN.rpm rpm {--query -q} [-afpg] [-i] [-l] [-s] [-d] [-c] [-v] [-R] [--scripts] [--root <dir>] [--rcfile <file>] [--whatprovides] [--whatrequires] [--requires] [--ftpuseport] [--ftpproxy <host>] [--ftpport <port>] [--provides] [--dump] [--dbpath <dir>] [targets] rpm {--verify -V -y} [-afpg] [--root <dir>] [--rcfile <file>] [--dbpath <dir>] [--nodeps] [--nofiles] [--noscripts] [--nomd5] [targets] rpm {--setperms} [-afpg] [target] rpm {--setugids} [-afpg] [target] rpm {--erase -e} [--root <dir>] [--noscripts] [--rcfile <file>] [--dbpath <dir>] [--nodeps] [--allmatches] package1 ... packageN rpm {-b|t}[plciba] [-v] [--short-circuit] [--clean] [--rcfile <file>] [--sign] [--test] [--timecheck <s>] specfile rpm {--rebuild} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm rpm {--recompile} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm rpm {--resign} [--rcfile <file>] package1 package2 ... packageN rpm {--addsign} [--rcfile <file>] package1 package2 ... packageN rpm {--checksig -K} [--nopgp] [--nomd5] [--rcfile <file>] package1 ... packageN rpm {--rebuilddb} [--rcfile <file>] [--dbpath <dir>] rpm {--querytags} 您可以在 RPM 的 man page 里, 找到这些选项的详细说明。 5. Now what can I really do with RPM? RPM 是个非常有用的工具, 而且如您所知的, 它具有许多选项功能。 让您了解 这些功能的最好方式, 便是实际介绍几个□例, 前面我们已经提过安装与解除 安装的简单例子, 底下是一些额外的□例: * 假设说, 您不小心误删了几个档案, 但不确定到底是哪些档案, 您想对整 个系统进行确认动作, 以了解哪些部份可能已经遗损, 您可以这样做: rpm -Va * 假设说, 您碰到一个认不出来的档案, 想要知道它是属於哪一个程式套件 的话, 您可以这样做: rpm -qf /usr/X11R6/bin/xjewel 其结果会得到: xjewel-1.6-1 * 如果您找到一个新的 RPM 档案, 却不清楚它的内容, 想要获得相关的资讯 , 可以这样做: rpm -qpi koules-1.2-2.i386.rpm 其结果会得到: Name : koules Distribution: Red Hat Linux ColgateVersion : 1.2 Vendor: Red Hat SoftwareRelease : 2 Build Date: Mon Sep 02 11:59:12 1996Install date: (none) Build Host: porky.redhat.comGroup : Games Source RPM: koules-1.2-2.src.rpmSize : 614939Summary : SVGAlib action game with multiplayer, network, and sound supportDescription :This arcade-style game is novel in conception and excellent in execution.No shooting, no blood, no guts, no gore. The play is simple, but youstill must develop skill to play. This version uses SVGAlib torun on a graphics console. * 如果您想了解某个 RPM 档案, 会在系统里安装哪些档案, 您可以这样做: rpm -qpl koules-1.2-2.i386.rpm 其结果会是: /usr/doc/koules/usr/doc/koules/ANNOUNCE/usr/doc/koules/BUGS/usr/doc/koules/COMPILE.OS2/usr/doc/koules/COPYING/usr/doc/koules/Card/usr/doc/koules/ChangeLog/usr/doc/koules/INSTALLATION/usr/doc/koules/Icon.xpm/usr/doc/koules/Icon2.xpm/usr/doc/koules/Koules.FAQ/usr/doc/koules/Koules.xpm/usr/doc/koules/README/usr/doc/koules/TODO/usr/games/koules/usr/games/koules.svga/usr/games/koules.tcl/usr/man/man6/koules.svga.6 上述只是一些□例, 当您对 RPM 愈加熟悉时, 应该能想出其他更多的创意组合 。 6. Building RPMs 如果您可以自个儿取得所需的软体,那麽建造 RPM 档案也是非常简单的。 建造 RPM 档案的基本步骤如下: * 确定您的 /etc/rpmrc 已经符合系统所需, 完成设定。 * 取回所要建造的 source code。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -