运维笔记10 (Linux软件的安装与管理(rpm,yum))

概述:用rpm安装和管理软件(rpm解决依赖性),用yum安装与管理软件(yum解决依赖性)。

1.linux的软件

linux可以说是一款改变时代的操作系统,但是一个操作系统再优秀如果没有好用的应用跑在上面,也不会流行起来,严格意义上讲操作系统也是软件,是系统软件。1991年linux系统诞生了,但是在他诞生之前有很多优秀的程序员参加了GNU计划,编写了很多“自由”软件。

GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU
General Public License,GPL)。即“反版权”(或称Copyleft)概念。(此段摘抄自百度文库)

我们现在所熟知的linux发行版都是基于GNU计划的,也就是说Linux也是一款GNU计划的软件,只是他比较特殊,是所有GNU软件的运行平台,所以也把Linux称为GNU/Linux。

2.软件名称

[google-chrome-stable]-[21.0.1180.89]-[154005].[x86_64].[rpm]
<span style="white-space:pre">	</span>(1)<span style="white-space:pre">		</span>     (2)<span style="white-space:pre">	</span> (3)<span style="white-space:pre">	</span> (4)<span style="white-space:pre">	</span> (5)

(1)软件的名称

(2)软件的版本

(3)软件发布的次数

(4)适合的硬件平台,可以通过arch命令查询

(5)rpm格式表示红帽的软件包,全称为red hat Package Manager,如果是debian系列的系统软件包的后缀名为deb。

3.rpm命令的讲解

1)rpm命令

rpm -ivh name.rpm##-i表示安装,-v显示过程,-h指定加密方式为hash加密

rpm -e softname##卸载

rpm -ql softname##查询这个软件产生的文件

[[email protected] yum]# rpm -ql net-tools
/bin/netstat
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-diag
/sbin/mii-tool
/sbin/nameif
。。。(省略过多的文件)

rpm -qlp name.rpm ##系统安装这个包后会产生哪些文件(显示结果同上一个命令)

rpm -qa ##查询系统中安装的所有软件的名称(是软件不是软件包)

lzo-2.06-6.el7_0.2.x86_64
perl-Socket-2.010-3.el7.x86_64
ethtool-3.15-2.el7.x86_64
perl-Time-HiRes-1.9725-3.el7.x86_64
hostname-3.13-3.el7.x86_64
perl-Scalar-List-Utils-1.27-248.el7.x86_64
keyutils-libs-1.5.8-3.el7.x86_64
perl-Pod-Simple-3.28-4.el7.noarch
p11-kit-trust-0.20.7-3.el7.x86_64
perl-File-Path-2.09-2.el7.noarch
gettext-libs-0.18.2.1-4.el7.x86_64
。。。(省略过多的文件)

rpm -qa | grep name  ##查询软件是否安装

比如我想查询我有没安装http服务器这个软件

[[email protected] yum]# rpm -qa | grep httpd
<span style="color:#ff0000;">httpd</span>-tools-2.4.6-31.el7.x86_64
<span style="color:#ff0000;">httpd</span>-2.4.6-31.el7.x86_64

根据结果我确实安装了这个软件

rpm -q ##查询这个软件是否安装

rpm -qp name.rpm##查询软件包安装后软件的名字

-qf    ##查看filename属于哪个安装包

<span style="font-size:18px;">[[email protected] yum]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
[[email protected] yum]# rpm -qf /usr/bin/ls
coreutils-8.22-11.el7.x86_64
</span>

-ivh name.rpm --forece   ##强制安装

-qi
##查询软件的信息

-Kv name.rpm
##检测软件包是否被篡改(比如你在网上找到了一个第三方软件包,一定要先检测一下,是否被人篡改过)

-qp name.rpm --scripts##检测软件在安装或卸载过程中执行的动作(检测这个软件包是否被篡改还放心的话,可以执行这个个参数,看下在安装和卸载这个文件后,他所执行的脚本是否有害)

-qc ##查看这个软件的配置文件

-qd ##查看这个软件的所有说明文件

