4.软件包管理

    科技2022-07-11  92

    1.软件包管理

    1.1简介

    源码包

    脚本安装包(脚本安装包 install.sh)

    优点:

    1、开源,如果有足够的能力,可以修改源代码

    2、可以自由选择所需功能

    3、软件是编译安装,所以更进适合自己的系统,更加稳定也效率更高

    4、卸载方便

    缺点:

    1、安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境)容易出现拼写错误

    2、编译过程时间较长,安装比二进制安装时间长。

    3、因为是编译安装,安装过程中一旦报错新手很难解决

    二进制包(RPM包、系统默认包)

    为了加快安装速度,开发厂商在经过编译后安装包,不能在看到源代码

    优点:

    1、包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

    2、安装速度比源码包安装快的多

    缺点:

    1、经过编译,不再可以看到源代码

    2、功能选择不如源码包灵活

    3、依赖性

    1.2.RPM管理–rpm命令管理

    1.2.1.rpm包命名依赖性

    rpm包命名原则

    httpd-2.2.15-15.el6.centos.i686.rpm

    httpd 软件包名

    2.2.15 软件版本

    15 软件发布的次数

    el6.centos 适合的Linux平台 el6.空和el6.noarch代表适合所有类型linux平台

    i686 适合的硬件平台

    rpm rpm包扩展名

    RPM包依赖性

    树形依赖 : a〉b〉c

    环形依赖: a〉b〉c〉a

    模块依赖:模块依赖查询网址:www.rpmfind.net

    libmysqlclient.so.18() 类似此表达式为模块依赖,在www.rpmfind.net查找

    找对对应适用平台,选择对应软件包名称,进行安装

    1.2.2.安装升级与卸载

    (1)包全名与包名

    包全名:操作的包是没有安装的软件包时,使用包全名,而且要注意路径(安装升级时)

    包名:操作已经安装的软件包时,使用包名。是所搜索/var/lib/rpm中的数据库(已安装)

    (2)RPM安装

    rpm -ivh 包全名 参数: -i(install) 安装 -v(verbose) 显示详细信息 -h(hash) 显示进度 --nodeps 不检测依赖性

    (3)RPM升级

    rpm -Uvh 包全名 参数: -U (upgrade) 升级

    (4)卸载

    rpm -e 包名 参数: -e (erase) 卸载 --nodeps 不检查依赖性

    (5)备注:需进入rpm绝对路径下使用上述命令

    1.2.3.命令管理-查询

    rpm -q 参数: -i 软件信息(information) -q 查询(query) -a 所有(all) -p 查询未安装包信息(package) -l 列表(list) -f 系统文件(file) -R 查询软件包的依赖性(requires) #查询是否安装 rpm -q 包名 #查询所有已安装的rpm包 rpm -qa rpm -qa |grep 包名 #查询软件包详细信息 rpm -qi 包名 #查询未安装包信息 rpm -p 包全名 #查询已安装包文件安装位置 rpm -ql 包名 #查询系统文件属于哪个rpm包 rpm -qf 系统文件名 #查询软件包的依赖性 rpm -qR 包名 #查询未安装软件包的依赖性 rpm -qRp 包名

    1.2.4.命令管理-校验和文件提取

    (1)校验

    #校验 rpm -V 已安装的包名 #验证内容中的8个信息的具体内容如下: S 文件大小是否改变 M 文件的类型或文件的权限(rwx)是否被改变 5 文件MD5校验和是否改变(可以看成文件内容是否改变) D 设备中代码是否改变 L 文件路径是否改变 U 文件的属主(所有者)是否改变 G 文件的属组(所属组)是否改变 T 文件的修改时间是否修改 #文件类型 c 配置文件(config file) d 普通文档(documentation) g “鬼”文件(ghost file),很少见,就是该文件不应该被这个rpm包包含 l 授权文件(license file) r 描述文件(read me)

    (2)提取

    #提取某包的某文件提取到当前目录下 rpm2cpio 包全名 | \cpio -idv.文件绝对路径 \字符太长换行标志无实际意义; . 代表当前目录 rpm2cpio #将rpm包转换为cpio格式的命令 cpio#是一个标准的工具,它用于创建软件档案文件和从档案文件中提取文件 cpio 参数<[文件|设备] 参数: -i copy-in模式,还原 -d 还原时自动新建目录 -v 显示还原过程

    #查询ls命令属于哪个软件包 rpm -qf /bin/ls #造成ls误删除假象 mv /bin/ls /tmp #提取RPM包中ls命令道当前目录的/bin/ls下 rpm2cpio /mnt/cdrom/Packages/coreutils-8.22-24.el7.x86_64.rpm |cpio -idv ./bin/ls #把 ls命令复制到/bin目录下,修复文件丢失 cp /root/bin/ls /bin

    1.3.RPM管理–yum在线管理

    1.3.1.配置ip

    #局域网简易配置 TYPE=Ethernet #网络类型:Ethernet以太网 BOOTPROTO=static #引导协议:自动获取、static静态、none不指定 DEFROUTE=yes #启动默认路由 NAME=ens33 #网卡设备的别名 DEVICE=ens33 #网卡的设备名称 ONBOOT=yes #开机自启 IPADDR=192.168.253.110 #ip设置 NETMASK=255.255.255.0 #子网掩码 #连接外网必须配置项 GATEWAY=192.168.253.2 #网关 DNS1=192.168.253.2 #dns #补充 IPV4_FAILURE_FATAL=no #不启用IPV4错误检测功能 IPV6INIT=yes #启用IPV6协议 IPV6_AUTOCONF=yes #自动配置IPV6地址 IPV6_DEFROUTE=yes #启用IPV6默认路由 IPV6_FAILURE_FATAL=no #不启用IPV6错误 UUID=90528772-9967-46da-b401-f82b64b4acbc #网卡设备的UUID唯一标识号 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes MACADDR=00:0C:29:36:97:20 #mac地址

    重启网络服务

    /etc/init.d/network restart service network restart systemctl restart network

    1.3.2.网络yum源

    网络yum源文件:/etc/yum.repos.d/CentOS-Base.repo

    vi /etc/yum.repos.d/CentOS-Base.repo 1 [base] #容器名称,一定放在[]中,默认不改 2 name= #容器说明,可以自己随便写 3 mirrorlist= #镜像站点,这个可以注释掉 4 baseurl= #我们yum源服务器的地址。默认是Centos官方的yum源服务器,是可以使用的,也可按自己要求更换本地yum源地址 5 enabled= #容器是否启用,1表示启用,0表示关闭 6 gpgcheck=1 #RPM数字证书密钥,1表示开启,0表示关闭 7 gpgkey= #数字证书的公钥文件保存位置,不用修改

    例:

    配置网络yum源为163yum源

    1)下载repo文件 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo #提示找不到命令执行 yum install wget 2)备份并替换系统的repo文件 cp CentOS7-Base-163.repo /etc/yum.repos.d/ cd /etc/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo.bak mv CentOS7-Base-163.repo CentOS-Base.repo 3)执行yum源更新命令 yum clean all yum makecache yum update

    1.3.3.yum命令

    #查询 yum list #查找相关软件包 yum search 关键字 #安装 yum install -y 包名 参数: install 安装 -y 自动回答yes #升级 yum -y update 包名 参数: update 升级 -y 自动回答yes. yum update yum源更新 #卸载 yum -y remove 包名 参数: remove 卸载 -y 自动回答yes

    yum软件组管理命令

    #列出所有可用的软件组列表 yum grouplist #安装指导软件组,组名可以由grouplist查询出来 yum groupinstall 软件组名 不支持中文,查询因为可在虚拟机里执行命令,组名带空格,用""隔开 如 yum groupinstall "Minimal Install" #卸载指定软件组 yum groupremove 软件组名

    1.3.4.光盘yum源搭建

    光盘yum源文件/etc/yum.repos.d/CentOS7-Media.repo

    1.挂载光盘 mount /dev/sr0 /mnt/cdrom 2.让其他yum源失效 cd /etc/yum.repos.d #做备份 mv * /etc/repo.bak 3.让光盘yum生效 cd /etc/repo.bak mv CentOS7-Media.repo /etc/yum.repos.d 4.修改光盘yum源CentOS7-Media.repo文件 [c7-media] name=CentOS-$releasever - Media baseurl=file:///mnt/cdrom #地址改为你自己的光盘挂载地址 # file:///media/cdrom/ # file:///media/cdrecorder/ gpgcheck=1 enabled=0 #把enabled=0改为enabled=1,让这个yum源配置文件生效 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    1.4源码包管理–源码包与rpm包区别

    1.4.1区别

    安装之前的区别:概念上的区别,详见1.1

    安装之后的区别:安装位置不同

    1.4.2.RPM包默认安装位置

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

    1.4.3.源码包安装位置

    安装在用户指定位置,一般是/usr/local/软件名/

    1.4.4.安装位置不同带来的影响

    RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是:

    /etc/init.d/httpd start service start httpd

    而源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中,所以只能用绝对路径进行服务的管理,如

    /usr/local/apache2/bin/apachectl start

    1.5.源码包安装过程

    1.5.1安装准备

    安装c语言编译器,gcc

    下载源码包

    http://mirror.bit.edu.cn/apache/httpd

    1.5.2.安装注意事项

    源码包默认保存位置:/usr/local/src

    软件安装位置:/usr/local

    如何确定安装过程报错

    安装过程停止

    并出现error、warning(警告)或no的提示

    1.5.3.软件包安装过程

    1.下载源码包 官方依赖包APR、APR-util、pcre 2.解压源码包 tar -zxvf httpd-2.4.43.tar.gz 3.切换到放置路径 cd /usr/local/src/httpd-2.4.43 #/configure软件配置与检查 定义需要的功能选项 检测系统环境是否符合安装要求 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑 #指定安装路径 ./configure --prefix=/usr/local/apache #查看是否报错如出现: checking for APR-util... no configure: error: APR-util not found. Please read the documentation. 表明APR-util未安装 下载源码包apr-1.4.6 http://labs.mop.com/apache-mirror//apr/apr-1.4.6.tar.gz tar -zxvf apr-1.4.6.tar.gz ./configure --prefix=/usr/local/apr make&&make install 下载源码包aprutil和安装aprutil http://labs.mop.com/apache-mirror//apr/apr-util-1.4.1.tar.gz tar -zxvf apr-util-1.4.1.tar.gz cd apr-util-1.4.1 ./configure --with-apr=/usr/local/apr --prefix=/usr/local/apru-til make && make install #继续执行 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util make make install #启动 /usr/local/apache/bin/apachectl start 如报错: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set 解决方法: vi /usr/local/apache/conf/httpd.conf 添加 ServerName localhost:80

    启动成功如图:

    1.5.4.源码包的卸载

    不需要卸载命令,直接删除目录文件即可。不会遗留任何垃圾文件

    rm -rf /usr/local/apache

    1.6.脚本安装包

    1.6.1.简介

    脚本安装包并部署独立的软件包类型,常见安装的是源码包

    人认为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装

    非常类似于Windows下软件的安装方式

    1.6.2.Webmin的作用

    Webmin是一个基于Web的Linux系统管理界面,您可以通过图形化的方式设置用户账号、Apache、DNS、文件共享等服务

    1.6.3.Webmin安装过程

    下载软件

    http://sourceforge.net/projects/webadmin/files/webmin

    解压缩,并进入解压缩目录

    tar -zxvf

    执行安装脚本

    ./setup.sh #安装位置,默认/etc/webmin Config file directory [/etc/webmin]: #日志路径,默认/var/webmin Log file directory [/var/webmin]: #perl命令默认路径 Full path to perl (default /usr/bin/perl): #端口设置,默认:10000 Web server port (default 10000): #用户名,默认:admin Login name (default admin): #设置密码 Login password: Password again:

    安装完成

    下载软件

    http://sourceforge.net/projects/webadmin/files/webmin

    解压缩,并进入解压缩目录

    tar -zxvf

    执行安装脚本

    ./setup.sh #安装位置,默认/etc/webmin Config file directory [/etc/webmin]: #日志路径,默认/var/webmin Log file directory [/var/webmin]: #perl命令默认路径 Full path to perl (default /usr/bin/perl): #端口设置,默认:10000 Web server port (default 10000): #用户名,默认:admin Login name (default admin): #设置密码 Login password: Password again:

    安装完成

    访问http://ip:10000

    Processed: 0.009, SQL: 8