六、软件安装

rpm

RPM软件包的管理工具

补充说明

rpm命令 是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。

初始化rpm数据库

通过rpm命令查询一下rpm包是否安装了,也是要通过rpm数据库来完成的;所以我们要经常用下面的两个命令来初始化rpm数据库;

rpm --initdb

rpm --rebuilddb

语法

rpm(选项)(参数)

选项

-a:查询所有套件;

-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;

-c:只列出组态配置文件,本参数需配合"-l"参数使用;

-d:只列出文本文件,本参数需配合"-l"参数使用;

-e<套件档>或--erase<套件档>:删除指定的套件;

-f<文件>+:查询拥有指定文件的套件;

-h或--hash:套件安装时列出标记;

-i:显示套件的相关信息;

-i<套件档>或--install<套件档>:安装指定的套件档;

-l:显示套件的文件列表;

-p<套件档>+:查询指定的RPM套件档;

-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;

-R:显示套件的关联性信息;

-s:显示文件状态,本参数需配合"-l"参数使用;

-U<套件档>或--upgrade<套件档>:升级指定的套件档;

-v:显示指令执行过程;

-vv:详细显示指令执行过程,便于排错。

参数

软件包:指定要操纵的rpm软件包。

实例

1.查询已经安装的软件

语法:rpm -q 软件名

rpm -q gaim

rpm -qa

rpm -qa |more

rpm -qa |grep install

2.查询一个已经安装的文件属于哪个软件包

语法:rpm -qf 文件名 注意:文件名所在的绝对路径要指出举例

rpm -qf /usr/lib/grub

3.查询已安装软件包都安装到何处

语法:rpm -ql 软件名 或 rpm rpmquery -ql 软件名

rpm -ql lynx

rpmquery -ql lynx

4.查询一个已安装软件包的信息

语法:rpm -qi 软件名

rpm -qi lynx

5.查看一下已安装软件的配置文件

语法:rpm -qc 软件名

rpm -qc lynx

6.查看一下已经安装软件的文档安装位置

语法:rpm -qd 软件名

rpm -qd lynx

7.查看一下已安装软件所依赖的软件包及文件

语法:rpm -qR 软件名

rpm -qR rpm-python

RPM 命令#

我们可以直接使用rpm命令,对软件包进行一些操作。

安装#

Copy

rpm –ivh <package_name>

rpm –Uvh <package_name> # 没有安装过,则安装

rpm –Fvh <package_name> # 没有安装过,则忽略

-nodeps 忽略依赖问题,一般仅用于测试

-i install;

-v 详细信息;

-h 以安装信息栏显示安装进度;

--test 可以测试是否有属性依赖问题

卸载#

Copy

rpm –e <package_name> # 有其它包依赖此RPM包时,卸载会报错

升级#

升级时使用-ivh会提示文件冲突

rpm –Uvh <package_name> 没有安装过,则安装

rpm –Fvh <package_name> 没有安装过,则忽略

查找#

rpm -q[licdR] 已安装的软件名

rpm -qp[licdR] 未安装的文件名称,注意,这里查看的前提是你本地有一个这个未安装的软件包

rpm -qf 存在于系统的某个文件名

参数:

查询已安装软件的信息:

-q 判断软件是否已安装 rpm -q mock,如果安装了,那么会列出该包的全名

-qa 列出所有的已安装在本机上的软件名称

-qi 列出软件的详细信息,开发商、版本等

-ql 列出该软件的所有文件与目录

-qc 列出该软件的所有配文件(找出在 /etc 下面的目录名而已)

-qR 列出与该软件有关的依赖软件及文件,注意了,这里不只是列出了依赖的软件

-qf 找出与后面接的文件所属哪个软件,注意文件名要「绝对路径」,例如rpm -qf /bin/rz

非已安装软件:

-qp[icdlR] 用途差不多,但是并非已安装的软件信息,比如本地有个软件 filename.x86_64.rpm,可以 rpm -qpR ./filename.x86_64.rpm。

验证#

对已安装的包进行文件校验:

Copy

