第十一章 管理Linux软件包和进程

1. 源码下载安装软件

1.1. 概念

源码文件:程序编写者使用C或C++等语言编写的原始代码文本文件

源码文件使用.tar.gz或.tar.bz2打包成压缩文件

1.2. 特点

源码包可移植性好,与待安装软件的工作环境依赖性不大

由于有编译过程,其代码运行效率较高,是针对当前使用者环境的"量体裁衣"

安装功能可以定制,可以选择需要的功能进行安装

卸载方便,只需删除对应安装目录即可,没有Windows"注册表"的概念

安装过程较为麻烦

1.3. 安装过程

下载解压缩源码压缩包

分析安装软件环境

编译软件

安装软件

1.4. 例:安装Apache源码包

1.4.1. 准备工作

安装必备的编译软件

复制代码
[root@server ~]# yum  install  gcc   gcc-c++  -y

1.4.2. 下载apache源码包

复制代码
[root@server ~]# wget  https://dlcdn.apache.org/httpd/httpd-2.4.57.tar.gz

1.4.3. 解压缩

复制代码
[root@server ~]# tar  xzvf  httpd-2.4.57.tar.gz 
[root@server ~]# cd   httpd-2.4.57

1.4.4. 安装环境分析

软件包目录中有configure可执行文件,用于对安装环境进行测试、检测所需库文件、工具文件是否存在、 检测依赖关系、编译器汇编器连接器的检查

执行方式:./configure

复制代码
[root@server httpd-2.4.57]# ./configure
# 提示缺少apr软件,则安装
[root@server httpd-2.4.57]# yum install  apr* -y
[root@server httpd-2.4.57]# ./configure  # 重新检测
# 提示缺少pcre软件,下载安装
[root@server httpd-2.4.57]# yum  install  pcre*  -y
[root@server httpd-2.4.57]# ./configure

1.4.5. 编译软件

作用:安装./configure命令生成的Makefile文件中记录的信息进行编译,生成二进制安装文件

格式:make

注意:make过程中若报错,需要查看提示信息,根据信息修改,一般为缺少头文件等问题

复制代码
[root@server httpd-2.4.57]# make
# 提示缺少redhat-rpm-config软件包
[root@server httpd-2.4.57]# yum install redhat-rpm-config
[root@server httpd-2.4.57]# make

1.4.6. 安装软件

根据make命令生成的二进制安装文件,进行软件安装,默认安装目录:usr/local或者/usr/loacl/bin目录下

方法:make install

复制代码
[root@server httpd-2.4.57]# make  install

注意:也可以使用符号连接多条语句

复制代码
./configure && make && make install 

2. RPM管理工具

2.1. 概念

2.1.1. RPM

RPM(Redhat Package Manager)由Red Hat公司提出的一种软件包管理标准

是Linux各发行版中应用最广泛的软件包格式之一(还有debian的发行版deb安装包)。

产生原因:软件制作者在其工作环境下将软件编译完毕后再进行发布,以此减少安装编译时间,要求:软 件安装环境与编译时的环境要相同

2.1.2. RPM安装软件要求

软件安装环境必须与打包软件环境一致

必须满足软件依赖性

软件卸载时必须小心,最底层软件不能先卸载

2.1.3. rpm软件包命名格式

含义:软件名-版本号-发行号.操作系统版本.硬件平台的类型.rpm

如:zsh-5.0.2-14.el7.x86_64.rpm

2.1.4. rpm包相关网站

http://rpmfind.net/

http://rpm.pbone.net/

2.2. rpm软件安装

2.2.1. 格式

复制代码
rpm  -参数   软件包名

2.2.2. 参数

|---------------|-----------------|
| 参数 | 说明 |
| -i, --install | 安装软件包 |
| --nodeps | 不验证软件包依赖 |
| --force | 安装时提示已安装则重新覆盖安装 |
| -v, --verbose | 提供更多的详细信息输出 |
| -U | 软件包升级 |
| -e | 软件包卸载 |

2.2.3. 安装过程:

读取PRM软件包头部数据,进行软件依赖性查询

若满足条件则安装否则安装失败

2.3. 示例

2.3.1. 安装nginx

