Linux系统软件管理

时间:2022-12-26 00:46:15

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安装包及依赖

源码管理

Linux系统软件管理

RPC知识拓展

Linux系统软件管理