rpm –V <package_name>

rpm -Vp <rpm_file>

rpm -Va

导入key:

rpm --import <RPM_KEY>

在包安装之前进行签名校验:

Copy

rpm -K <rpm_>file

重建数据库#

RPM 数据库存储在 /var/lib/rpm 内,如果文件损坏,可以重建:

Copy

rpm –rebuilddb 解决系统RPM数据库的异常

YUM 命令#

yum 其实是透明的调用 rpm,相当于在 rpm 基础上封装的更易使用的“前端”。

它主要设计来解决软件包之间的依赖性,并可从多个资源库(我们称之为“源”,典型的由 /etc/yum.repos.d/ 目录下的每个 .repo 文件定义)。

源制作#

createrepo

一般的 CentOS 系的 ISO 镜像中,都带有安装时使用的rpm包。可以将这部分文件mount到本地,创建本地源,以减少软件安装时的上网下载。

例如,你在一个有 RPM 包的文件夹下,就可以执行 createrepo . 命令,然后你的 REPO 配置一个本地源也是 OK 的。

安装#

Copy

yum install <package_name>[-<version_info>] -y

yum localinstall <rpm_file> 本地安装

yum groupinstall <group_name> 组安装

升级#

Copy

yum update [package_name]

降级#

Copy

yum downgrade <package_name>-<version_info>

卸载#

Copy

yum remove/erase <package_name>

谨慎使用: 此命令会卸载掉所有依赖此包的RPM包

查找#

Copy

yum search <pkg_name> # 搜索相关软件

yum list # 列出目前 yum 管理的所有软件 注意,这里包含了未安装的软件

yum list 以及相关的一些命令则能够为你提供有关软件包、软件包集和软件仓库的信息。所有的 yum list 命令都能够使用 glob 表达式作为参数,对输出结果进行过滤。在 glob 表达式中,你可以使用 * 代表任何数量个字符,使用 ? 代表任何一个字符。

Copy

yum list <glob_expr> [more_glob_exprs] 列出所有符合 glob 表达式的软件包

yum list all 列出所有已安装的和可用的软件包

yum list installed 列出所有已经安装在系统中的软件包。输出结果的最右边一列是取得该软件包的软件仓库。标识为 installed 的软件包则说明它是做为系统基本组件而预安装的。

yum list available 列出所有启用的软件仓库中可用的软件包

yum list --showduplicates |grep nginx |sort 这样就会显示启用的 YUM 源中 nginx 的所有版本,而不是最新版本

yum grouplist 列出所有软件包组

yum repolist [-v] 列出所有启用的软件仓库的 ID,名称 及其包含的软件包的数量

本地缓存相关#

Copy

yum clean all 清除本地缓存

yum makecache 只做本地缓存

yum history

查看 Yum 事务完整的历史记录。

Copy

info 命令查看涉及指定软件包的事务详情

yum history info httpd

其他#

使用yum info <package_name> [more_names]命令可查看一个或多个软件包的信息 (此处同样可以应用 glob 表达式)。

yum provides  这个命令左右和 rpm -qf 挺类似,有用的一个命令,例如 yum provides /usr/bin/mock

依赖包下载研究#

利用 downloadonly 下载#

这种方式可能需要先安装 downloadonly 插键才行,不过我发现,我没安装就有了。

Copy

yum install --downloadonly --downloaddir=/tmp/yums/ nginx

如果主机上已经安装了 nginx,那么这个命令貌似并不会把 nginx 等相关依赖包下载下来。只有当主机上没有安装 nginx 包时,这个下载才会 OK。

利用这个命令,你可以一次下载多个包的依赖包的:

Copy

yum install --downloadonly --downloaddir=/root/mypackages/ httpd-2.2.6-40.el7 vsftpd

利用 yumdownloader 工具#

它可以一次性下载任何 RPM 软件包及其所有依赖包。如果主机上没有这个命令,则需要安装:

Copy

yum install -y yum-utils

下载包的依赖包,并指定存放的目录(如果不指定,就默认下载到当前目录):

Copy

