文章目录

  • Linux软件包分为二进制包和源码包
  • 源码包
  • 优点缺点
  • 安装过程
  • 二进制包
  • 优点缺点
  • 依赖性
  • 安装方法
  • RPM
  • RPM包获取方法
  • RPM包格式
  • RPM安装
  • RPM查询
  • RPM升级
  • RPM卸载软件
  • 验证
  • YUM
  • 优点
  • YUM的安装
  • YUM的配置文件
  • 默认的CentOSYUM源
  • YUM命令的使用
  • 自己搭建一个yum仓库
  • 国内的yum源


Linux软件包分为二进制包和源码包

源码包是程序的源代码文件的集合,可以被编译成可执行的程序。这种包需要用户手动编译安装,可以根据需要进行自定义配置,适合有编程经验的用户或需要进行深度定制的使用者。
二进制包是已经编译好的可执行程序,用户可以直接安装和使用,不需要进行编译。这种包适合大多数用户使用,因为它们可以直接安装并立即使用,而不需要任何编译或配置。

源码包

源码包是Linux中软件包的另一种形式,需要在计算机上进行编译以后才可以产生可以直接运行的二进制程序。源代码包里面包括了程序的程序代码,一般就是我们能认识的C语言文件,因此在安装源码包的时候通常会检索系统中是否正确安装gcc编译器,并且源代码安装的时间会比较长

优点缺点

优点
自由度高:源码包的使用可以根据个人需求和系统环境进行自由定制和编译,更好地满足个人需求和特殊应用需求。
灵活性强:源码包安装的灵活性可以更好地适应不同的系统环境和应用场景。
安全性高:源码包没有二进制文件,可以避免一些恶意软件的风险。
可靠性高:源码包的更新和维护通常由软件的作者或社区来完成,可以更好地保证软件的质量和稳定性。

缺点
安装过程繁琐:源码包需要用户自己下载、编译、安装,整个过程较为繁琐,对用户的技术要求较高。
编译时间长:由于源码包需要编译生成可执行文件和依赖库等文件,编译时间较长,特别是在低配置的计算机上。
可能存在依赖问题:源码包安装过程中需要满足各种依赖关系,一旦依赖关系出现问题,将可能导致安装失败或软件无法正常 工作

安装过程

下载源码包:可以从软件的官方网站或者开源代码库中下载源码包,通常是以.tar.gz、.tar.bz2、zip等格式压缩的文件。
解压源码包:使用tar命令解压源码包,例如:tar -zxvf package.tar.gz。
配置环境:源码包的安装需要满足各种依赖关系,可以使用./configure命令查看系统环境的配置情况,并对源码包进行配置。
编译:使用make命令编译源码包,可以使用make命令的参数来指定编译选项,例如:make。
安装:使用make install命令将编译生成的文件复制到系统路径中,完成软件的安装,例如:make install。
验证:启动安装好的软件,并进行验证,确保软件能够正常工作。

源码包的安装过程相对于软件包管理系统来说较为繁琐,但可以根据个人需求和系统环境进行自由定制和编译,更好地满足个人需求和特殊应用需求。

二进制包

二进制包,也就是源码包经过成功编译之后产生的包,可以马上运行的程序软件包,类似与Windows系统的exe文件。

优点缺点

优点:安装过程简单快速

缺点:没办法查看源代码,选择功能不灵活,有依赖性

依赖性
  1. 树形依赖:若安装a,则需要提前安装b,安装b需要提前安装c

安装方法:安装c → 安装b → 安装a

  1. 环形依赖:若安装a,则需要提前安装b,安装b需要提前安装c,安装c需要提前安装a

安装方法: abc一块安装

  1. 模型依赖:安装a时缺少某些文件

通过官网:http://www.rpmfind.net/
结合自己所使用的系统版本可以查询缺少的文件属包的名称

安装方法

yum安装或rpm安装

rpm安装手动进行安装,自己解决包之间的依赖性

yum安装会自动判断依赖关系

RPM

在linux中,rpm全称“Red Hat Package Manager”,中文意思为“Red Hat软件包管理”,即Red Hat贡献出来的软件包管理工具;它是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中

RPM包获取方法
  • 各种网站,例如http://www.rpmfind.net/,http://mirrors.sohu.com,http://rpm.pbone.net/
  • 系统光盘
RPM包格式
[root@localhost home]# ls
unzip-6.0-21.el7.x86_64.rpm

unzip   软件名
6.0     版本号
21      修订次数
e17     操作系统版本
x86_64  64位的操作系统
rpm     rpm包
RPM安装
rpm -ivh 软件包名
-i   安装
-v   显示详细信息
-h   显示安装进度

