+
+
Posts List
  1. 简介
    1. 软件包分类
      1. 源码包
      2. RPM包
  2. RPM包管理
    1. 包命名
    2. 依赖性
    3. 安装、升级与卸载
      1. 安装命令
      2. 升级命令
      3. 卸载命令
    4. 查询
    5. 校验
    6. 文件提取
    7. yum在线管理
      1. IP地址配置
      2. 网络yum源
      3. yum命令
      4. 光盘yum源搭建
  3. 源码包管理
    1. 与RPM包区别:
    2. 安装过程
    3. 卸载
    4. 选择
  4. 脚本安装包
    1. 安装过程-1

软件包管理

简介

软件包分类

  • 源码包:大多数都是C语言,安装时需要编译,耗时长
    • 脚本安装包:不需要手动安装
  • 二进制包(RPM包、系统默认包):源码包经过编译得到

源码包

优点:

  • 开源,可以修改
  • 可以自由选择所需功能
  • 编译安装,所以更适合本机系统,更加稳定效率更高
  • 卸载方便,直接删除目录

缺点:

  • 安装步骤较多
  • 编译过程时间较长
  • 一旦报错新手难以解决

RPM包

优点:

  • 系统简单,只通过几个命令就能完成安装、升级和卸载
  • 安装快速

缺点:

  • 不能看到源代码
  • 功能选择不如源码包灵活
  • 依赖性

RPM包管理

包命名

包全名:httpd-2.2.15-15.el6.centos.1.i686.rpm

  • httpd 软件包名
  • 2.2.15 软件版本
  • 15 软件发布的次数
  • el6.centos 适合Linux平台(不写表示全平台适配)
  • i686 适合硬件平台(noarch表示全硬件适配)
  • rpm RPM包扩展名

包全名:操作的包是未安装的软件包时,使用包全名,注意路径,通常用于安装和升级。
包名:操作已经安装的软件包时,使用包名。搜索/var/lib/rpm/中的数据库

依赖性

  • 树形依赖:a->b->c
  • 环形依赖:a->b->c->a(用一条命令同时安装)
  • 模块依赖:模块依赖查询网站
    • 库依赖包(含有.so)不是单独独立的包,而是在一个软件包中的文件,需要在模块依赖查询网站中查询其所属的包。

安装、升级与卸载

安装命令

rpm -ivh 包全名
选项:

  • -i install 安装
  • -v verbose 显示详细信息
  • -h hash 显示进度
  • -nodeps 不检测依赖性

升级命令

rpm -Uvh 包全名
选项:

  • -U upgrade 升级

卸载命令

rpm -e 包名
选项:

  • -e 卸载
  • --nodeps 不检查依赖性

查询

rpm -q 包名
选项:

  • -q query 查询
  • -a all 查询所有
  • -i information 查询软件信息
  • -p package 查询未安装包信息
  • -l list 列表
  • -f file 查询系统文件属于哪个软件包
  • R requires 查询软件包的依赖性

校验

rpm -V verify 校验指定RPM包中的文件有哪些被修改,如果完全一致,则不做任何输出,只有发现有不正确的文件时才会输出。

  • S 文件大小改变
  • M 文件类型或权限改变
  • 5 MD5校验和改变
  • D 文件的主设备号和次设备号改变
  • L 路径改变
  • U 文件的所有者改变
  • G 文件所有组改变
  • T 文件修改时间改变

  • c 配置文件

  • d 普通文档

  • g 鬼文件(该文件不应该被这个RPM包包含)
  • l 授权文件
  • r 描述文件

文件提取

rpm2cpio 包全名 |\ cpio -idv .文件绝对路径 将RPM包转换为cpio格式

* `cpio` 是一个用于从档案文件中提取文件和创建软件档案文件的标准工具

实例:

1
2
3
4
5
6
7
8
rpm -qf /bin/ls  
# 查询ls命令属于哪个软件包
mv /bin/ls /tmp/
# 造成ls命令误删除假象
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
# 提取RPM包中ls命令到当前目录的/bin/ls下
cp /root/bin.ls /bin/
把ls命令复制到/bin/目录 完成修复

yum在线管理

IP地址配置

redhat系:使用setup工具
设置网卡自启:
vi /etc/sysconfig/network-scrpts/ifcfg-eth0 将ONBOOT设置为YES
重启网络服务:
service network restart

网络yum源

vi /etc/yum.repos.d/CentOS-Base.repo

  • [base] 容器名称
  • name 容器说明,可以自己随便写
  • mirrorlist 镜像站点
  • baseurl yum源服务器地址,默认为官方
  • enabled 此容器是否生效
  • gpgcheck RPM数字证书是否生效
  • gpgkey 数字证书的公钥文件保存位置

yum命令

  • yum list 查询所有可用软件包列表
  • yum search 关键字 搜索服务器上所有和关键字相关的包
  • yum -y install 包名 安装
    • install 安装
    • -y 自动回答yes
  • yum -y remove 包名 卸载
  • yum groupinstall 软件组名 安装软件包组
  • yum groupremove 软件组名 卸载软件包组

光盘yum源搭建

  1. 挂载光盘 mount /dev/cdrom /mnt/cdrom/
  2. 让网络yum源文件失效 mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
  3. 修改光盘yum源文件 vim CentOS-Media.repo
1
2
3
4
5
6
7
8
[c6-media]  
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
# 地址为光盘挂载地址
gpgcheck = 1
enabled = 1
# 使生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

注意:Linux中很多配置文件不支持注释和缩进

源码包管理

与RPM包区别:

RPM包安装在默认位置中

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

源码包安装在指定位置中,一般是/usr/local/软件名/

安装位置不同带来的影响:RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是:/etc/rc.d/init.d/httpdstart service httpd start。而源码包安装的服务不能被service搜索到,因为没有安装到默认路径中,只能用绝对路径进行服务管理。

安装过程

  1. 安装C语言编译器
  2. 下载源码包
  3. 解压缩 tar -zxvf 压缩包文件名
  4. 进入解压缩目录(INSTALL为安装说明,README为软件说明)
  5. 软件配置和检查 ./configure
    1. 定义需要的功能选项 ./configure --prefix=/usr/local/软件名
    2. 监测系统环境是否符合安装要求
    3. 生成Makefile文件,用以后续使用
  6. 编译 make
  7. 若上述过程报错 make clean
  8. 安装 make install

⚠️注意:
源码保存位置:/usr/local/src
软件安装位置:/usr/local/

如何确定安装过程报错:

  • 安装过程停止
  • 出现error、warning或no的提示

源码包和RPM包可以共存。

卸载

rm -rf 安装目录

选择

对外访问:RPM包
只供本机使用:源码包

脚本安装包

不是独立的软件包类型,常见安装的是源码包。是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。

安装过程-1

  1. 下载软件
  2. 解压缩,进入解压缩目录
  3. ./setup.sh

本文作者: rhinoc

本文链接: https://www.rhinoc.top/linux_6/

版权声明: 本博客所有文章除特别声明外,均采用BY-NC-SA 4.0国际许可协议,转载请注明。

打赏
Love U 3000
  • Through WeChat
  • Through Alipay