yumdownloader --resolve --destdir=/tmp/yums/ nginx# OR

yumdownloader --resolve --destdir /tmp/yums/ nginx

我发现这个命令和上面 downloadonly 一样的现象,当 nginx 包已经安装在主机上了,它就不会去下载它的依赖包,但是和上面有所区别的是,它还是会把 nginx 这个包下载下来的。

其他#

Copy

repoquery --requires --resolve

Copy

rpmrepater會向用戶顯示已安裝包的列表,你可以使用上/下箭頭來滾動屏幕# 可以在指定包上使用"r"鍵來顯示其依賴關係,循環在指定包上按下"r"鍵可以展示出餘下的信息。# "L"標誌的意思是說這個包是一片“孤葉”,意思說說沒有任何包依賴它。# "o"標誌是說這個包是整個依賴鏈的中間部分。# 按下"b"鍵會顯示其他依賴於該包的其他包。

yum install rpmreaper

rpmreaper

如何查看与rpm包相关的文件和其他信息

下面所有的例子都假设使用软件包mysql-3.23.54a-11

1、我的系统中安装了那些rpm软件包。

rpm -qa 讲列出所有安装过的包

如果要查找所有安装过的包含某个字符串sql的软件包

rpm -qa | grep sql

2、如何获得某个软件包的文件全名。

rpm -q mysql

可以获得系统中安装的mysql软件包全名,从中可以获得当前软件包的版本等信息。这个例子中可以得到信息mysql-3.23.54a-11

3、一个rpm包中的文件安装到那里去了?

rpm -ql 包名

注意这里的是不包括.rpm后缀的软件包的名称,也就是说只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。如果只是想知道可执行程序放到那里去了,也可以用which,比如:

which mysql

4、一个rpm包中包含那些文件。

一个没有安装过的软件包,使用rpm -qlp **** .rpm

一个已经安装过的软件包,还可以使用rpm -ql **** .rpm

5、如何获取关于一个软件包的版本,用途等相关信息?

一个没有安装过的软件包,使用rpm -qip **** .rpm

一个已经安装过的软件包,还可以使用rpm -qi **** .rpm

6、某个程序是哪个软件包安装的,或者哪个软件包包含这个程序。

rpm -qf which 程序名 #返回软件包的全名

rpm -qif which 程序名 #返回软件包的有关信息

rpm -qlf which 程序名 #返回软件包的文件列表