rpm -ivh 软件包名 --force
--force 将安装过的软件重新安装一遍,一般用于个别配置文件丢失
rpm -ivh 软件包名 --test
--test  不真正安装,只是判断下是否能安装

linux 升级 docker nginx linux 升级软件包_源码包

RPM查询

rpm -qa 软件包名 查询已安装的软件包

rpm -qa |grep abc 查询软件包中含有abc的软件包

rpm -qi 软件包名 查询此软件的详细信息

rpm -qip 软件包名 查询未安装的软件包信息

rpm -ql 软件包名 查询已安装的软件中含的文件及文件的目录

rpm -qlp 软件包名 查询未安装的软件中包含的文件及文件的目录

rpm -qf 文件名 查询文件属于哪个RPM安装包(必须是RPM安装包里的文件)

[root@localhost home]# rpm -qa
rubygem-bigdecimal-1.2.0-36.el7.x86_64
firewalld-filesystem-0.6.3-11.el7.noarch
.....
...

[root@localhost ~]# rpm -qa |grep unzip
unzip-6.0-21.el7.x86_64

[root@localhost ~]# rpm -qi unzip 
Name        : unzip
Version     : 6.0
Release     : 21.el7
Architecture: x86_64
....
..

[root@localhost Packages]# rpm -qip zsh-5.0.2-34.el7_8.2.x86_64.rpm 
Name        : zsh
Version     : 5.0.2
Release     : 34.el7_8.2
Architecture: x86_64
....
..

[root@localhost Packages]# rpm -ql unzip 
/usr/bin/funzip
/usr/bin/unzip
/usr/bin/unzipsfx
/usr/bin/zipgrep
....
..

[root@localhost Packages]# rpm -qlp zsh-5.0.2-34.el7_8.2.x86_64.rpm 
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
....
..

[root@localhost]~# rpm -qf /usr/bin/funzip 
unzip-6.0-21.el7.x86_64
RPM升级

rpm -Fvh 软件包名 升级安装(安装过旧版本才会升级到新版本,如果没有安装过,就不会进行安装)

rpm -Uvh 软件包名 升级安装(安装过旧版本才会升级到新版本,如果没有安装过,就直接安装)

-U:升级软件,若未软件尚未安装,则安装软件

-F:升级软件

[root@localhost]/home# rpm -Fvh unzip-6.0-21.el7.x86_64.rpm 

[root@localhost]/home# rpm -Uvh unzip-6.0-21.el7.x86_64.rpm
f4a80eb5: NOKEY
准备中...                          ################################# [100%]
        软件包 unzip-6.0-21.el7.x86_64 已经安装
RPM卸载软件

rpm -e 软件包名

rpm -e 软件包名 --nodeps 不检测依赖性,直接强制卸载

验证

rpm -V 已安装的软件名 校验指定的软件包中的文件

rpm -Vf 系统文件名 校验某个系统文件是否被修改

linux 升级 docker nginx linux 升级软件包_linux_02

linux 升级 docker nginx linux 升级软件包_包名_03

  • . 表示所验证属性一致;
  • S表示文件大小被修改
  • M表示文件的类型或者权限被修改
  • 5表示文件内容被修改
  • D表示设备的主副码被修改
  • L表示路径被修改
  • G表示所属组被修改
  • T表示文件修改时间被改变
YUM

yum,全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。就好像 Windows 系统上可以通过 360 软件管家实现软件的一键安装、升级和卸载,Linux 系统也提供有这样的工具,就是 yum

使用YUM进行RPM包的管理,非常简单方便

优点
  1. 方便,只要一条命令,剩下你什么都不用做了,自己帮你判断依赖安装
  2. 快,只要源网络好,你的网络也快,那么安装是很快的时间,不会像源码安装那样久。
  3. 升级方便
YUM的安装

Centos默认安装了yum,不需要另外安装

linux 升级 docker nginx linux 升级软件包_包名_04

YUM的配置文件

主要配置文件:/etc/yum.conf

主配置文件配置了一个特殊的仓库,名称为main。main是为其他仓库提供默认的全局配置的

linux 升级 docker nginx linux 升级软件包_源码包_05

[main]                                          # main 仓库,[]表示定义仓库的名称是什么
cachedir=/var/cache/yum/$basearch/$releasever     # RPM包的缓存位置
keepcache=0                                   # RPM包在本地是否需要长期保存
debuglevel=2                                  # 日志级别 范围为0-10
logfile=/var/log/yum.log                      # 日志文件
exactarch=1                                   # 下载的RPM包是否需要与本地平台完全匹配
obsoletes=1                                   # 允许更新陈旧的RPM包
gpgcheck=1                                    # 校验rpm包的来源是否有效和安全
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
默认的CentOSYUM源