复制代码
[root@server ~]# wget  http://nginx.org/packages/rhel/9/x86_64/RPMS/nginx-1.24.0
1.el9.ngx.x86_64.rpm
[root@server ~]# rpm -ivh  nginx-1.24.0-1.el9.ngx.x86_64.rpm 

2.3.2. 安装qq

复制代码
[root@server ~]# cd  /
[root@server /]# wget  https://dldir1.qq.com/qqfile/qq/QQNT/2355235c/linuxqq_3.1.1
11223_x86_64.rpm
[root@server /]# rpm  -ivh  linuxqq_3.1.1-11223_x86_64.rpm 
错误:依赖检测失败:
libXScrnSaver 被 linuxqq-3.1.1_11223-1.x86_64 需要
[root@server /]# yum install  libXScrnSaver
[root@server /]# rpm  -ivh  linuxqq_3.1.1-11223_x86_64.rpm 

2.3.3. 直接下载并安装wps

复制代码
[root@server /]# rpm  -ivh  https://wps-linux
personal.wpscdn.cn/wps/download/ep/Linux2019/11698/wps-office-11.1.0.11698
1.x86_64.rpm

2.3.4. 卸载

复制代码
[root@server /]# rpm -evh tree

2.4. rpm查询功能

2.4.1. 格式

复制代码
rpm --q  包名
# -q常与下面参数组合使用

|----|--------------------|
| 参数 | 说明 |
| -a | 查询所有已安装的软件包 |
| -l | 显示已安装软件包的相关文件列表和信息 |
| -f | 查询文件所属软件包 |
| -i | 显示已经安装的rpm软件包信息 |

2.4.2. 示例

复制代码
# 查询某个包有没有安装(包名不能写错)
[root@server ~]# rpm -q httpd
# 查询所有已经安装的包
[root@server ~]# rpm -qa
# 查询安装该包后会产生哪些文件
[root@server /]# rpm -ql gcc
#查询该文件由哪个软件包产生
[root@server /]# rpm -qf /usr/bin/ls
coreutils-8.30-12.el8.x86_64

3. YUM/DNF管理工具

3.1. 概念

3.1.1. YUM

YUM (Yellow dog Updater,Modified)

RHEL8中默认使用的软件批量管理工具由原版本的yum换成了速度更快的dnf(DNF = Dandified YUM), 原有的yum命令仅为dnf的软链接,当然依旧可以使用。

复制代码
[root@server /]# ll `which yum`
lrwxrwxrwx. 1 root root 5  9月 15  2022 /usr/bin/yum -> dnf-3

3.1.2. YUM/DNF 功能

在线下载、 安装、 卸载、 升级rpm软件包

自动查找并解决rpm包之间的依赖关系,一次性安装所有具有依赖关系的rpm包,而无需管理员逐个、 手 工地去安装每一个rpm包

3.1.3. 工作原理

将编译好的软件放置在YUM服务器中,并将这些软件的依赖性等信息记录下来形成表格组成数据库

用户安装软件时会向网络中的YUM服务器下载对应表格并与本机RPM数据库进行比较,最后一同下载全部 软件进行安装,自动解决依赖性

YUM软件仓库:记录软件依赖性等信息的数据库

系统会去读取 /etc/yum.repos.d/ 目录下的 .repo 结尾的文件,从该文件中读取以下内容实现装包:

包含各种rpm安装文件的软件仓库(rhel8有两个仓库,rhel7只有一个仓库)

BaseOS存储库:提供一套核心的底层操作系统功能,为基础软件安装库

AppStream存储库:包括额外的用户空间应用程序、运行时语言和数据库

3.2. 命令

复制代码
# 查看包、包组相关信息
yum repolist [all]  # 查看系统中yum资源库配置信息
yum list all  # 列出仓库里所有可安装的软件包
yum list installed [包名]  # 列出己经安装的所有的或指定的rpm包(包名中可使用匹配符)
yum info 包名  # 查看指定软件包的详细信息
yum grouplist  # 查看仓库里而所有包组
yum groupinfo 包组名  #查看指定包组里而的详细信息
# 安装、更新包和包组
yum install [-y] 包名 # 安装指定的软件包,-y则在工作过程中需要使用者响应, 这个选个参数可以直接
回答yes
yum update [-y] 包名 # 升级指定的软件包或主机中所有已安装的软件包
yum groupinstall 包组名 # 安装指定包组里面的所有包
# 卸载软件包
yum remove [-y] 包名 # 卸载已经安装在系统中的指定的软件包
# 搜索文件由哪个包产生
yum provides 文件名   # 查找指定的文件属于哪个包
yum whatprovides /etc/fstab   # 查看这个文件是由那个包提供的
# 模糊搜索包名
yum search 模糊包名 #  查看模糊包名的软件包
#  清空缓存
yum clean packages all #  清除下载到本机的指定的软件包或所有软件包的yum源缓存