注意,这里不是引号,而是,就是键盘左上角的那个键。也可以使用rpm -qilf`,同时输出软件包信息和文件列表。

7、某个文件是哪个软件包安装的,或者哪个软件包包含这个文件。

注意,前一个问题中的方法,只适用与可执行的程序,而下面的方法,不仅可以用于可执行程序,也可以用于普通的任何文件。前提是知道这个文件名。首先获得这个程序的完整路径,可以用whereis或者which,然后使用rpm -qf例如:

whereis ftptop

ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz

rpm -qf /usr/bin/ftptop

proftpd-1.2.8-1

rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt

proftpd-1.2.8-1

更多实例

库依赖: http://rpmfind.net/

源码包 -> 编译 -> 二进制包(rpm 包 / 系统默认包)

rpm 命名规则: 软件(软件名, 软件版本) + 系统(os 版本, os 位数) rpm 校验: SM5DLUGT -> size modified(类型/权限) md5 device L(文件路径) user group time(modified time)

yum: 解决 rpm 依赖的问题

rpm

mysql57-community-release-el6-8.noarch.rpm # 一个 rpm 包的例子

/var/lib/rpm/ # 包全名 -> 包名 的数据库

rpm -Uivh --dodeps xxx # upgrade install verbose hash

rpm -qilpfa|grep xxx # query info list(rpm包安装后的文件位置) package(rpm 包) file(文件属于哪个rpm文件) all

rpm -e # erase

rpm -V # verify

rpm2cpio | cpio -idv

rpm 默认安装位置

/etc/ 配置文件

/usr/bin/ 可执行文件

/urs/lib/ 程序使用的函数库

/usr/share/doc/ 使用手册

/usr/share/man/ manual

yum

基于RPM的软件包管理器

补充说明

yum命令 是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更新与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

语法

yum(选项)(参数)

选项

-h:显示帮助信息;

-y:对所有的提问都回答“yes”;

-c:指定配置文件;

-q:安静模式;

-v:详细模式;

-d:设置调试等级(0-10);

-e:设置错误等级(0-10);

-R:设置yum处理一个命令的最大等待时间;

-C:完全从缓存中运行,而不去下载或者更新任何头文件。

参数

install:安装rpm软件包;

update:更新rpm软件包;

check-update:检查是否有可用的更新rpm软件包;

remove:删除指定的rpm软件包;

list:显示软件包的信息;

search:检查软件包的信息;

info:显示指定的rpm软件包的描述信息和概要信息;

clean:清理yum过期的缓存;

shell:进入yum的shell提示符;

resolvedep:显示rpm软件包的依赖关系;

localinstall:安装本地的rpm软件包;

localupdate:显示本地rpm软件包进行更新;

deplist:显示rpm软件包的所有依赖关系。

实例

部分常用的命令包括:

自动搜索最快镜像插件:yum install yum-fastestmirror

安装yum图形窗口插件:yum install yumex

查看可能批量安装的列表:yum grouplist

安装

yum install #全部安装

yum install package1 #安装指定的安装包package1

yum groupinsall group1 #安装程序组group1

更新和升级

yum update #全部更新

yum update package1 #更新指定程序包package1

yum check-update #检查可更新的程序

yum upgrade package1 #升级指定程序包package1

yum groupupdate group1 #升级程序组group1

查找和显示

检查 MySQL 是否已安装

yum list installed | grep mysql

yum list installed mysql*

yum info package1 #显示安装包信息package1

yum list #显示所有已经安装和可以安装的程序包

yum list package1 #显示指定程序包安装情况package1

yum groupinfo group1 #显示程序组group1信息yum search string 根据关键字string查找安装包

删除程序

yum remove | erase package1 #删除程序包package1

yum groupremove group1 #删除程序组group1

yum deplist package1 #查看程序package1依赖情况

清除缓存

yum clean packages #清除缓存目录下的软件包

yum clean headers #清除缓存目录下的 headers

yum clean oldheaders #清除缓存目录下旧的 headers

更多实例

yum

/etc/yum.repos.d/ yum 源配置文件

vi /etc/yum.repos.d/nginx.repo # 举个栗子: nginx yum源

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/6/$basearch/

gpgcheck=0

enabled=1

yum mirror

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

wget https://mirror.tuna.tsinghua.edu.cn/help/centos/

yum makecache

添加中文语言支持

LANG=C # 原始语言

LANG=zh_CN.utf8 # 切换到中文

yum groupinstall "Chinese Support" # 添加中文语言支持

大年学习linux(第六节---软件安装)的更多相关文章

  1. python3.4学习笔记(十六) windows下面安装easy_install和pip教程

    python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...

  2. 风炫安全WEB安全学习第二十六节课 XSS常见绕过防御技巧

    风炫安全WEB安全学习第二十六节课 XSS常见绕过防御技巧 XSS绕过-过滤-编码 核心思想 后台过滤了特殊字符,比如说

  3. 风炫安全Web安全学习第十六节课 高权限sql注入getshell

    风炫安全Web安全学习第十六节课 高权限sql注入getshell sql高权限getshell 前提条件: 需要知道目标网站绝对路径 目录具有写的权限 需要当前数据库用户开启了secure_file ...

  4. Linux相关命令及软件安装教程

    @font-face { font-family: "Times New Roman" } @font-face { font-family: "宋体" } @ ...

  5. Linux ssh登录和软件安装详解

    阿哲Style   Linux第一天 ssh登录和软件安装详解 Linux学习第一天 操作环境: Ubuntu 16.04 Win10系统,使用putty_V0.63 本身学习Linux就是想在服务器 ...

  6. Linux学习-->linux系统在移动硬盘的安装

    由于自己看了一些文章和linux的好奇,想来一窥Linux的奥秘,因此自己准备学习使用Linux系统,这里记录下自己的安装过程,方便以后自己重装系统时进行查阅. 参考的书籍是鸟哥的<Linux私 ...

  7. Linux(一) 软件安装

    前言:在Linux中安装软件时,我们经常要考虑到这样几个个问题: (1).怎样安装软件;       (2).软件安装在什么地方;       (3).如何卸载删除不要的软件...... 下面,我们就 ...

  8. linux笔记:linux软件包管理,软件安装位置

    linux软件包简介 软件包分类:1.源码包(用C语言等编写的源代码,没有进行编译):脚本安装包(对源码包进行了安装优化的源码包)优点:开源,可修改可以自由选择所需的功能编译安装,更适合自己的系统,稳 ...

  9. Linux中的各种软件安装

    Linux下的软件形式 Linux上的软件有几种常见的方式 二进制发布包 软件包已经针对具体平台完成了编译和打包,解压后即可以使用,最多去改改配置文件,也是Linux上最通用和常见的软件包发布形式 例 ...

  10. Linux系统 centOS 更换软件安装源

    阿里云Linux安装软件镜像源阿里云是最近新出的一个镜像源.得益与阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源.阿里云Linux安装镜像源地址:http://mirrors.aliyun.c ...

随机推荐

  1. 关于JAVA泛型数组类型擦除引发的问题及解决方案

    先看如下一个DEMO示例代码:(其中doBatchGet被子类重写了1次) public abstract class BaseDemoService<T> { public String ...

  2. Python-wxauto微信自动发送消息或文件

    1.安装wxauto和pyautogui库,pip安装即可. pip install wxauto pip install pyautogui 2.登录电脑微信客户端 这里有两个注意点:(1)不能将客 ...

  3. 计网学习笔记四 Bridge && Switch

    在前面的学习中,我们学习了MAC和LAN.在一个LAN里可以通信是很不错的,我们可以用一些东西让它变得更加不错!那就是我们接下来学习的网桥和交换机,其中包括了一点802.1D机制. Bridge 网桥 ...

  4. ORA-14550错误解决方法

    工作中修改临时表,报错: ---------------------------------- 以SYSDBA身份登录,执行以下语句: select a.sid, a.serial#,        ...

  5. Python之读取Excel

    介绍 现在交给你一份2010年美国各州县人口普查表:censuspopdata.xlsx.共72864条记录. 每一行代表一个县某统计区的人口数. 需要你统计出:各县统计区数量和人口数. 表格内容长这 ...

  6. Unity学习笔记--数据持久化XML文件(1)

    XML相关 Xml是可拓展标记语言,一种文件格式.我们使用xml来完成对数据持久化的存储.等待我们有一程序运行结束之后,将内存中的数据进行保存,(保存在硬盘/服务器)实现对数据的持久化存储. xml文 ...

  7. 亲测CentOS 8.2更换yum源报错Errors during downloading metadata for repository 'epel': - Status code解决办法

    重点 提一件拉胯的事:别去参考阿里和华为云官方镜像上面的解决办法,本人试了几遍,没luan用.拉胯!!!!!!!! 报错具体信息 Errors during downloading metadata ...

  8. 【系统选型】OA需求分析,OA系统选型及各供应商对比。

    去年公司内部做OA信息化升级,需要更新换代一下OA系统,当时OA选型整理下来的资料分享一下. 需求调研整理后如下: 一共四个模块需要更新&升级 :  OA模块(包括行政) + 合同模块 + 费 ...

  9. 【LeetCode贪心#06】加油站(股票买卖变种)

    加油站 力扣题目链接(opens new window) 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 ...

  10. 面试必备:一线大厂Redis缓存设计规范与性能优化

    说在前面 你是否在使用Redis时,不清楚Redis应该遵循的设计规范而苦恼? 你是否在Redis出现性能问题时,不知道该如何优化而发愁? 你是否被面试官拷问过Redis的设计规范和性能优化而回答不出 ...