linux RPM、YUM
- 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 帮你自动执行这一类型的指令,就加上他吧! |
linux RPM、YUM的更多相关文章
- Linux RPM、YUM、APT包管理工具
⒈rpm包的管理 1)介绍 rpm是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager(RedH ...
- Linux下常用的3种软件安装方式—rpm、yum、tar
一:Linux源码安装 1.解压源码包文件 源码包通常会使用tar工具归档然后使用gunzip或bzip2进行压缩,后缀格式会分别为.tar.gz与.tar.bz2,分别的解压方式: ...
- 8、Linux基础--rpm、yum、yum私有仓库、系统优化
笔记 1.晨考 1.文件的三种时间属性,每一种时间属性在什么情况下改变 atime : 访问时间 mtime :修改时间 ctime :修改属性时间 2.权限的类型 可读(r, 4) 可写(w, 2) ...
- Linux软件包安装(rpm、yum、apt-get)
转载自:https://blog.csdn.net/wzq__janeGreen_/article/details/81774924 rpm/yum适用于Redhat.CentOS.Suse等平台: ...
- Linux思维导图之rpm、yum、编译
yum安装失败: 1.yum client 路径指向不正确:2.yum server 缓存未清理(yum clean all;yum makecache):3.网络不连通
- Linux RPM、TAR包管理
一.RPM软件包命令的使用 RPM主要有5种基本操作模式:安装.卸载.刷新.升级及查询.下面分别介绍. 1.安装软件包 命令语法: rpm -ivh [RPM包文件名称] 命令中各参数的含义如下: - ...
- 程序包管理rpm、yum与简单编译安装程序
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...
- CentOS系统程序包管理器【rpm、yum】
将编译好的文件打包成一个或有限的几个文件,可用于实现便捷的安装.卸载.升级.查询,校验等程序管理. centos常用的程序管理器有rpm和yum rpm: redhat package manager ...
- CentOS 7上的程序管理:rpm、yum和源码编译安装
简介 在Linux的早期时代(也许吧?我猜的.也可能是Unix.),想要在系统上安装一款应用程序,是比较复杂的.需要专业的人员自行获取程序的源代码,并且编译安装,这是非常的复杂且需要一定的专业功底的, ...
随机推荐
- HTML元素事件
事件触发模型 简要说明 onclick 鼠标单击链接 ondbclick 鼠标双击链接 onmousedown 鼠标在链接的位置按下 onmmouseout 鼠标移出链接所在的位置 onmouseov ...
- Unity3d程序运行的时候在unity3d标志哪里进不去的原因
我那个去,居然是有两个error..我郁闷了,unity编译器有error居然也能打包能apk.我真是醉了.搞了我几个小时.
- messagePaneHost
Microsoft.Dynamics.Framework.UI.WinForms.Controls.MessageBarType messageBarType; super(); imageList ...
- (Hibernate进阶)Hibernate映射——一对一双向关联映射(六)
上一篇博客我们介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份证端加载人得信息.如图所示: 关键原因在于对象模型具有方向性: 单向: ...
- session的常用方法。
void setAttribute(String attribute, Object value) 设置Session属性.value参数可以为任何Java Object.通常为Java Bean.v ...
- STL之序列容器deque
首先看看deque的模板声明: template <class T, class Alloc = allocator<T>> // 原本还有个参数BufSize,现在新版本 ...
- myeclipse中将整块的代码所选中的代码左右移动的快捷键
myeclipse中将整块的代码/所选中的代码左右移动的快捷键选择你要移动的代码,TAB 右移ctrl+TAB左移(我的使用Shift+TAB管用)要是不使用快捷键就是:选中代码,点击右键选中Shif ...
- 在linux下写一只优雅的爬虫---优雅的获取沈航所有学生的个人信息
一:ubuntu下安装python集成环境pycharm以及免费激活 安装 首先去下载最新的pycharm 2016.2.3,进行安装.可以直接在官网下载.选择自己所对应的版本 PyCharm 的激活 ...
- java正则随笔
一.string校验 要求字符串只能输入数字,字母大小写和‘@‘’‘.’‘_’三个特殊字符 public static boolean check1(String str){ String patte ...
- HP_UX系统批量创建LV或raw设备的Shell 脚本
mkdir /dev/yjfsvg02 #创建lvm v2.0的VG,PE Size=64MB,不需要执行mknod创建group文件了.vgcreate -V 2.0 -s 64 -S 10t /d ...