Linux系统中程序的安装及管理、创建私有yum仓库实验

各位小伙伴今天要和大家分享的是Linux系统中程序的安装及管理,以及创建私有yum仓库的操作实验。
本次我们会从以下几个部分进行说明:

  1. Linux应用程序基础
  2. 查询RPM软件包信息
  3. 安装、升级、卸载、RMP软件包、yum仓库
  4. 源代码编译安装

应用程序与系统命令的关系:
1.文件位置
? 系统命令:一般在/bin和/sbin目录中
? 应用程序:通常在/usr/local目录中
2.主要用途
? 系统命令:完成对系统的基本管理工作,例如IP配置工具
? 应用程序:完成相对独立的其它辅助任务,例如网页浏览
3.适用环境
? 系统命令:一般只在字符操作界面中运行
? 应用程序:根据实际需要,有些程序可在图形界面中运行
4.运行格式
? 系统命令:一般包括命令字。命令选项和命令参数
? 应用程序:通常没有固定的执行格式

典型应用程序的目录结构:

文件类型 保存目录
普通执行程序文件 /usr/bin
服务器执行程序文件 /usr/sbin
应用程序配置文件 /etc
日志文件 /var/log
应用程序文档文件 /usr/share/doc
应用程序手册页文件 /usr/share/man

常见的软件包封装类型:
1.rpm软件包:扩展名为“.rpm”,二进制文件(命令rpm)
2.deb软件包:扩展名为“.deb”,debian,ubantu(命令dpkg)
3.源代码软件包:一般为“.tar.gz”、“.tar.bz2”等格式的压缩包,包含程序的原始代码(bz2的解压效率较高)
4.绿色免安装的软件包:在压缩包内提供已编译好的执行程序文件,解开压缩包后的文件即可直接使用(会有install.sh或setup文件)

RPM包管理工具:
RPM Package Manager:
1.由Red Hat公司提出,被众多Linux发行版所采用
2.建立统一的数据库文件
3.详细记录软件包安装、卸载等变化信息
4.自动分析软件包依赖关系
RPM软件包:
1.软件素材参考:http://www.rpm.org
2.一般命名格式:bash-4.1.2-15.el6_4.x86_64.rpm
?bash:软件名称
? 4.1.2:版本号
? 15.el6_4:发布次数
?x86_64:硬件平台
?.rpm:扩展名

查询RPM软件包信息:
1.查询已安装的RPM软件信息:rpm -q[子选项] [软件名]
2.常用选项
? -qa:检查所有安装的包
? -qi:检查某个软件包的详细信息
? -ql:软件包中包含了哪些内容
? -qf:某一个软件包中的文件
?-qc:查询软件包中的配置文件
? -qd:检查文档手册
1.查询未安装的RPM软件包文件中的信息:rpm -qp[子选项] RPM包文件
2.常用选项:
?-qpi:检查未安装软件包的详细信息
? -qpl:检查未安装软件包中包含了哪些内容
? -qpc:查询未安装软件包中的配置文件
? -qpd:检查未安装软件包的文档手册

安装、升级、卸载、RMP软件包:
1.安装或升级RPM软件包:rpm [选项] RPM包文件
2.常用选项:
?-i:安装软件包
?-U:更新软件包仓库
? -F:查看某一个文件目录属于哪一个RPM软件包
?-e:已卸载的RPM软件包
1.卸载指定的RPM软件:rpm -e 软件名
2.辅助选项:
? --force:强制执行
? --nodeps:依赖关系
? -h:友好显示
? -v:显示过程

解决软件包依赖关系方法:
1.安装有依赖关系的多个软件时

  • 被依赖的软件包需要先安装
  • 可同时指定多个.rpm包文件进行安装
    2.卸载有依赖关系的多个软件时
  • 依赖其他程序的软件包需要先卸载
  • 可同时指定多个软件名进行卸载
    3.忽略依赖关系
  • 结合“--nodeps”选项,但可能导致软件异常

维护RPM数据库:
1.重建RPM数据库
Linux系统中程序的安装及管理、创建私有yum仓库实验
2.导入验证公钥
Linux系统中程序的安装及管理、创建私有yum仓库实验

