- Linux 界的两大主流: RPM 与 DPKG
-
distribution 代表 软件管理机制 使用指令 在线升级机制(指令) Red Hat/Fedora RPM rpm, rpmbuild YUM (yum) Debian/Ubuntu DPKG dpkg APT (apt-get)
-
- RPM与SRPM
- RPM 是以一种数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制。
- 优点:
- 由于已经编译完成并且打包完毕,所以软件传输与安装上很方便 (不需要再重新编译);
- 由于软件的信息都已经记录在 Linux 主机的数据库上,很方便查询、升级与反安装
- 问题:
- 软件档案安装的环境必须与打包时的环境需求一致或相当;
- 需要满足软件的相依属性需求;
- 反安装时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题!
- 优点:
- SRPM(Source RPM)所提供的软件内容『并没有经过编译』, 他提供的是原始码。通常 SRPM 的扩展名是以 ***.src.rpm 这种格式来命名的。
- 先将该软件以 RPM 管理的方式编译,此时 SRPM 会被编译成为 RPM 档案;
- 然后将编译完成的 RPM 档案安装到 Linux 系统当中
- RPM 是以一种数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制。
- 什么是 i386, i586, i686, noarch, x86_64
- rp-pppoe-3.1-5.i386.rpm----档案的意义
-
rp-pppoe - 3.1 - 5 .i386 .rpm 软件名称 软件的版本信息 释出次数 适用的平台 扩展名
-
- rp-pppoe-3.1-5.i386.rpm----档案的意义
- RPM 是透过预先编译并打包成为 RPM 文件格式后,再加以安装的一种方式,并且还能够进行数据库的记载。所以 RPM 有以下的优点:
- RPM 内含已经编译过的程序与配置文件等数据,可以让用户免除重新编译的困扰;
- RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免档案被错误安装;
- RPM 档案本身提供软件版本信息、相依属性软件名称、软件用途说明、软件所含档案等信息,便于了解软件;
- RPM 管理的方式使用数据库记录 RPM 档案的相关参数,便于升级、移除、查询与验证。
- RPM 软件管理程序: rpm
- 利用RPM安装的软件相关的信息会被写入 /var/lib/rpm/ 目录下的数据库档案中
- RPM 安装 (install)
- rpm -ivh package_name
- -i :install 的意思
- -v :察看更细部的安装信息画面
- -h :以安装信息列显示安装进度
- rpm -ivh package_name
- RPM 升级与更新 (upgrade/freshen)
- rpm -[UF]vh package_name
- -Uvh:后面接的软件即使没有安装过,则系统将予以直接安装;若后面接的软件有安装过旧版,则系统自动更新至新版;
- -Fvh:如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』!
- rpm -[UF]vh package_name
- RPM 查询 (query)
- rpm -qa <==已安装软件
- rpm -q[licdR] 已安装的软件名称 <==已安装软件
- rpm -qf 存在于系统上面的某个文件名 <==已安装软件
- rpm -qp[licdR] 未安装的某个文件名 <==查阅RPM档案
- 查询已安装软件的信息:
- -q :仅查询,后面接的软件名称是否有安装;
- -qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
- -qi :列出该软件的详细信息 (information),包含开发商、版本与说明等;
- -ql :列出该软件所有的档案与目录所在完整文件名 (list);
- -qc :列出该软件的所有配置文件 (找出在 /etc/ 底下的档名而已)
- -qd :列出该软件的所有说明文件 (找出与 man 有关的档案而已)
- -qR :列出与该软件有关的相依软件所含的档案 (Required 的意思)
- -qf :由后面接的文件名,找出该档案属于哪一个已安装的软件;
- 查询某个 RPM 档案内含有的信息:
- qp[icdlR]:注意 -qp 后面接的所有参数与上面的说明一致。但用途仅在于找出某个 RPM 档案内的信息,而非已安装的软件信息!注意!
- RPM 验证与数字签名 (Verify/signature)
- 作用的方式是『使用 /var/lib/rpm 底下的数据库内容来比对目前 Linux 系统的环境下的所有软件档案 』也就是说,当你有数据不小心遗失, 或者是因为你误杀了某个软件的档案,或者是不小心不知道修改到某一个软件的档案内容, 就用这个简单的方法来验证一下原本的文件系统吧!
- rpm -Va
- rpm -V 已安装的软件名称
- rpm -Vp 某个 RPM 档案的档名
- rpm -Vf 在系统上面的某个档案
- -V :后面加的是软件名称,若该软件所含的档案被更动过,才会列出来;
- -Va :列出目前系统上面所有可能被更动过的档案;
- -Vp :后面加的是文件名,列出该软件内可能被更动过的档案;
- -Vf :列出某个档案是否被更动过~
- 例:[root@www ~]# rpm -Vf /etc/crontab
- ..5....T c /etc/crontab
- 前面的八个信输出说明:
- S :(file Size differs) 档案的容量大小是否被改变
- M :(Mode differs) 档案的类型或档案的属性 (rwx) 是否被改变?如是否可执行等参数已被改变
- 5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
- 5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
- L :(readLink(2) path mis-match) Link 路径已被改变
- U :(User ownership differs) 档案的所属人已被改变
- G :(Group ownership differs) 档案的所属群组已被改变
- T :(mTime differs) 档案的建立时间已被改变
- 第九个字段说明:
- c :配置文件 (config file)
- d :文件数据文件 (documentation)
- g :鬼档案~通常是该档案不被某个软件所包含,较少发生!(ghost file)
- l :许可证文件 (license file)
- r :自述文件 (read me)
- 数字签名 (digital signature)
- 当你要安装一个 RPM 档案时:
- 首先你必须要先安装原厂释出的公钥档案;
- 实际安装原厂的 RPM 软件时, rpm 指令会去读取 RPM 档案的签章信息,与本机系统内的签章信息比对,
- 若签章相同则予以安装,若找不到相关的签章信息时,则给予警告并且停止安装喔。
- 安装原厂释出的 GPG 数字签名的公钥档案
- locate GPG-KEY或find /etc -name '*GPG-KEY*' --------查找
- rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 ---------安装
- 当你要安装一个 RPM 档案时:
- RPM 反安装与重建数据库 (erase/rebuilddb)
- rpm -e package_name ------删除某个软件
- rpm --rebuilddb ------<==重建数据库
- SRPM 的使用 : rpmbuild
- 利用默认值安装 SRPM 档案 (--rebuid/--recompile)
- rpmbuild [--rebuild --recompile] SRPM包
- --rebuild:『编译』与『打包』的动作,最后会产生 RPM 的档案。
- --recompile:『编译』『打包』并且『安装』
- rpmbuild [--rebuild --recompile] SRPM包
- SRPM 使用的路径与需要的软件 -----需要安装rpm-build-4.2-0.69.i386.rpm包-------806
- 打包自己的RPM软件------------811
- 利用默认值安装 SRPM 档案 (--rebuid/--recompile)
- 利用 yum 进行查询、安装、升级与移除功能
- yum [option] [查询工作项目] [相关参数] 选项
- [option]:主要的选项,包括有:
- -y :当 yum 要等待用户输入时,这个选项可以自动提供 yes 的响应;
- --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径
- [查询工作项目] [相关参数]:这方面的参数有:
- search :搜寻某个软件名称或者是描述 (description) 的重要关键字;
- list :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa;
- info :同上,不过有点类似 rpm -qai 的执行结果;
- provides:依档案去搜寻软件!类似 rpm -qf 的功能!
- 列出目前服务器上可供本机进行升级的软件有哪些?
- [root@www ~]# yum list updates
- [option]:主要的选项,包括有:
- 安装/升级功能:yum [install|update] 软件
- yum [option] [查询工作项目] [相关参数]
- install :后面接要安装的软件!
- update :后面接要升级的软件,若要整个系统都升级,就直接 update 即可
- yum [option] [查询工作项目] [相关参数]
- 移除功能:yum [remove] 软件
- yum remove pam-devel
- yum 的配置文件
- vi /etc/yum.repos.d/CentOS-Base.repo
- 内容说明:
- [base]:代表容器的名字!中刮号一定要存在,里面的名称则可以随意取。但是不能有两个相同的容器名称, 否则 yum 会不晓得该到哪里去找容器相关软件列表档案。
- name:只是说明一下这个容器的意义而已,重要性不高!
- mirrorlist=:列出这个容器可以使用的映射站台,如果不想使用,可以批注到这行;
- baseurl=:这个最重要,因为后面接的就是容器的实际网址! mirrorlist 是由 yum程序自行去捉映像站台, baseurl 则是指定固定的一个容器网址!当你要找容器所在网址时, 最重要的就是该网址底下一定要有个名为 repodata 的目录存在
- enable=1:就是让这个容器被启动。如果不想启动可以使用 enable=0 喔!
- gpgcheck=1:还记得 RPM 的数字签名吗?这就是指定是否需要查阅 RPM 档案内的数字签名!
- gpgkey=:就是数字签名的公钥文件所在位置!使用默认值即可
- yum [option] [查询工作项目] [相关参数] 选项
- 修改容器产生的问题与解决之道
- yum clean [packages|headers|all]
- packages:将已下载的软件档案删除
- headers :将下载的软件文件头删除
- all :将所有容器数据都删除!
- yum clean [packages|headers|all]
- yum 的软件群组功能
- yum [群组功能] [软件群组]
- grouplist :列出所有可使用的『套件组』,例如 Development Tools 之类的;
- groupinstall:这个好用!可以安装一整组的套件群组,相当的不错用!
- groupremove :移除某个套件群组;
- yum [群组功能] [软件群组]
- 全系统自动升级
- vim /etc/crontab
- 0 3 * * * root /usr/bin/yum -y update
rpm 安装时常用的选项与参数说明
可下达的选项 | 代表意义 |
--nodeps |
使用时机:当发生软件属性相依问题而无法安装,但你执意安装时 危险性: 软件会有相依性的原因是因为彼此会使用到对方的机制或功能,如果强制安装而不考虑软件的属性相依, 则可能会造成该软件的无法正常使用! |
--replacefiles |
使用时机: 如果在安装的过程当中出现了『某个档案已经被安装在你的系统上面』的信息,又或许出现版本不合的讯息 (confilcting files) 时,可以使用这个参数来直接覆盖档案。 危险性: 覆盖的动作是无法复原的!所以,你必须要很清楚的知道被覆盖的档案是真的可以被覆盖喔!否则会欲哭无泪! |
--replacepkgs | 使用时机: 重新安装某个已经安装过的软件!如果你要安装一堆 RPM 软件档案时,可以使用 rpm -ivh*.rpm ,但若某些软件已经安装过了, 此时系统会出现『某软件已安装』的信息,导致无法继续安装。此时可使用这个选项来重复安装喔! |
--force | 使用时机:这个参数其实就是 --replacefiles 与 --replacepkgs 的综合体! |
--test |
使用时机: 想要测试一下该软件是否可以被安装到使用者的 Linux 环境当中,可找出是否有属性相依的问题。 范例为:rpm -ivh pkgname.i386.rpm --test |
--justdb | 使用时机: 由亍 RPM 数据库破损或者是某些缘故产生错误时,可使用这个选项来更新软件在数据库内的相关信息。 |
--nosignature | 使用时机: 想要略过数字签名的检查时,可以使用这个选项。 |
--prefix 新路径 | 使用时机: 要将软件安装到其他非正规目录时。举例来说,你想要将某软件安装到 /usr/local 而非正规的/bin, /etc 等目录, 就可以使用『 --prefix /usr/local 』来处理了。 |
--noscripts |
使用时机:不想让该软件在安装过程中自行执行某些系统指令。 说明: RPM 的优点除了可以将档案放置到定位之外,还可以自动执行一些前置作业的指令,例如数据库的初始化。 如果你不想要让 RPM 帮你自动执行这一类型的指令,就加上他吧! |