易久IT学院

作者: admin
查看: 193|回复: 2

more +今日重磅推荐Recommend No.1

最新网络安全思维导图全集(图片+pdf+原版)

more +社区热门Forums

more +随机图赏Gallery

教学视频:华为模拟器ENSP中防火墙USG6000V如何登陆web网管教学视频:华为模拟器ENSP中防火墙USG6000V如何登陆web网管
易语言全套百集视频教程,共44部 几乎包含易语言所有方面的知识,视频合集易语言全套百集视频教程,共44部 几乎包含易语言所有方面的知识,视频合集
10秒 帮您找到您真正需要的东西 不断更新 建议收藏10秒 帮您找到您真正需要的东西 不断更新 建议收藏
思科官方原版:CUCM,CUC安装升级镜像Bootable_UCSInstall_UCOS_8.0.0.99141-4.sgn.iso思科官方原版:CUCM,CUC安装升级镜像Bootable_UCSInstall_UCOS_8.0.0.99141-4.sgn.iso
斯巴达Python编程视频 专业搜索爬虫抓取超高清视频教程9集+py源码斯巴达Python编程视频 专业搜索爬虫抓取超高清视频教程9集+py源码
[华为]HCNP-CLOUD 某机构2017年的视频 讲的很好,广度、深度都有。[华为]HCNP-CLOUD 某机构2017年的视频 讲的很好,广度、深度都有。
虚拟机 绿色精简特别版 VMware-Workstation V12.0.0虚拟机 绿色精简特别版 VMware-Workstation V12.0.0
大神GAD著作扫描版_cisco人士必读_全是干货 pdf网络技术电子书大神GAD著作扫描版_cisco人士必读_全是干货 pdf网络技术电子书
网易web白帽子 实战型安全视频教程 原理+实战的知识体系 web玩家必备视频教程网易web白帽子 实战型安全视频教程 原理+实战的知识体系 web玩家必备视频教程
【2018.08.23】新版思科CCNA(200-125)V3.0 最新题库下载【2018.08.23】新版思科CCNA(200-125)V3.0 最新题库下载
[华为]2018新版 肖哥 华为HCNA HCNP安全入门课程视频教程[华为]2018新版 肖哥 华为HCNA HCNP安全入门课程视频教程
新盟教育CCNA公开课视频 学习ppt ccnp试听视频 SecureCRT gns3模拟器新盟教育CCNA公开课视频 学习ppt ccnp试听视频 SecureCRT gns3模拟器
[书籍]华为认证 HCNA-HNTD 数通方向培训教材 V2.2[书籍]华为认证 HCNA-HNTD 数通方向培训教材 V2.2
CISCO&H3C&HUAWEI-OSPF_MTU问题详解CISCO&H3C&HUAWEI-OSPF_MTU问题详解

Linux系统常用的软件管理工具rpm、yum及软件源码编译安装