接下来我们来看下rpm的具体操作:
输入man rpm:可以看到rpm中的详细操作信息,界面如下图:
Linux系统中程序的安装及管理、创建私有yum仓库实验
我们的rpm可以查看到系统当中安装了哪些rpm包,可以输入rpm -qa进行查看,得到界面如下图:
Linux系统中程序的安装及管理、创建私有yum仓库实验
如果想统计具体有多少包的话,可以输入rpm -qa | wc -l 可以查看安装了多少软件包,结果如下图:
Linux系统中程序的安装及管理、创建私有yum仓库实验
其实我们发现rpm软件包还是比较多的,那么我们目前为止用到的rpm软件包是在什么位置呢?那么多rpm软件包并没有一个仓库,那么我们现在所用到的rpm的软件包都是来自于一个地方,就是“yum仓库”,那我们如何查看yum仓库里有哪些软件包呢?我们可以输入:yum list,此时会自动加载远程yum服务器中的所有软件包,这些就是由官方提供的yum源,结果如下图所示:
Linux系统中程序的安装及管理、创建私有yum仓库实验
源的软件包的是实时更新的,当我们使用yum进行安装时直接安装的是最新版本的,因为官方会自动维护的,具体这个官方的路径在什么位置,接下来演示给大家看一下。
输入cd/etc/目录下再输入ls查看详细信息,可以看到以下三个有关yum的文件,其中有一个yum.repos.d这个文件就是yum源的配置地点文件
Linux系统中程序的安装及管理、创建私有yum仓库实验
我们输入cd yum.repos.d/进入到此文件,再输入ls查看详细信息,此时我们会看到以CentOS开头的配置文件在其中,其中CentOS-Base.repo这个文件为基本配置文件,操作过程和结果如下图:
Linux系统中程序的安装及管理、创建私有yum仓库实验
输入vim CentOS-Base.repo查看文件中的详细信息,其中有镜像文件的网站地址在其中,表示此软件在安装过程中是要处于在线状态的如果断网则此处的软件包是不能安装的,具体显示出的界面个解释意思如下图:
Linux系统中程序的安装及管理、创建私有yum仓库实验
如果我们此时用yum install httpd安装该服务,其中我们会发现在安装过程中自动帮我们处理了文件依赖关系,安装了多个在安装httpd服务之前需要安装的其它软件包,安装过程中显示如下图:
Linux系统中程序的安装及管理、创建私有yum仓库实验
因为这是一个网站服务,所以我们接下来需要开启此项服务,
输入:systemctl start httpd.service开启网站服务
输入:systemtcl stop firewalld关闭防火墙
输入:setenforce 0关闭增强安全功能
输入:ifconfig获取到IP地址为192.168.195.136
在宿主机中输入此地址是可以访问到建立好的Apache网站服务的。

输入yumlist加载远程仓库,此时显示的是之前的缓存,我们用yum clean all清除一下缓存,在加载一次yum远程仓库,此时开始报错,过程和操作结果如下图:

此时我们会发现一层关系就是安装软件必须依赖于有网络的环境,否则将无法安装服务
那么如果在断网的情况下,这时我们就可以用到光盘镜像安装,但是其中的文件是无法实时更新的,接下来我将要告诉大家的就是如何在离线状态下使用rpm软件包安装服务,并且为这些软件包建立yum仓库。
第一步:需要先断网,首先注销虚拟机中的客户端,然后在右下角选择网络配置设置,为仅主机模式,此时不能联网
Linux系统中程序的安装及管理、创建私有yum仓库实验
第二步:我们在虚拟机上使用root权限登录,为它配置静态IP,一旦使用静态IP地址,那么与Xshell的远程连接也会中断,进入桌面之后右键点击空白处,选择打开终端,
1.输入:vim /etc/sysconfig/network-scripts/ifcfg-ens33进入网卡配置,此时BOOTPROTO状态为dhcp自动获取状态,此处我们需要修改
2.输入/dhcp,按dw删除,输入statci
3.按大G到末行,再按$符号到末尾,保证ONBOOT状态为yes,按o进入下一行插入
4.输入IPADDR=192.168.100.100设置静态IP,再按o进入下一行插入
5.输入NETMASK=255.255.255.0设置MAC地址,再按o进入下一行插入
6.输入GATEWAY=192.168.100.1设置网关,按Esc退回到命令模式,按“:”号到末行模式
7.输入wq保存退出
8.输入service network restart重启服务(改完配置文件之后必须要重启服务)
9.输入ifconfig查看此时的网卡IP为192.168.100.100
Linux系统中程序的安装及管理、创建私有yum仓库实验
Linux系统中程序的安装及管理、创建私有yum仓库实验
Linux系统中程序的安装及管理、创建私有yum仓库实验
此时我们使用火狐浏览器访问外部互联网 www.baidu.com 此时无法联网
Linux系统中程序的安装及管理、创建私有yum仓库实验
输入yumlist加载远程仓库,此时显示的是之前的缓存,我们用yum clean all清除一下缓存,在加载一次yum远程仓库,此时开始报错,过程和操作结果如下图:
Linux系统中程序的安装及管理、创建私有yum仓库实验