2)rpm的缺陷

其实也不能说是rpm的缺陷,作为一个软件安装工具,只要能很好的安装软件已经足够了,但是有时候我们找到一个rpm包后并不能直接安装上他,那时因为在开发这个软件时,他可能需要一些别的软件来支持,比如MP3播放器,你前提一定要有声卡驱动,就像这样的关系叫做软件的依赖关系。我们来看个实际的例子:

[[email protected] yum]# rpm -ivh google-chrome-stable-21.0.1180.89-154005.x86_64.rpm
警告:google-chrome-stable-21.0.1180.89-154005.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID ff6382fa: NOKEY
错误:依赖检测失败:
	lsb >= 4.0 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要
	libatk-1.0.so.0()(64bit) 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要
	libgconf-2.so.4()(64bit) 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要
	libXss.so.1()(64bit) 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要
	libXcomposite.so.1()(64bit) 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要
	libXfixes.so.3()(64bit) 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要
	wget 被 google-chrome-stable-21.0.1180.89-154005.x86_64 需要

我们想用rpm直接安装谷歌的rpm包,但是发现没有成功,看了报错信息后发现,google浏览器需要很多的其他库或文件支持,导致我们不能安装。但是rpm只是将这个情况说明了一下,并且停止你的安装,并没有解决你的问题,当然你要是暴脾气想直接安装也可以,加上前面提到的--force参数,但是安装后的软件那也肯定会发生很奇怪的问题。基于这些问题,出现了yum这种前端软件包管理器,他不只是可以发现依赖关系问题,还能解决这个问题。

4.yum(Yellow dog Updater, Modified)

yum是上层软件管理工具,最重要的功能是可以解决软件的依赖关系。但是想让yum投入使用是我们必须拥有yum源,但是红帽系统的官方镜像源是收费的,我们以学习为目的可以先使用Centos的yum源或自己搭建。

1)yum 的client端配置

