第十一章 管理Linux软件包和进程
主要包括源码下载安装软件,PRM管理工具,YUM/DNF管理工具
源码下载安装软件
源码文件:是指包含计算机程序源代码的文本文件。源代码是用特定编程语言编写的人类可读指令,它描述了计算机程序的逻辑、算法和功能实现。程序员通过编写源代码来创建软件应用程序、操作系统、驱动程序、库等各种计算机程序。
特点:高度可定制性,获取最新版本和功能,增强对软件的理解和控制
安装过程:安装依赖工具和库,例如gcc,gcc-c++
获取源码(
.tar.gz
、.tar.bz2
或.zip
)解压源码包
分析安装环境(./configure)
编译软件(make)
安装软件(make install)
RPM管理工具
RPM概念
由Red Hat公司提出的一种软件包管理标准
是Linux各发行版中应用最广泛的软件包格式之一(还有debian的发行版deb安装包)
RPM安装软件要求:
软件安装环境必须与打包软件环境一致
必须满足软件依赖性
软件卸载时必须小心,最底层软件不能先卸载
RPM软件包命名格式:
如:zsh-5.0.2-14.el7.x86_64.rpm
RPM包相关网站:
RPM Search
RPM软件安装rpm -参数 软件包名
参数
安装过程:
读取PRM软件包头部数据,进行软件依赖性查询
若满足条件则安装否则安装失败
例:安装nginx
[root@localhost ~]# wget http://nginx.org/packages/rhel/9/x86_64/RPMS/nginx-1.24.0-1.el9.ngx.x86_64.rpm [root@localhost ~]# ls Desktop phpMyAdmin-5.2.1-all-languages Documents Pictures Downloads Public google-chrome-stable_current_x86_64.rpm QQ_3.2.13_241104_x86_64_01.rpm libXScrnSaver-1.2.3-10.el9.x86_64.rpm Templates Music Videos nginx-1.24.0-1.el9.ngx.x86_64.rpm [root@localhost ~]# rpm -ivh nginx-1.24.0-1.el9.ngx.x86_64.rpm -y
卸载:
[root@localhost ~]# rpm -e linuxqq
RPM查询
rpm --q 包名 # -q常与下面参数组合使用
[root@localhost ~]# rpm -q httpd httpd-2.4.57-8.el9.x86_64 [root@localhost ~]# rpm -ql gcc /usr/bin/c89 /usr/bin/c99 /usr/bin/cc /usr/bin/gcc /usr/bin/gcc-ar /usr/bin/gcc-nm ...... [root@localhost ~]# rpm -qf /usr/bin/ls coreutils-8.32-35.el9.x86_64
YUM/DNF管理工具
概念:
YUM:RHEL9中默认使用的软件批量管理工具由原版本的yum换成了速度更快的dnf(DNF = Dandified YUM),原有的yum命令仅为dnf的软链接,依旧可以使用。
[root@localhost ~]# ll `which yum` lrwxrwxrwx. 1 root root 5 Oct 26 2023 /usr/bin/yum -> dnf-3
功能:
在线下载、 安装、 卸载、 升级rpm软件包
自动查找并解决rpm包之间的依赖关系,一次性安装所有具有依赖关系的rpm包,而无需管理员逐个、 手工地去安装每一个rpm包
原理:
系统会去读取/etc/yum.repos.d/ 目录下的.repo 结尾的文件,从该文件中读取以下内容实现装
包:
包含各种rpm安装文件的软件仓库(rhel8开始有两个仓库,rhel7只有一个仓库)
BaseOS存储库:提供一套核心的底层操作系统功能,为基础软件安装库
AppStream存储库:包括额外的用户空间应用程序、运行时语言和数据库
[root@localhost ~]# dnf repolist all [root@localhost ~]# dnf list all [root@localhost ~]# dnf info httpd # 安装、更新包和包组 dnf install [-y] 包名 dnf update [-y] 包名 dnf groupinstall 包组名 # 卸载软件包 dnf remove [-y] 包名 # 搜索文件由哪个包产生 dnf provides 文件名 dnf whatprovides /etc/fstab # 模糊搜索包名 dnf search 模糊包名 # 清空缓存 dnf clean packages all
配置本地DNF源
[root@localhost /]# mkdir /haha [root@localhost /]# mount /dev/cdrom /haha/ [root@localhost /]# cd /haha/ [root@localhost haha]# ls AppStream EULA images RPM-GPG-KEY-redhat-beta BaseOS extra_files.json isolinux RPM-GPG-KEY-redhat-release EFI GPL media.repo [root@localhost haha]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# ls [root@localhost yum.repos.d]# vim haha.repo [AppStream] name=AppStream baseurl=file:///haha/AppStream gpgcheck=0 enabled=1 [BaseOS] name=BaseOS baseurl=file:///haha/BaseOS gpgcheck=0 enabled=1 [root@localhost yum.repos.d]# dnf makecache Updating Subscription Management repositories. Unable to read consumer identity This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register. AppStream 3.1 MB/s | 3.2 kB 00:00 BaseOS 2.7 MB/s | 2.7 kB 00:00 Metadata cache created. [root@localhost yum.repos.d]# dnf repolist Updating Subscription Management repositories. Unable to read consumer identity This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register. repo id repo name AppStream AppStream BaseOS BaseOS