Linux整个体系的关键不在于系统本身,而是在于可以基于Linux系统去安装和配置企业中相关的软件,数据及应用程序。
软件管理的三种方式
•rpm管理
•yum管理
•源码方式管理
Linux软件包管理大致可分为二进制包,源码包,使用的工具也各不相同。
Linux常用软件包分为两种,分别是源代码包(Source Code),二进制包(Binary Code),源代码包是没有经过编译的包,需要经过GCC,C++编译器环境编译才能运行,二进制包无需编译,可以直接安装使用。
通常而言,可以通过后缀简单区分源码包和二进制包,例如.tar.gz、.zip、.rar结尾的包通常称之为源码包,以.rpm结尾的软件包称之为二进制包。
真正区分是否为源码还是二进制还得基于代码里面的文件来判断,
例如包含.h、.c、.cpp、.cc等结尾的源码文件,称之为源码包,而代码里面存在bin可执行文件,称之为二进制包。
CentOS操作系统中有一款默认软件管理工具,红帽包管理工具(Red Hat Package Manager)
使用RPM工具可以对软件包实现快速安装,管理及维护。
RPM管理工具使用的操作系统包括:CentOS,RedHat,Fedora,SUSE等。
RPM工具常用于管理.rpm后缀结尾的软件包。
RPM管理
RPM工作原理
当我们使用rpm工具安装软件包时,它会首先找到软件包中的一个记录文件,该文件记录了这个软件安装时所需的依赖包,如果包已经存在,则可以顺利安装,如果不存在,则提示缺少响应的依赖包。
RPM优点
•软件已经编译打包,所以传输和安装方便,让用户免除编译
•在安装之前,会先检查系统磁盘,操作系统版本,避免安装错误
•安装好之后,软件的信息会记录在Linux主机的数据库上,方便查询,升级和卸载
RPM缺点
•软件包安装的环境必须与打包时的环境一致
•必须安装软件的依赖软件
rpm 常用命令
#查询包是否已安装
[root@template home]# rpm -q ck
package ck is not installed
[root@template home]# rpm -q httpd
httpd-2.4.6-93.el7.centos.x86_64
#查询所有已安装的包
rpm -qa
#根据文件反向查找包:
可以通过which arp 找到命令路径,然后通过qf查询该文件时由哪个包提供
[root@template home]# which arp
/usr/sbin/arp
[root@template home]# rpm -qf /usr/sbin/arp
net-tools-2.0-0.25.20131004git.el7.x86_64
#查询软件安装路径:
rpm -ql httpd
#查询软件的配置文件路径:
rpm -qc nginx
#查询软件的版本信息:
rpm -qi httpd
#安装软件包
rpm -ivh httpd
#安装软件包,忽略依赖:
rpm -ivh --nodeps httpd
#升级软件包
#需要当前目录有这个软件包才行,否则会报错
rpm -Uvh httpd-2.4.6-88.e17.centos.x86_64.rpm
#卸载软件包
rpm -e httpd
#强制卸载
rpm -e --nodeps httpd
#测试安装
#一个软件包是否能够安装在系统上,不真正安装
rpm -ivh --test httpd-2.4.6-88.e17.centos.x86_64.rpm
#rpm数据库命令
#初始化系统的rpm数据库:
rpm --initdb
#重建系统的rpm数据库
rpm --rebuilddb
#向系统导入软件包的公钥
rpm --import
#查询未安装软件包的脚本
rpm -qp --scripts httpd-2.4.6-88.e17.centos.x86_64.rpm
#查询已安装的包的脚本
rpm -q --scripts httpd
#查询软件包的以来稳健
rpm -qp --requires httpd-2.4.6-88.e17.centos.x86_64.rpm
YUM管理
yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化的更细与管理RPM包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐的一次次下载,安装。
yum工作原理
当执行yum install httpd -y时,yum会先访问本地缓存,有则直接安装,没有则通过元数据找到该软件包,通过该软件内部数据库的提示,找到相应的依赖包,然后继续查找元数据中是否有这些依赖包,如果没有会提示依赖包没有镜像提供。
如果httpd软件包和依赖包都找到了,就根据配置文件中的url去下载。
配置网络yum源
#安装163的yum源
wget -o /etc/yum/repos.d/CentOS7-Base-163.repo \
http://mirrors.163.com/.help/CentOS7-Base-163.repo
#生成缓存
yum clean all
yum makecache
#安装阿里云的yum源
wget -o /etc/yum/repos.d/CentOS7-Base-163.repo \
http://mirrors.aliyun.com/repo/Centos-7.repo
配置本地yum源
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
vim /etc/yum.repos.d/centos-7-local.repo
[local]
name=centos-$releasever-local
baseurl=file:///mnt/cdrom
gpgcheck=0
enable=1
yum 常用命令
1、查询命令在哪个套件里
yum provides 命令名
2、搜索软件包
yum whatprovides *tshark*
3、查看包是否安装
yum list 包名
4、找到所需依赖的全称
yum search [名称]
5、升级所有包同时也升级软件和系统内核
yum -y update
6、升级系统内核
yum -y update kernel
7、只升级所有包,不升级软件和系统内核
yum -y upgrade
8、移除epel仓库
yum -y remove epel-release
9、安装软件
yum -y install oftware-name
yum install 包的名字-版本号
升级
yum update software-name
卸载软件
yum remove software-name
12、清除yum缓存
yum update packages 升级软件
yum remove packages 移除软件packages软件包
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
13、使用yum下载rpm包
13.1 命令格式
yum install --downloadonly --downloaddir=<directory> <package-name>
--downloadonly:只下载选项而不进行安培训
--downloaddir:指定下载目录,默认下载的RPM包会保存在/var/cache/yum/x86_64/[centos|fedora-version|7]/[repository|updates]/packages目录中。
注:在CentOS/RHEL6或更早期的版本,你需要安装一个单独yum插件(名称为 yum-plugin-downloadonly)才能使用--downloadonly;另外,如果下载的包,存在没有满足依赖的依赖包,yum将会把所有的依赖关系包下载,但是都不会被安装。
13.2 下载tcpdump离线rpm包
[root@localhost ~]# yum install --downloadonly tcpdump
[root@localhost ~]# cd /var/cache/yum/x86_64/7/updates/packages/
14、使用yumdownloader下载rpm包
14.1命令格式
yumdownloader <package-name> --resolve --enablerepo=[repo] #下载rpm包
--resolve依赖包也会被下载
--enablerepo=<repository>指定yum源,如果不知可以省去此参数
注:下载的包会被保存在当前目录中,你需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件。
14.2 安装yum工具包子集
[root@localhost ~]# yum install yum-utils
14.3 实例下载rpm包
[root@localhost ~]# makdir gcc-9.3.1 && cd gcc-9.3.1
[root@localhost gcc-9.3.1]# yumdownloader devtoolset-9-gcc* --resolve #下载gcc安装包及依赖
源码管理
RPC知识拓展