/etc/yum.repos.d/*.repo##仓库指向文件的位置(用来指定我们的yum源在哪里)

配置格式:

[xxxx] ##自定义仓库的名称

name=yyyy ##自定义的仓库描述

baseurl=[protocol]://地址##用来填写yum源的地址,可以是本地file://,可以是ftp服务ftp://,可以是http服务http://。

gpgcheck=0 ##gpg是软件的出品logo是一种非对称加密用于检验软件是否属于官方源(不是第三方软件),为0时为检测,为1时为不检测。

enabled=1 ##是否启动这个yum源

例子:

[base]
name=localsoft
baseurl=http://192.168.1.201/yum
gpgcheck=0
enabled=1

修改完成后使用,清空yum缓存

yum clean all更新yum的配置。

2)yum的服务端配置

2.1)获得与你系统版本相应的镜像文件,比如我的事企业7,那么就是rhel-server-7.1-x86_64-dvd.iso。

2.2)将这个镜像挂载到一个目录下

mount /iso/rhel-server-7.1-x86_64-dvd.iso /yum

2.3)修改仓库指向文件

[base]
name=localsoft
baseurl=file:///yum
gpgcheck=0
enabled=1

2.4)清空yum缓存

yum clean all

2.5)开机自动挂载,将镜像自动挂载到/yum

vim /etc/rc.d/rc.local(切记在添加完开机需要启动的命令后给这个文件加上执行权限,这是企业7处于安全考虑去掉了他的执行权限,如果不去掉执行权限,那么写在这个文件下的命令也不会运行)

添加

mount /iso/rhel-server-7.1-x86_64-dvd.iso /yum

这样本地yum源就配置好了

3)http服务的yum源

你一定想知道网络上的yum源是如何配置的现在我就示范一下:

3.1)首先下载资源共享服务http服务

yum install httpd -y

systemctl stop firewalld.service

systemctl disable firewalld.service

systemctl start httpd

systemctl enable httpd

3.2)在/var/www/html/ 下建立一个共享目录test

将镜像挂载到上面

3.3)修改仓库指向文件

[base]
name=localsoft
baseurl=http://本机ip/test
gpgcheck=0
enabled=1

在浏览器中输入:http://本机ip/test   测试一下。

4)建立第三方yum源

刚才我们建立的yum源都是基于镜像文件的,也就是说官方都已经给做好的,但是如果我们自己找到了很多好用的第三方软件包也想建立一个Yum源怎么办呢?就要自己建立第三方库。

将收集好的rpm包放在一个文件夹下(这个文件夹下一定要全是rpm包)。

createrepo -v 当前目录,当前目录就变成了一个yum源目录。

再使用之前的方式将仓库指向文件修改为这个目录,就可以用啦。

5)yum命令的详细解释

yum  install  softawarename
##安装

repolist##列出设定的yum源信息

Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id                                    repo name                                status
!redhatsoftware                            localsoftware                            4,371
repolist: 4,371

removesoftwarename##卸载

listsoftwarename##查看软件源中是否有此软件,可以不输入软件的全部名字,它会自动匹配到的。

list
all ##列出所有软件

yajl.x86_64                                                                                       2.0.4-4.el7                                                                     base
yelp.x86_64                                                                                       1:3.8.1-7.el7                                                                   base
yelp-libs.i686                                                                                    1:3.8.1-7.el7                                                                   base
yelp-libs.x86_64                                                                                  1:3.8.1-7.el7                                                                   base
                                                                                    2.31

省略。。。

listinstalled##列出已安装的软件名称

listavailable##列出可以用yum安装的软件名称

clean all##清空yum缓存

search softwareinfo##根据软件信息搜索软件名字

[[email protected]+2 ~]# yum search gcc
已加载插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
====================================================================================== N/S matched: gcc =======================================================================================
gcc-c++.x86_64 : C++ support for GCC
gcc-gnat.x86_64 : Ada 95 support for GCC
gcc-objc.x86_64 : Objective-C support for GCC
gcc-objc++.x86_64 : Objective-C++ support for GCC
libgcc.i686 : GCC version 4.8 shared support library
libgcc.x86_64 : GCC version 4.8 shared support library
。。。。省略

  名称和简介匹配 only,使用“search all”试试。

可以看出,这个搜索是将和yum源中软件名称或者信息有一致的话就进行匹配。

whatprovides filename##在yum源中查找包含filename文件的软件,这个命令经常使用,加入我们使用最小安装,装了一台电脑发现他缺少很多常用命令,比如ifconfig。

[[email protected]+2 ~]# yum search ifconifg
已加载插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
警告:没有匹配 ifconifg 的软件包
No matches found

根据软件名字和简介无法找到含有ifconfig的软件,这时这个命令就有用了

[[email protected]+2 ~]# yum whatprovides */ifconfig
已加载插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
net-tools-2.0-0.17.20131004git.el7.x86_64 : Basic networking tools
源    :base
匹配来源:
文件名    :/sbin/ifconfig

net-tools-2.0-0.17.20131004git.el7.x86_64 : Basic networking tools
源    :@base
匹配来源:
文件名    :/sbin/ifconfig

一下子我们就看到了我们需要的ifconfig命令是来自net-tools这个软件包的,接下来我们只要安装这个软件包就好了。

update##更新软件,什么都不加的话它会更新几乎一切可以更新的软件,包括内核,所以慎重使用。

history##查看软件改变历史,只包括安装和卸载

[[email protected]+2 ~]# yum history
已加载插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
ID     | 登录用户                 | 日期和时间       | 操作           | 变更数
-------------------------------------------------------------------------------
     6 | root <root>              | 2016-10-24 15:43 | Erase          |    1
     5 | root <root>              | 2016-10-23 22:18 | Install        |    3
     4 | root <root>              | 2016-10-23 20:13 | Install        |    5
     3 | root <root>              | 2016-10-23 20:13 | Install        |    1
     2 | root <root>              | 2016-10-23 20:11 | Install        |   31
     1 | 系统 <空>                | 2016-10-23 19:10 | Install        |  324
history list

可以看出,进行了很多次的安装操作,最近一次做了删除操作。