3.3. 配置yum源

3.3.1. 建立本地源

复制代码
# 将本地光盘挂载至本地目录/media下
[root@server /]# mount /dev/cdrom /media
mount: /media: WARNING: source write-protected, mounted read-only.
# 注意有2个yum源
[root@server /]# cd /media/
[root@server media]# ls
AppStream  EFI   extra_files.json  images    
redhat-release
BaseOS     
EULA  GPL               
# 移动到yum源配置文件路径
[root@server media]# cd /etc/yum.repos.d
[root@server yum.repos.d]# ls
CentOS-9-Stream.repo  redhat.repo
media.repo               
isolinux  RPM-GPG-KEY-redhat-beta
# 备份已存在yum源配置文件,使其失效
[root@server yum.repos.d]# mv CentOS-9-Stream.repo CentOS-9-Stream.repo.back
[root@server yum.repos.d]# mv redhat.repo redhat.repo.back
[root@server yum.repos.d]# ls
CentOS-9-Stream.repo.back  redhat.repo.back
# 新建本地yum源配置文件
[root@server yum.repos.d]# vim  dvd.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/BaseOS
gpgcheck=0
[Appstream]
name=Appstream
baseurl=file:///media/AppStream
gpgcheck=0
# 重建缓存
[root@server yum.repos.d]# yum  makecache
[root@server yum.repos.d]# yum repolist
# 验证能否装包成功
[root@master ~]# yum install tree -y

3.3.2. 建立网络源

Redhat9暂时无公开的网络源,可以使用Centos9的yum源

使用xftp将配置文件上传到/etc/yum.repos.d目录

重建缓存生效

4. 管理进程

4.1. 概念

4.1.1. 程序、进程、线程

程序: 二进制文件,文件存储在磁盘中,例如/usr/bin/目录下

进程:进程是已启动的可执行程序的运行实例 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程

线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

一条 线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任 务。 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有

线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执 行。

4.1.2. 进程分类

4.2. 查看进程

4.2.1. ps命令

作用:ps显示某个时间点的程序运行情况

格式

复制代码
ps  -参数

参数

复制代码
-a :显示所有用户的进程
-u :显示用户名和启动时间
-x :显示 没有控制终端的进程
-e :显示所有进程,包括没有控制终端的进程
-l :长格式显示
-w:宽行显示,可以使用多个 w 进行加宽显示 
-f:做一个更完整的输

4.2.2. top命令

格式

复制代码
top [-d 数字]  |  [-bnp]

参数

复制代码
-d:后面可以接秒数,就是整个进程界面更新的秒数,默认是5秒
-b:以批次的方式执行top,还有更多的参数可用。通常会搭配数据流重定向来将批处理的结果输出为文件。
-n:与-b搭配,进行几次top的输出结果
-i:不显示闲置或者僵死的进程信息
-c:显示进程的整个命令路径,而不是只显示命令名称
-s:使top命令在安全模式下运行,此时top的交互式指令被取消,避免潜在危险
-p:指定某些个PID来进行查

[root@localhost ~]# top -d 1
[root@localhost ~]# top -d 1 -p id                  
查看指定进程的动态信息

top的输出可以分为统计信息区和进程信息区两个部分,即前5行为统计信息区,后面为进程信息区。

注意:可以在RHEL8.5中安装epel-release源后安装htop,是top的升级版

4.3. kill命令

4.3.1. 作用

强制结束进程

4.3.2. 格式

复制代码
kill  进程名/pid
killall  进程名/pid
相关推荐
A小辣椒9 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒12 小时前
TShark:基础知识
linux
AlfredZhao15 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式