# 软件包简介

# 源码包

时间长,需要编译

  • 脚本安装包

  • 优点

    • 开源

    • 可以自由选择所需的功能

    • 编译安装,所以更加适合自己的系统、稳定、效率高

    • 卸载方便

# 二进制包

时间短,已编译,但是不能看源代码

  • Linux 不同系列最大的区别就是二进制包不同

  • RPM 包:RedHat 系列

  • 系统默认包

 


 

# RPM 命令管理

# rpm

压缩文件至 .gz 格式(不能压缩目录)

原意:

  • RPM Package Manager

执行权限:

  • 所有用户

语法:

shell
rpm [-ivh] 包全名
-i:安装
install
-U:升级
Upgrade
-e:卸载
erase
-v:显示详细信息
verbose
-h:显示进度
hash
-q:查询
query
- -i:查询安装信息
  information
- -f:查询系统文件属于哪个软件包
  file
- -R:查询软件包的依赖性
  requires
- -p:查询未安装包信息
  package
-V:检验指定RPM包中的文件
Verify
-a:所有
all
--nodeps:不检测依赖性
no depends

 

# RPM 包命名规则

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

  • httpd:软件包名

  • 2.2.15:软件版本

  • 15:软件发布的次数

  • el6.centos:适合的 Linux 平台

  • i686:适合的硬件平台

  • rpm:rpm 包扩展名

 

# RPM 包依赖性

模块依赖查询网站

  • 树形依赖:a->b->c

  • 环形依赖:a->b->c->a

 

# 安装、升级和卸载

  • 包全名:操作的包是没有安装的包,且要注意路径

  • 包名:操作的包是已经安装的软件包,使用包名

  • 安装卸载都应该按依赖结构

    rpm -e 只会卸载当前包,不会卸载依赖包

 

# 查询

shell
rpm -q [ 包名 / 包全名 ]

 

# 校验和文件提取

rpm -V [ 包名 ]

  • 验证内容中的 8 个信息

    shell
    S:文件大小是否改变
    M:文件的类型或文件的权限(rwx)是否被修改
    5:文件的MD5校验和是否改变
    D:设备
    L:文件路径是否改变
    U:文件的属主(所有者)是否变化
    T:文件的修改时间是否变化
  • 文件类型

    shell
    c:配置文件
    config file
    d:普通文件
    documentation
    g:“鬼”文件
    ghost file,很少见,就是这个文件不该被这个RPM包含
    l:授权文件
    license file
    r:描述文件
    read me

 

# RPM 包中文件提取

# rpm2cpio

执行权限:

  • 所有用户

语法:

shell
rpm2cpio 包全名 | cpio -idv ./文件绝对路径

 

# cpio

执行权限:

  • 所有用户

语法:

shell
cpio [-idv] <[文件|设备]
-i:copy-in模式,还原
-d:还原时自动新建目录
-v:显示还原过程

 


 

# yum 在线管理

# IP 地址配置和网络 yum 源

# IP 地址配置方法

  • 直接修改 /etc/sysconfig/network-scipts/ifcfg-ens33

  • setup (CentOS6)

  • nmtui (CentOS7)

 

# 网络 yum 源

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

  • [base]:容器名称
    一定要放在 [] 中

  • name:容器说明
    可以自己随便写

  • mirror:镜像站点
    这个可以注释掉

  • baseurl:yum 源服务器的地址
    默认是 CentOS 的官方的 yum 源服务器,是可以使用的,如果慢可换成其他 yum 源地址

  • enabled:此容器是否生效
    enable=1:生效;enable=0:不生效;不写默认生效

  • gpgcheck:RPM 的数字证书是否生效
    gpgcheck=1:生效;gpgcheck=0:不生效

  • gpgkey:数字证书的公钥文件保存位置
    不用修改

 

# yum 命令

# 查询

查询所有可用软件包列表

shell
yum list

搜索服务器上所有和关键字相关的包

shell
yum search 关键字

# 下载

shell
yum -y install 包名
(-y 自动回答yes)

# 升级

shell
yum -y update 包名

⚠️⚠️⚠️不加包名会升级 Linux 所有软件包,包括内核!⚠️⚠️⚠️

# yum 软件组管理

列出所有可用的软件组列表

shell
yum grouplist

安装指定软件组,组名可以由 grouplist 查询出来

shell
yum groupinstall 软件组名

卸载指定软件组

shell
yum groupremove 软件组名

 

# 光盘 yum 源搭建

  1. 挂载光盘

    shell
    mount /dev/cdrom/ mnt/cdrom
  2. 让网络 yum 源文件失效

    shell
    cd /etc/yum.repos.d/
    mv CentOS-Base.repo CentOS-Base.repo.bak # 改名使这些文件失效
    mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
    mv CentOS-Vault.repo CentOS-Vault.repo.bak
  3. 修改光盘 yum 源文件

    1. 修改光盘挂载点,/media/CentOS -> baseurl 为默认挂载点,/mnt/cdrom 为自己设置的光盘挂载点
    shell
    vim  CentOS-Media.repo
    baseurl = file:///media/CentOS => baseurl = file:///mnt/cdrom
    1. 其余挂载点注释,否则会报错

    2. 使能: enable = 0 => `enable=1``

    3. 验证: yum list

 


 

# 源码包管理

# 源码包和 RPM 包的区别

概念区别(安装之前的区别)、安装位置(安装之后的区别)

# RPM 包安装位置

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

# 源码包安装位置

/usr/local/软件名/ :Linux 给外部软件分配的安装位置

# 安装位置不同带来的影响

RPM 包:RPM 包安装的服务可以使用系统服务管理命令 (service) 来管理

shell
systemctl start httpd
# 启动 apache 后没有现象,关闭防火墙 systemctl stop firewalld

源码包:不能被系统服务管理命令管理,因为没有安装到默认路径,只能使用绝对路径管理

shell
/usr/local/apache2/bin/apachectl start

 


 

# 脚本安装包

# 安装

shell
cd webmin-1.900
./setup.sh
选项选择

# 其他

查询文件夹大小

shell
du -sh 文件夹

防火墙开放固定端口

shell
# 开放端口,--permanent 表示永久生效
firewall-cmd --zone=public --add-port=[端口号]/tcp --permanent
# 重启防火墙服务后生效
systemctl restart firewalld