linux初学者-软件安装与管理篇
在linux的学习和工作中需要安装许多的软件。在redhat的linux操作系统下,软件一般都是rpm格式的。以下将介绍一些软件安装和管理的内容。
1、软件名称
在安装软件时,最基本的是软件名称的识别,以"firefox"软件为例,此软件为:
firefox | - | 38.3.0-2 | . | el7_1 | . | x86_64
其中"firefox"为软件名称,"38.3.0-2"为软件版本,"el7_1"为软件适用系统,"x86_64"表示为64位软件。
2、软件安装
2.1、rpm
"rpm"是一种常用的软件安装和查询命令,其中的参数在软件管理方面有很大的应用。
参数"-ivh"是安装软件的参数,安装软件,"-v"显示过程,"-h"指定加密方式为"hash"。例如安装软件"firefox-24.5.0-1.el7.x86_64.rpm"。
参数"-ivh"在软件名字后加"--force"可以强制安装软件。例如不小心删除"/usr/bin/firefox",则会出现下图情况,并且普通的安装会提示已安装过,此时就需要用到强制安装。
参数"-q | -qa"可以查看软件是否安装,例如查询刚才安装的"firefox"软件,有下图的三种方式。
参数"-ql"可以查看软件安装后生成的文件,如下图是"firefox"在安装后生成的文件。
参数"-qlp"可以在软件安装前查询软件安装后将会生成什么文件,如查询"firefox"在安装前查询将会生成的文件,但是,此参数后面应该加软件全名,即有".rpm"。
参数"-e"可以卸载安装的软件。如图卸载"firefox"软件。
参数"-Kv"可以检测软件包是否被篡改,例如,对比下面前后两图,软件修改后会出现"BAD"。
参数"-qp"可以查询软件安装包安装后的名字,但是软件的名字必须为全名。如图所示,显示"firefox"软件的名字。
如果在参数"-qp"后的软件名字后面加入"--scripts",则可以检测软件在安装或卸载过程中执行的动作。在软件安装前,用此参数检测软件非常有必要,例如,现有"FluffyMcAwesome-A-6.4.0-11.r19335.x86_64.rpm"和"FluffyMcAwesome-B-6.4.0-11.r19335.x86_64.rpm"两个软件,现用参数"-Kv"检测这两个软件,如下图,发现这两个软件都未被篡改。
但是,如果使用"--scripts"后会发现,"FluffyMcAwesome-A-6.4.0-11.r19335.x86_64.rpm"软件在卸载过程时会删除根下所有目录导致系统崩溃,所以在软件安装前使用"-Kv"和"--scripts"很有必要。
参数"-qi"可以查看软件的信息。例如输入"rpm -qi firefox"查询软件"firefox"的信息。
如果知道一个文件,但是不知道它是属于哪个软件安装包在安装时生成的,可以使用参数"-qf"查询。
2.2、yum
"yum"是在软件安装和管理中的另一个常用命令。其中也有很多功能需要通过加入参数来实现。
"install"是安装软件的参数,例如安装软件"gcc"。如果加入"-y"可以让软件自动安装而不用询问是否确定安装。
"repolist"可以列出设定的yum源信息,列入下图,可以看出该yum源总共拥有4305个软件。
"remove"是软件卸载的参数。
"list"可以查看软件源中是否有此软件,例如下图查看是否安装"gcc"。
"list all"是列出所有软件名称的参数,可以看到该yum源下所有的软件。
"list installd"可以列出所有已经安装的软件。
"list available"可以列出尚未安装,但是可以安装的软件名称。
"clean all"是清空yum缓存的参数。
在需要安装软件时,有时并不知道需要安装什么软件,只知道软件的用途等信息,则可以用参数"search"来查看,例如下图,可以来查看check message可以使用哪些软件。该参数也可根据软件名称信息找到软件全名。
和"rpm -qf"类似,参数"whatprovides"也可以根据文件名查找yum源中的软件。
参数"update"可以用来更新软件,"reinstall"可以用来重新安装软件,作用与"rpm -ivh --force"的用途类似。
参数"history"可以软件系统的改变历史。
参数"info"可以显示软件信息。
软件不仅仅单独以一个软件的形式存在,同时在存在着许多的软件组,软件组可以使用以下参数来管理。
"groups list"可以查看软件组中包含的软件。
"groups info"可以查看软件组信息。
"groups install"可以安装软件组, "groups remove"可以卸载软件组,与安装单个软件一致。
3、yum源
虽然在软件的安装过程中有"rpm"和"yum"两种,但是有许多软件有依赖关系,即此软件的安装是需要以其他软件的安装为前提的,这种问题"rpm"并不能解决,但是"yum"可以,所以安装软件多用"yum","rpm"是以查询为主。
"yum"能够投入使用的前提是必须要有yum源,以及配置源的指向文件。一般的yum源有client源端即本地端和server源端即网络端。以下将会介绍这两种不同的源端配置方法。
不管是client源端还是server源端,配置之前都要从网上下载与本机系统版本匹配的iso镜像文件,为了方便,本文中的镜像文件存放在/iso目录中。
3.1、client源端
client源端是将镜像文件挂载在本机目录中配置的yum源,该yum源只能本机使用。client源端的配置步骤如下所示。
a."mkdir /rhel7.2"在根目录下建立一个"rhel7.2"目录,该目录名字位置可以自行选择。
b."mount /iso/rhel-server-7.2-x86_64-dvd.iso /rhel7.2"将下载好的镜像文件挂载在/rhel7.2目录下。通过"ls /rhel7.2"查看是否出现文件。
c."rm -fr /etc/yum.repos.d/*"删除目录/etc/yum.repos.d/下的所有文件。
d."vim /etc/yum.repos.d/rhel7.2.repo"在目录/etc/yum.repos.d/下建立一个文件,名字可以自起但是必须以.repo结尾,并在文件中写入
[rhel7.2]
name=rhel7.2
baseurl=file:///rhel7.2
gpgcheck=0
e."yum clean all"清空yum缓存识别新配置。总步骤图如下。
以上即是yum源client源端的配置过程,配置成功后,即可利用"yum"命令安装软件,并会自动解决软件的依赖关系问题。
3.2、server源端
server源端是建立共享目录,并挂在镜像文件到共享目录上的yum源,该yum源不仅可以本机使用,也可以其他主机使用。配置yum源之前需要安装httpd服务,并且输入"systemctl stop firewalld"关闭防火墙,防火墙会导致数据传输出现问题。server源端与client源端配置方式基本相同,其中有些区别如下。
a."mkdir /var/www/html/rhel7.2"在此目录下建立目录,httpd可以将此目录共享出去。
b."mount /iso/rhel-server-7.2-x86_64-dvd.iso /var/www/html/rhel7.2"将镜像挂载在/var/www/html/rhel7.2目录下。
后面内容与client源端的c.d.e步骤一致,但是在配置/etc/yum.repos.d/rhel7.2.repo文件时,需要将其中的"baseurl=file:///rhel7.2"改为"baseurl=http://本机ip/rhel7.2"。如下图所示。
在server源端配置完成后,可以在浏览器中输入:"http://本机ip/rhel7.2",则可以看到镜像中的内容。总步骤图如下。
3.3、自动挂载
在上述的方法中,将iso镜像文件直接挂载在目录下,但是在重启主机后挂载的目录会自动解除挂载,就需要重新挂载才可以使用yum源。这在学习工作中无疑加大了工作量,所以一般可以采取开机自动挂载iso镜像文件的方法来避免此类情况,具体步骤如下:
输入"vim /etc/rc.d/rc.local",如下图所示,以client源端挂载为例,在下方输入"mount /iso/rhel-server-7.2-x86_64-dvd.iso /rhel7.2"。
保存并退出后输入"chmod +x /etc/rc.d/rc.local"以给此文件可执行权限。如此设定即可使开机时自动挂载iso镜像文件至"/rhel7.2"目录下。同理也可在server源端配置时使用。
3.4、搭建第三方软件仓库
yum源配置成功后即可使用镜像文件中的软件,但是镜像中的软件并不是全部,如果需要用yum安装第三方软件并解决软件依赖问题,那么就需要搭建第三方软件仓库了,其本质就是将第三方软件放入yum源中。其搭建步骤如下:
a."mkdir /software",建立一个目录并且把所有的第三方rpm软件包放到一个目录中,这个目录只能放入rpm文件,目录名称或路径可自行设置。
b."createrepo -v /software",使用此命令可在目录下生成一个"repodata"文件,在使用yum时会读取里面的文件。
c."vim /etc/yum.repos.d/rhel7.2.repo",在之前配置的"rhel7.2.repo"文件后加入,如下图所示。
[software]
name=software
baseurl=file:///software
gpgcheck=0
完成后输入"yum clean all"加载配置,即可使用第三方软件的yum命令。第三方软件仓库搭建完成。
4、rpm、yum的其他用法
4.1、rpm安装包的拆解
在之前说过如果不小心删除了软件中的某个文件,需要通过强行再次安装软件在恢复,这样有时会显得比较麻烦。如果可以将软件安装包拆解,将其中删除的文件重新复制到原目录,将会方便很多,软件安装包的拆解命令为"rpm2cpio xxxxx.rpm | cpio -id",其中的"xxxxx.rpm"需要加入软件包所在位置。
例如下图中,不小心删除了"/usr/bin/wps"文件,使得"wps"命令无法使用,就可以拆解生成"wps"命令的软件包,并将其中的"/usr/bin/wps"文件复制回原目录,即可解决这个问题。
4.2、yum的软件屏蔽
查看和使用yum源下的软件包时,有时候需要屏蔽一些或者一类软件,使得在执行"yum"命令时自动忽略这类软件,则需要用到软件屏蔽。
例如,在用"yum list available"查看软件列表时,想要自动忽略64位的软件,只显示32的软件,需要输入"vim /etc/yum.conf",并在其中输入"exclude=*.x86_64",如下图所示。
保存退出后,再次使用"yum list available"查看软件列表,就会屏蔽掉未安装的64位软件。
以上就是redhat的linux系统中软件安装及管理的一些内容。