reinstall softwarename##重新安装软件

info softwarename##查看软件信息

[[email protected]+2 ~]# yum info net-tools
已加载插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
已安装的软件包
名称    :net-tools
架构    :x86_64
版本    :2.0
发布    :0.17.20131004git.el7
大小    :917 k
源    :installed
来自源:base
简介    : Basic networking tools
网址    :http://sourceforge.net/projects/net-tools/
协议    : GPLv2+
描述    : The net-tools package contains basic networking tools,
         : including ifconfig, netstat, route, and others.
         : Most of them are obsolete. For replacement check iproute package

groupslist##查看软件组信息,这些包是整合好的,安装后就可以进行一些工作的,比如web服务器需要的php,mysql,apache等

Maybe run: yum groups mark convert (see man yum)
Available environment groups:
   最小安装
   基础设施服务器
   文件及打印服务器
   基本网页服务器
   虚拟化主机
   带 GUI 的服务器
可用组:
   传统 UNIX 兼容性
   兼容性程序库
   图形管理工具
   安全性工具
   开发工具
   控制台互联网工具
   智能卡支持
   科学记数法支持
   系统管理
   系统管理工具
完成

groupsinfosoftwaregroup##查看软件组内包含的软件,这个命令可以查看一个软件组中的软件的安装情况

[[email protected]+2 ~]# yum groups info Input*
已加载插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

组:输入法
 组编号:input-methods
 描述:输入国际文本的软件。
 默认的软件包:
   +ibus-chewing
   +ibus-hangul
   +ibus-kkc
   +ibus-libpinyin
   +ibus-m17n
   +ibus-rawcode
   +ibus-sayura
   +ibus-table
   +ibus-table-chinese
   +m17n-contrib
   +m17n-db
 可选的软件包:
   ibus-typing-booster
   iok
 可能的软件包:
    gtk2-immodule-xim
    gtk3-immodule-xim
    ibus-gtk2
    ibus-gtk3
   +ibus-qt
    imsettings-gsettings
   +imsettings-qt

其中+表示没有安装,但是会在下次执行“yum upgrade”or"yum group upgrade foo"后安装。前面什么也没有的表示已经安装但是不是通过group安装的方式安装的。有时候还会看到=号,表示已经安装,而且通过groups的方式安装的。

groupsinstallsoftwaregroup##安装组件

groups removesoftwaregroup##卸载组件

我这最后还有一个问题,当你使用yum groups list 时发现他所显示的组包并不全。

[[email protected]+2 ~]# yum group list
已加载插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Available environment groups:
   最小安装
   基础设施服务器
   文件及打印服务器
   基本网页服务器
   虚拟化主机
   带 GUI 的服务器
Installed groups:
   安全性工具
   系统管理工具
可用组:
   传统 UNIX 兼容性
   兼容性程序库
   图形管理工具
   开发工具
   控制台互联网工具
   智能卡支持
   科学记数法支持
   系统管理
完成
[[email protected]+2 ~]# yum groups info Input*
已加载插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

组:输入法
 组编号:input-methods
 描述:输入国际文本的软件。
 默认的软件包:
   +ibus-chewing
   +ibus-hangul
   +ibus-kkc
   +ibus-libpinyin
   +ibus-m17n
   +ibus-rawcode
   +ibus-sayura
   +ibus-table
   +ibus-table-chinese
   +m17n-contrib
   +m17n-db
 可选的软件包:
   ibus-typing-booster
   iok
 可能的软件包:
    gtk2-immodule-xim
    gtk3-immodule-xim
    ibus-gtk2
    ibus-gtk3
   +ibus-qt
    imsettings-gsettings
   +imsettings-qt

你看这个Input-method就没有在一开始显示出来,那么我们怎样找到呢?

时间: 2024-10-27 13:59:18

运维笔记10 (Linux软件的安装与管理(rpm,yum))的相关文章

