05Linux之软件包

BamB00 2019-11-14 00:00:00
Categories: Tags:

0x01 软件包分类

0x02 rpm 安装

0x021 rpm包命名规则

openssl-devel-1.0.2k-16.el7_6.1.x86_64.rpm

操作包命和全名:

​ 只有安装的时候才使用包全名而且需要绝对路径

​ 如果操作的是已经安装的软件包,使用包命即可,系统产生的RPM包数据库在(/var/lib/rpm)

0x022 rpm包手工命令安装

0x0221 RPM包默认安装路径

路径 类型
/etc/ 配置文件安装目录
/usr/bin 可执行的命令安装目录
/usr/lib 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man 帮助文件保存位置

0x0222 安装命令

rpm -ivh 包全名
#注意 一是包全名。 如果跟包全名的命令要注意路径
 -i : install 安装
 -v : verbose 显示详细信息
 -h : hash 显示安装进度
 -U :upgrade升级安装,系统中没有就会安装,系统中有低版本就会升级
 -F : freshen升级安装,只有有低版本才会升级
 -e : 卸载
 ##查询
 -q 包命 : 查询软件是否安装
 -qa : 查询系统中所有rpm包
 -qi : 查询安装的软件信息
 -qip : 查询没有安装的软件包 package(p)
 -ql : 查询已经安装的软件包中的文件列表和完整的安装目录 list(l)
 -qlp : 查询未安装的软件包和打算安装的目录
 -qf 系统文件名 : 查询系统属于哪个文件包(file)
 -V 已安装的包命 : 校验本机已经安装的软件包 
 -Vf 系统文件名 : 校验某个系统文件是否被修改 #这个会显示修改参数

0x0223 RPM安装Apache

安装HTTPD就是apache

0x0224 RPM校验

[root@localhost Packages]# rpm -V 已安装的包名
#选项:
#    -V    校验指定RPM包中的文件(verify)
[root@localhost Packages]# vim /etc/httpd/conf/httpd.conf    ---> 对包的配置文件进行修改
[root@localhost Packages]# rpm -V httpd        ---> 对修改后的包再次进行校验(无变化,无提示)
S.5....T. c /etc/httpd/conf/httpd.conf 

最后一行有提示代表着有修改