[复制链接]
admin 发表于 2017-1-25 15:45:51 | 显示全部楼层 |阅读模式
查看: 193|回复: 2
一、简介
    在windows系统上我们安装软件的时候加上了一些与这些程序相关的信息,将他建立称为了数据库,就可以实现软件的安装、卸载、升级与验证了,类似于windows的“添加删除程序”。由于在linux系统上利用源码包设置编译参数、实际编译、最后还要根据需要的方式来安装程序,这个过程很是麻烦,而且对于不熟悉整个系统的用户来说,更是一种负担,所以后来在我们linux系统下至有两种常见的套件管理程序,分别是RPM和Debian的dpkg,其中RPM最为常见,那么晚我们下面就来介绍下RPM。 RPM的全名为“RedHat Package Manager”,顾名思义它是由RedHat公司开发的。Rpm是以一种数据库记录的方式将所需要的套件安装到linux主机的一套管理程序,它最大的特点就是将要安装的套件先编译并打包,通过包装好的套件中默认的数据库记录,记录这个套件在安装的时候所依赖的属性模块。用户在安装的时候,RPM会根据套件里的记录信息,查询主机的依赖属性套件是否满足,如满足则给予安装。若不满足在不给于安装、安装的时候将该套件的信息全部写入RPM的数据库中,以方便将来的查询、验证与卸载。这样做的优点: 1、由于已经编译完成并且打包,所有安装方便。 2、由于套件信息已经记录在了Linux主机的数据库中,方便查询、升级与卸载。 当然其也有其缺点,由于所有的数据已经编译完成,所以安装的时候一定需要当初安装时的主机环境,也就是说,当初建立这个套件的安装环境,必须在用户主机上出现,如果不出现就无法进行安装。缺点主要如下: 1、安装环境必须与打包时的环境一致 2、需要满足套件的依赖属性需求 3、卸载时需要特别小心,最底层的套件不可先删除,否则可能对整个系统造成问题。

      RPM程序的数据库位置/var/lib/rpm,这里面定义了关于RPM管理的所有属性,当然我们如果还可以更新这个数据库的, rpm --rebuilddb:重建数据库,一定会重新建立。  rpm --initdb:初始化数据库,没有才建立,有就不用建立。

      0.jpg
      RPM相关软件包名字格式:
        name-version-release.arch.rpm name-version-release-release.arch.rpm version:主版本号.此版本号.发行版本号.平台.rpm,对于其命名需要遵循以下规则: 主版本号改变:软件的功能发送了重大的改变。 此版本号改变:某个子功能发生了重大变化 发行号改变:修改了部分bug,调整了一点点小功能。
        二、
          linux下软件管理套件RPM的出现大大降低了基本软件的安装和升级等管理难度,当然linux此'出生'一来就是一一切皆文件、系统字符界面而著称的,所以虽然软件管理套件可以帮我们实现那么大的功能,也不会像windows上面的那样,我们还需要掌握关于RPM的相关命令才能实现软件的安装、升级、卸载等功能,当然现在也有了图形界面下软件的管理套件,但是我们linux系统的伟大之处是可以稳定、永久不宕机的提供服务的系统,我们不会让其运行在图形界面下的,所以作为一个合格的linux系统运维人员掌握软件的管理命令是必备、基础的要求了。下面我们来介绍介绍关于RPM的相关命令吧~~~
          RPM命令主要包括四类:安装、查询、升级、卸载⑴、rpm安装命令
            rpm -i /PATH/TO/PACKAGE_FILE:安装软件包                       rpm -h :以#显示安装进度,每个#表示2%               rpm -v :显示安装详细信息               rpm -vv :更详细的信息               rpm -ivh :组合使用,一般使用这个组合来安装软件               rpm --nodeps:忽略依赖关系。               rpm --replacepkgs:重新安装、替换原来安装。               rpm -ivh --oldpackage:降级安装。               rpm -ivh --force:强行安装,可以实现重装或降级               rpm --test:仅测试有没有依赖关系
            实例:安装zsh的安装包
            1.jpg
            rpm --test:仅测试有没有依赖关系
            2.jpg
            ⑵、rpm软件查询命令:             rpm -q PACKAGE_NAME:查询指定的包是否安装
            3.jpg

                         rpm -qa :查询以安装的所有包
                         rpm -qi PACKAGE_NAME:查询指定包的说明信息

            4.jpg

                         rpm -ql PACKAGE_NAME:查询指定包安装后生成的文件列表

            5.jpg

                         rpm -qc PACKAGE_NAME:查询指定包安装的配置文件
                         rpm -qd PACKAGE_NAME:查询指定包安装的帮助文件

            6.jpg

                     
              rpm -q --scripts PACKAGE_NAME:查询指定包中包含的脚本            rpm -qf /path/to/somefile:查询指定的文件时由那个rpm包安装生成的            如果某个rpm包尚未安装,我们需要查询其说明信息,安装后会生成的文件            rpm -qpi /PATH/TO/PACKAGE_FILE                    i:软件说明信息            rpm -qpL /PATH/TO/PACKAGE_FILE                    L:软件文件列表
              ⑶、软件升级命令:rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,则安装
              7.jpg

              8.jpg

                           rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,则退出
                           rpm -Uvh --oldpackage 低版本的包:降级
              ⑷rpm软件卸载命令:卸载的时候此包不能被其他软件包依赖
                           rpm -e PACKAGE_NAME  //直接卸载、但是此时如果卸载的软件被其他软件包多以来的话则不能卸载
                           rpm –nodeps  //忽略软件包之间的依赖关系
              ⑸、其他相关命令rpm软件校验命令:
                          
                rpm -V PACKAGE_NAME:无输出信息就是正常,(linux的哲学思想:没有回答则是最好的回答!嘿嘿~~)            rpm重建数据库:               数据库位置:/var/lib/rpm               rpm --rebuilddb:重建数据库,一定会重新建立。               rpm --initdb:初始化数据库,没有才建立,有就不用建立。           rpm检验来源合法性及软件完整性:               加密类型:                   对称:加密解密使用同一个秘钥                   公钥:一对秘钥,公钥、私钥;公钥隐含与私钥中,可以提取出来并公开出去。     公钥:加密,私钥:身份验证      红帽公钥:ls /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release               rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:导入秘钥文件                rpm -K /PATH/TO/PACKAGE_FILE                   dsa,gpg:验证来源合法性,也即验证签名;可以使用--nosignature,略过此项                   sha1,md5:验证软件包完整性;可以使用--nodigest,略过此项               rpm -K --nodigest /PACKAGE_NAME:只验证签名。
                三、YUM
                  从上面我们学会了利用rpm套件管理工具在linux系统上进行软件包的安装、升级、查询、卸载等相关命令的操作和方法,但是我们从上面了解到我们利用rpm来进行安装软件的时候会存在软件包之间的依赖关系,而rpm并不能自己智能的解析其各个包之间的依赖关系,但是如果我们利用rpm –nodeps和rpm -ivh --force进行安装的时候很可能造成安装的软件无法正常运行,为了解决这个问题,后来又出现了一个功能更强大的工具:YUM,yum在rpm的基础上很好的解决了软件包之间的依赖关系。 YUM是一种基于C/S架构的服务,需要Server和Client来进行使用,即yum仓库和本地的yum工具。
                  ⑴、 服务器端配置:yum仓库可以是本地文件、ftp服务器和http服务器。在其服务器端有yum仓库的配置文件,yum仓库的配置文件叫YUM的元数据文件,元数据文件需要存放在一个叫repodata的目录下面,其目录和组成yum池的rpm包需要同处于同一个目录下,下面我们来认识一下yum的元数据把~~
                  9.jpg
                  各个元数据文件的解释:
                    primary.xml.gz:定义了当前仓库中所有的rpm包列表以及各包之间的依赖关系和每个软件包安装生成的文件列表 filelists.xml.gz:当前仓库中所有RPM包的文件列表 other.xml.gz:额外信息,rpm包的修改日志 repomd.xml:记录的是上面三个文件的时间戳和校验和 comps-*.xml:RPM包分组信息(需要手动定义)
                    ⑵、YUM服务客户端的配置
                      首先确定我们系统上面安装了yum服务软件包:yum-3.2.22-39.el5,可以利用rpm –q yum来进行查看,趁着也联系联系使用上面的rpm命令~嘿嘿   客户端配置文件在/etc/yum.repos.d/*.repo文件内进行定义,可以定义多个.repo文件,也可以在一个repo文件定义多个yum服务器,其格式如下: [Repo_ID] name=Description baseurl=yum仓库路径 enabled={0|1}:是否启用此仓库,默认不写的时候是启用 gpgcheck={0|1}:校验文件的完整性 注:关于yum仓库的路径有三种: ftp服务器的时候:  ftp://….. http服务器的时候:http://….. 本地文件的时候:   fiel:///

                      10.jpg
                      ⑶、上面我们完成了YUM服务的相关配置,那么我们下面来说说关于yum操作的相关命令吧
                        yum list:查看yum列表 yum list all:默认选项,会列出所有的yum库 yum list available:列出仓库中未安装的包 yum list installed:列出显示已经安装的软件 yum list updates:列出可以升级的软件包 yum clean:清除缓存
                        yum clean {packages | headers | metadata | dbcache | all}:清除缓存再查看会再次统计数据并显示出来。
                        11.jpg
                        ⑷、yum的安装命令
                          yum install PACKAGE_NAME  //安装软件、此项选择会让你选择 yum –y install PACKAGE_NAME //直接自动完成软件的安装 yum install --nogpgcheck:不做校验,安装软件, yum update  ACKAGE_NAME : 升级软件包 yum   update_to PACKAGE_NAME :升级到指定版本 yum remove|erase PACKAGE_NAME :卸载软件

                          12.jpg
                          yum info PACEAGE_NAME:查看软件包信息yum provides|whatprovides file:查看指定文件是由那个软件包生成的
                          13.jpg
                          ⑸、yum关于组的管理命令
                            yum  grouplist //查看组,包括安装或未安装的 yum groupinstall GROUPNAME  //安装组,注意如果组名中间有空格,需要使用双引号 groupinfo   组名:显示组包含包信息(如果组名中间有空格,使用"")

                            14.jpg
                            四、源码程序安装1、在我们进行编译安装的时候需要提前安装编译软件需要的开发环境和开发库:"Development Tools"和”Development Libraries“
                              先配置好yum库,然后利用yum库安装 yum –y groupinstall "Development Tools"  //安装开发工具 yum groupinstall -y "Development Libraries"  //安装开发库
                              2、解压源码程序包3、cd 进入源码解压目录
                                ./configure  //编译安装配置命令 ./config –help //查看编译帮助信息 yum groupinstall -y "Development Libraries" --sysconfdir=/PATH/TO/CONFFILE_PATH:配置文件安装路径,如果不指定则在安装目录下的config目录下 make编译 make install安装   
                                4、安装完成以后我们需要对我们自定义安装的软件进行设置,设置环境和man等信息
                                  修改PATH环境变量,以便识别此程序的文件路径:在/etc/profile.d/目录下简历一个以.sh为后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere 要想此配置生效,重新登录或者自己手动执行此脚本
                                  5、库文件配置:默认情况下,系统搜索库文件的路径为/lib,/usr/lib;要增加额外的搜寻路径:在/etc/ld.so.conf.d/中创建以.conf为后缀的文件,然后把要增加的路径直接写至此文件中。
                                    ldconfig:通知系统重新搜寻库文件。 ldconfig -v:显示重新搜寻库的过程
                                    6、头文件输出
                                      默认是/usr/inclode 增添头文件搜寻路径,使用链接进行 添加头文件有两种方式:ln -s /usr/local/tengine/include/* /usr/include/  或者ln -s /usr/local/tengine/include /usr/include/tengine
                                      7、man文件路径添加man文件路径:默认安装在--prefix指定的目录下的man目录内,而系统默认的是/usr/share/man,我们需要在/etc/man.conf内定义man 的查找路径:在/etc/man.config内添加一条MANPATH
                                      下面我们通过编译、安装web服务器来说明编译安装的相关过程1、安装开发环境
                                      15.jpg
                                      2、解压源码包tar xf httpd-2.2.22.tar.bz23、进入解压包,然后配置参数、编译、安装cd httpd-2.2.22    //进入源码目录./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd   //设置安装目录/usr/local/apache,配置文件为/etc/httpdmake && make install   //编译和安装
                                      16.jpg

                                      17.jpg
                                      下面启动httpd服务吧~~测试一下能否做成工作是不是启动不了?哈哈~那就对了,那是因为现在我们自定义的软件的命令不在当前的环境变量中
                                      18.jpg

                                      那么下面我们来在系统内添加一下环境变量吧~~vim /etc/profile.d/httpd.sh ,添加如下内容export PATH=$PATH:/usr/local/apache/bin   //增加环境变量此时若想环境变量生效可以重新登录客户端或者执行一下这个脚本这里执行下脚本吧~~看看能不能生效. /etc/profile.d/httpd.shhttpd
                                      19.jpg
                                      下面我们来测试一下吧~
                                      20.jpg

                                      为了更好的说明效果,我们把主页内容更改一下~~
                                      21.jpg

                                      22.jpg
                                      刷新下网页,查看下内容
                                      23.jpg
                                      ok,到此就可以实现比较简单的web服务了,但是此时是那么的丑,所以我们需要对其程序进行进一步的优化,man文件、头文件、库文件、服务启动脚本等信息增加等相关操作,由于此处所说内容已经比较多了,暂时把其相关的操作我们就在下一篇博文内进行讨论吧~当然我们利用上面的有关内容是可以自己实现的~对吧,大侠们!下篇博文暂定为“黄金组合LAMP”~~嘿嘿,四天之后放出,到时候希望大家给还是菜鸟的我指正错误--linux系统博大精深,需要逐步、深入!
                                      上面所说内容只是个人总结,还望各位大侠不吝赐教!指出其中错误~~~~--chrinux(chris linux)。
                                      安装, 管理程序, 管理工具, Linux[/hide]
回复

使用道具 举报

sj7981 发表于 2017-2-12 12:23:52 | 显示全部楼层
本宫准楼下的继续跟帖。。。
回复 支持 反对

使用道具 举报

sciential 发表于 2017-2-23 18:44:56 | 显示全部楼层
上火,就容易缺经验,过去,我一直缺, 自从学会复制粘贴以后,我的经验小康了 ,一口气拿五点,不费劲儿,复制一次粘 贴无数次,真实惠
回复 支持 反对

使用道具 举报

aarion 发表于 2017-3-7 20:56:37 | 显示全部楼层
我想早恋,可是已经晚了……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易久IT学院 ( 粤ICP备17017336号-3 )  

GMT+8, 2018-10-16 10:46 , Processed in 0.454792 second(s), 34 queries .

Powered by Yi9.Net  © 2012-2017 Comsenz Inc.

Designed by Yi9.NeT