此时如果想处理这个问题就要用到镜像里面的软件包,而且不但要用,还要为镜像中的软件包自行创建一个yum仓库,此时需要用到我们的镜像文件,首先我们需要做的就是挂载镜像,

  1. 在虚拟机界面的右下角右键点击虚拟光驱选择设置,在使用ISO镜像文件中应该会有我们之前安装系统时加载的镜像文件,我们此处就可以使用这个镜像文件,选择状态为已连接,点击确定
  2. 输入:df -h查看光盘有没有被成功挂载,此时我们看下我们的光驱在什么位置
  3. 输入:cd /dev/,再输入ls查看详细信息,可以看到其中有一个目录为cdrom
  4. 此时我们可以开始挂载,因为使用的是光驱里面的镜像文件,所以需要把光驱挂载到自己的目录中(此处我们选择mut目录),然后再使用这个光驱里的东西的时候,直接打开这个目录就可以了
  5. 输入:mount /dev/cdrom /mut敲回车,此时光盘挂载到mnt目录下成功
  6. 输入:ls /mnt/进入mnt目录中查看详细信息,可以看到其中有镜像文件当中的东西,其中我们安装所需的安装包都在Package这个目录里面,我们进入此目录后会发现里面都是rpm包
    以上操作过程和结果如下图:
    Linux系统中程序的安装及管理、创建私有yum仓库实验
    Linux系统中程序的安装及管理、创建私有yum仓库实验
    Linux系统中程序的安装及管理、创建私有yum仓库实验
    Linux系统中程序的安装及管理、创建私有yum仓库实验
    接下来我们可以把vim的服务给卸载了
    输入:rpm -evh vim.enhanced-7.4.160-2.el7.x86_64(此处可查看路径后复制),敲回车进行卸载,此时在使用vim功能是无法使用的,显示没有文件或目录,过程和结果如下图所示:
    Linux系统中程序的安装及管理、创建私有yum仓库实验
    此时vim功能失效,但是vi功能还是可以使用的
    这个时候我们输入:rpm -ivh vim.enhanced-7.4.160-2.el7.x86_64(在Packages路径下可以用Tab键自己补全)重新安装vim,就可以正常使用了,
    例如我们现在想卸载vim-common这个功能,是不能直接卸载的
    输入rpm -e vim-common-7.4.160-2.el7.x86_64卸载此功能,敲回车会显示错误,原因是因为卸载的这个common依赖于enhanced,如果想卸载common必须要先卸载enhanced才可以,这代表了文件之间的依懒性,过程如下图:
    Linux系统中程序的安装及管理、创建私有yum仓库实验
    如何解决这种依赖关系,这个时候为我们就需要用到yum仓库,现在需要考虑的就是在离线状态下如何自建yum仓库
    首先所有的rpm包都在/mnt/Pachages的目录下,我们需要做的就是把这个作为yum仓库的源。
    第一步:cd /etc/yum.repos.d/进入此目录,并用ls查看详情,此时看到的文件在断网状态下无法正常使用
    第二步:mkdir bak创建目录名字叫bak
    第三步:mv CentOS.* bak/把以CentOS开头的文件全部移动到bak的目录当中
    Linux系统中程序的安装及管理、创建私有yum仓库实验
    接下来就是创建离线状态下的私有yum仓库的操作步骤
    手动创建yum仓库的配置文件,以“.repo”为结尾 ,此处例如vim abc.repo回车进入,写入以下信息:
  7. [abc]文件名
  8. name=test描述性信息
  9. baseurl=file:///mnt源站点
  10. enabled=1开启
  11. gpgcheck=0软件包秘钥验证选择0不验证
  12. :wq保存退出
    再使用yum list,此时就可以看到文件了
    之前我们已经用rpm安装了httpd,现在可以用yum remove httpd卸载,此时功能被卸载又处在仅主机状态,所有网络是无法连接的
    接下来我们输入yum install httpd* -y进行无交互式安装,就可以直接进行安装了
    此时我们再用rpm-q httpd查看已经安装的包,此处显示已经被安装,如下图:
    Linux系统中程序的安装及管理、创建私有yum仓库实验
    输入:systemctl start httpd.service开启网站服务
    输入:systemtcl stop firewalld关闭防火墙
    输入:setenforce 0关闭增强安全功能
    然后再回到浏览器打开192.168.100.100,此时就可以打开Apach的网站服务了
    以上实验的结果就是我们建立了私有的yum仓库,是为了解决rpm安装的依赖性关系,他能够自动识别并安装机组的环境包,把服务安装好之后就可以进行操作了,所以他不需要像rpm那样一个一个的去装软件包,他可以全部识别之后再进行安装。
相关文章
相关标签/搜索