提示代码 代码信息
S 文件大小改变
M 文件的类型或文件的权限是否改变(rwx是否改变)
5 文件的MD5是否改变 (可以堪称内容是否改变
D 装置的主/次代码已经改变
L Link路径已被改变
U 文件的所属人已被改变
G 文件的所属群组已被改变
T 文件的创建时间已被改变

最后一个小写字母含义

提示代码 含义
c 配置文件(config file)
d 普通文件(documentation)
g “鬼文件”(ghost file)
l 授权文件(license file)
r 描述文件(read file)

0x0225 数字证书

数字证书的特点:

数字证书位置:

  1. 光盘里
  2. 系统的 /etc/pki/rpm-gpg/
rpm --import xxxx证书
rpm导入证书

0x0226 RPM 包文件提取

如果配置文件被删除 但还有RPM包可以从包里面提取

rpm2cpio 包全名 | cpio -idv 文件的绝对路径
#这里一定要加文件的绝对路径不然会直接解压到默认安装目录,甚至覆盖已经安装的文件

0x023 rpm在线安装(yum安装)

yum源配置文件保存在/etc/yum.repos.d/目录中,文件的扩展名一定是”.repo”也就是说yum源配置文件只要扩展名是”.repo”就会生效

系统中没有Yum包仅仅只是rpm包的在线安装

因为常常有5个yum,这里只写Base网络容器,其他容器类似

0x024 yum命令

  1. 查询

    • 查询yum源服务器上所有可安装的软件包列表
    # yum list #查询所有可用软件包列表
    Installed Package #已经安装的软件包
    GeoIP.x86_64                                1.5.0-14.el7               @base    
    NetworkManager.x86_64                       1:1.18.0-5.el7_7.1         @updates 
    NetworkManager-libnm.x86_64                 1:1.18.0-5.el7_7.1         @updates 
    NetworkManager-team.x86_64                  1:1.18.0-5.el7_7.1         @updates 
    NetworkManager-tui.x86_64                   1:1.18.0-5.el7_7.1         @updates 
    NetworkManager-wifi.x86_64                  1:1.18.0-5.el7_7.1         @updates 
    acl.x86_64                                  2.2.51-14.el7              @anaconda
    aic94xx-firmware.noarch                     30-6.el7                   @anaconda
    alsa-firmware.noarch                        1.0.28-2.el7               @anaconda
    alsa-lib.x86_64                             1.1.8-1.el7                @base    
    alsa-tools-firmware.x86_64                  1.1.0-1.el7                @anaconda
    Available Package #还可以安装的软件包
    389-ds-base.x86_64                          1.3.9.1-10.el7             base     
    389-ds-base-devel.x86_64                    1.3.9.1-10.el7             base     
    389-ds-base-libs.x86_64                     1.3.9.1-10.el7             base     
    389-ds-base-snmp.x86_64                     1.3.9.1-10.el7             base     
    #包命                                           #版本                        #所在位置(yum源)
    
  2. 搜索yum源服务器上所有和关键字相关的软件包

    # yum search 关键字 #只要是相关的都可以找到
    # yum search 命令/文件 #这样可用找到命令所在的包
    
  3. 安装

    #yum -y install 包名   #会自动安装依赖环境
        # install : 安装
        # -y : 只要有疑问就yes
    
  4. 升级

    # yum -y update 包命 #不写包命会把所有包升级建议只在第一次装机升级,安装服务后别升级,如果是安全服务器有问题,单独升级某个包。
    
  5. 卸载

    除非缺点卸载的软件的依赖包不会对系统产生影响,否则不要执行yum的卸载,因为也有可能很多软件在使用这个依赖包,导致系统崩溃

    # yum remove 包名
    
  6. 查看可以安装的软件安装包组

    # yum grouplist 列出所有可用的软件组列表
    
  7. 查询软件组内包含的软件

    # yum gourpinfo 软件组名
    例如: yum groupinfo "Web Server"
    

0x03 源码包安装

0x031 注意事项

  1. 选择那种软件包

    • 源码包 : 如果服务是给大量客户端提供的,建议使用源码包,源码包效率更高(LAMP)
    • RPM包 : 如果程序是给少量用户访问,或者本地使用的,建议RPM包,因为管理RPM包方便
  2. 源码包从哪里来

    • RPM包是光盘中包含的。
    • 源码包是官网提供的,需要手工下载。
  3. 是否可用在系统中使用RPM在线安装Apache后,又安装源码包的Apache

    可以,因为两个安装方法的Apache,安装位置不一样

    RPM包: 默认安装目录
        /etc/httpd/conf/httpd.conf  #默认配置文件
        /var/www/html/                #默认网站位置
        /var/log/httpd/                #默认日志位置
    启动方法 service httpd restart
    源码包: 必须制定安装位置(这个是习惯安装的位置)
        /usr/local/apache2/conf/httpd.conf
        /usr/local/apache2/htdocs/
        /usr/local/apache2/logs/
        /usr/local/apache2/bin/apachectl start 
    
  4. 生产服务器上,是否同时安装两种Apache?

    不会,因为系统中只有一个80端口,所以只能启动一个,装多个是浪费资源,建议源码包安装Apache.

0x32 安装过程

下载解压进入目录掠过

安装包内

0x33 删除

源码包没有删除命令,如果需要删除,直接安装目录即可。

0x04 打补丁

0x041 补丁的生成

diff 选项 old new #比较old和new文件的不同  Old和new要写绝对路径
选项: 
    -a 将任何文档当作文本文档处理
    -b 忽略空格造成的不同
    -B 忽略空白行造成的不同
    -I 忽略大小写造成的不同
    -N 当比较两个目录是,如果某一个文件只有一边又,则另一个目录将视为空文件
    -r 比较目录时,递归比较子目录
    -U 使用同一输出格式
# patch -pn < 补丁文件 #安装补丁文件进行更新
选项
    -pn n为数字,代表按照补丁文件中的路径,指定更新文件的位置

“-pn”不好理解,按照厂商手册去操作即可。