/etc/yum.repos.d/xxxx.repo

linux 升级 docker nginx linux 升级软件包_linux_06

CentOS自带的这些配置文件中,其实只有CentOS-Base.repo文件有效。按照需求,这些文件可以删除,或改名,或自己建立一个.repo的配置文件。实际使用中,可以参考CentOS-Base.repo的配置自定义.repo文件。

查看CentOS-Base.repo配置文件

linux 升级 docker nginx linux 升级软件包_服务器_07

CentOS-Base.repo配置文件参数说明

[ ... ]:仓库的名称,不能重复。

name:对仓库的描述,该项必须有。

baseurl:配置仓库的路径,用于指定一个url。

mirrorlist:指向一个镜像列表,里面有多个url。

enabled:是否启用当前仓库,值为1或0,默认为1。

gpgcheck:是否校验rpm包的来源是否有效和安全,值为1或0,默认为1。

gpgkey:验证RPM包的密钥文件路径,该文件可以在远处服务器上,也可以在本地。

cost:代价,其本质是仓库优先级的配置,值越低,表示访问的代价越低,也即优先使用

注意:配置文件中的"="号的前后不能有空格。

YUM命令的使用

语法

yum [options] [subcommand] [package ...]

yum 选项 子命令 软件包

yum显示信息

yum  list installed                # 只显示已安装的包
yum  list available                # 只显示没有安装,但可以安装的软件包
yum  list updates                  # 查看所有可更新的包
yum  list extras                   # 显示不属于任何仓库的,额外的包
yum  list obsoletes                # 显示废弃的包
yum  list recent                   # 新添加进yum仓库的包
yum list                           # 显示以及安装和未安装的软件包
yum list 软件包名                   # 显示软件包信息
仓库
yum  repolist                      # 查看当前能够使用的yum仓库
yum  repolist all                  # 查看所有的yum仓库
yum  repolist enabled              # 显示启用的仓库
yum  repolist disabled             # 显示禁用的仓库
包管理
yum info 软件包名                   # 显示软件包的详细信息
yum groupinfo <group_name>         # 显示软件组group信息

yum搜索 查询

yum search mysql                   # 查询软件包中带有mysql的软件包
yum deplist <package_name>		   # 仅仅 查看程序rpm依赖情况

查询某个文件是由哪个软件包的
yum provides  文件
yum whatprovides 文件

linux 升级 docker nginx linux 升级软件包_服务器_08

yum清空缓存

yum仓库若更新,则本地缓存就没有意义了。所以本地缓存需要清空。

命令格式:yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

手动在本地建立缓存

yum makecache

安装应用程序

yum install -y 软件包1 ...软件包n         #安装软件包
-y    表示安装过程中如果让你做出选择 yes/no  自动选择yes

注:若安装(卸载,升级)多个包,则使用包名之间使用空格隔开

linux 升级 docker nginx linux 升级软件包_源码包_09

重新安装软件包
yum reinstall -y 包1 ....包n  

升级软件包
yum update 包1...包n
yum update-to 包-版本号      # 指定版本号

检测可以升级的包
yum check-update 

卸载软件包
yum remove 包1...包n
注意:若该包被依赖,则该卸载可能会导致一些问题,如A依赖B,若卸载B,则A也会被卸载

本地安装升级RPM包
yum install rpm包路径 
yum update rpm包路径
安装包组
yum groupinstall -y 包组1...包组n 
卸载包组 
yum groupremove -y 包组1...包组n

查看此前安装卸载等操作历史

命令:yum history

自己搭建一个yum仓库

yum仓库又称为yum源,yum仓库一般会支持ftp协议(ftp://),http协议(http://),文件协议(file://)

先把默认的repo文件给移走

[root@localhost ~]# mv /etc/yum.repos.d/* /media/

挂在Centos镜像文件

[root@localhost ~]# mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt/
mount: /dev/loop0 写保护,将以只读方式挂载
[root@localhost ~]# cp -rvf /mnt/* /opt/centos/

编写repo配置文件

linux 升级 docker nginx linux 升级软件包_linux_10

配置完成后需要清空yum缓存
yum clean all    # 清空yum缓存
yum repolist     # 查看当前的可用的yum仓库
国内的yum源

阿里云yum镜像仓库

  1. 安装

首先把默认的yum源移走

mv /etc/yum.repos.d/* /media
  1. 下载对应的repo文件
wget -O /etc/yum.repos.d/aliyun.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 下载阿里云的镜像并重命名
  1. 清除缓存yum缓存
yum clean all
  1. 将服务器上的软件包信息,本地缓存
yum makecache