Linux系统运维笔记(二),Linux文件编辑命令

Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令模式. 在命令模式的情况下,我们按:,进入到了末行模式. 输入wq!,然后回车,强行保存退出. q! [强制退出不保存]q[退出不保存]wq[退出并保存后面也可以加个!] vi /etc/centos-release 查看centos系统版本 原文地址:https://www.cnblogs.com

通哥运维笔记之Linux系统管理问题总结(一)

问题一, 创建新用户xuetong,用该用户登陆报错如下: [[email protected] ~]# su - xuetong id: cannot find name for user ID 504 id: cannot find name for group ID 504 id: cannot find name for user ID 504 [I have no [email protected] ~]$ 并且显示I have no name! 解决:由于/etc/passwd 和/

通哥运维笔记之Linux下安装JDK

java安装: linux中java的安装步骤: 1,下载jdk1.6.0 链接:wget http://down1.chinaunix.net/distfiles/jdk-6u18-dlj-linux-i586.bin 2,安装jdk: 将jdk下载到相关目录,如:usr/local/ 执行安装:./jdk-6u18-dlj-linux-i586.bin 进入jdk目录:cd /usr/local/jdk1.6.0_18 3,配置java环境变量:vi /etc/profile 在profil

通哥运维笔记之Linux系统管理问题总结(二)

问题八 启动Apache报错: [Sun Dec 27 11:28:26 2009] [alert] (EAI 2)Name or service not known: mod_unique_id: unable to find IPv4 address of "vm85.bc.com″ Configuration Failed 在/etc/hosts中添加: 127.0.0.1 vm85.bc.com 问题九 启动tomcat报错: [[email protected] conf]# serv

运维笔记之Linux系统管理(一)

1,账户管理: 账户的添加: 添加用户名,设置密码(useradd,passwd):添加组(groupadd):将某用户加入某组(usermod -G): 创建用户,并指定主目录(useradd -d ) 将某用户同时添加到两个组(usermod -G group1,group2 user);查看某用户属于某组(groups); 查看group.passwd.shadow.gshadow使用命令:例:cat /etc/grouop或者tail -1(2.3.4...) /etc/group 或者

运维神器Chef简单介绍和安装笔记

首先大概解释一下Chef Chef有三个重要的概念:(如上图所示) 它们的合作关系大致是这样的, Workstation把资源或者说是一些要被运行的命令上传到Chef-Server上, Nodes自动通过Chef-Server拿到属于自己的执行任务到本地执行,这样可达到一个将军指挥千军万马的效果:smirk:. Chef Server 存放所有通过Workstation上传的资源,和用户等公共数据(用PostgreSQL). 可以干脆叫它为资源服务器,大家都可以与它通讯(用RabbitMQ ),

hadoop-3.0.0-beta1运维手册(003):安装全分布式HDFS3.0.0-准备软件

3.1 准备软件 HDFS是Hadoop的一个组件,它并没有单独发布,因此,我们需要下载Hadoop的安装包. 1. 下载Hadoop3.0.0-beta1,保存到d:\hdfs3\soft 3-1 Hadoop存储路径图 有关beta1版本的介绍:它是API稳定的版本,但不保证质量,并且不打算用于生产环境.因此,此版本可以用来提前学习,待stable版本出来后,可以直接替换上生产环境. 2. 下载JDK Hadoop是用java编写的,JDK提供了java程序的运行环境,因此,需要下载JDK.

python运维笔记第一节

python 基础 公开发布时间1991年 是一种面向对象.解释型计算机程序设计语言由Guido van Rossum于1989年发明第一个公开发行版发行于1991年.   优点 简单                                                    Python是一种代表简单主义思想的语言. 易学                                                    Python极其容易上手因为Python有极其简单的说明文档

51CTO持续更新《通哥的运维笔记》

<通哥的运维笔记>将持续在51CTO网站更新,希望大家多多关注.互相学习,后期,我将会退出<通哥的运维笔记>系列视频教程,希望带给大家最大的收获,帮助大家更好的学习.进步.<通哥的运维笔记>主要从linux系统管理.虚拟化.cloudstack云平台以及网络管理之CCNA.CCNP.CCIE,等等方面深入讲解.