目录
一、Linux应用程序基础
1.应用程序与系统命令
2.典型应用程序的目录结构
3.软件包封装类型
二、RPM
1.RPM 软件包管理器
2.RPM软件包命名格式
3.RPM命令的格式
4.查询已安装的rpm软件信息
5.查询未安装的 RPM 软件包文件中信息
6.安装、升级、卸载 RPM 软件包
(1)格式:
(2)常用选项
7.维护RPM数据库
(1)重建 RPM 数据库
(2)导入验证公钥
三、YUM
四、源码编译安装软件
一、Linux应用程序基础
1.应用程序与系统命令
角色 | 系统命令 | 应用程序 |
文件位置 | 般在/bin和/sbin目录中,或为Shell内部指令 | 通常在/usr/bin、/usr/sbin 和/usr/local/bin、/usr/local/sbin目录中 |
主要用途 | 完成对系统的基本管理工作,例如IP配置工具 | 完成相对独立的其他辅助任务,例如网页浏览器 |
适用环境 | 一般只在字符操作界面中运行 | 根据实际需要,有些程序可在图形界面中运行 |
运行格式 | 一般包括命令字、命令选项和命令参数 | 通常没有固定的执行格式,由程序开发者自行定义 |
2.典型应用程序的目录结构
文件类型 | 保存目录 | 说明 |
普通可执行文件 | /usr/bin | 所有用户可执行 |
服务器程序、管理员程序文件 | /usr/sbin | 只有管理员可以执行 |
应用程序配置文件 | /etc | 通过rpm或yum方式安装的应用程序 |
日志文件 | /var/log | 系统日志 |
应用程序参考文档文件 | /usr/share/doc | 关于应用程序的参考文档等数据 |
应用程序手册页文件 | /usr/share/man | 执行文件及配置文件的 man 手册页 |
3.软件包封装类型
文件类型 | 保存目录 |
RPM软件包 | 扩展名为“.rpm”,适用于RHEL、CentOS等系统 |
DEB软件包 | 扩展名为“.deb”适用于Ubuntu、Debian等系统 |
源代码软件包 | 一般为“.tar.gz”".tar.bz2”等格式的压缩包包含程序的原始代码,需要编译安装 |
附带安装程序的软件包 | 软件包的扩展名不一,以TarBall格式的居多 在软件包中会提供用于安装的可执行程序或脚本文件,如install.sh、setup 等 |
二、RPM
1.RPM 软件包管理器
由Red Hat公司提出,被众多Linux发行版所采用
建立统一的文件数据库
详细记录软件包安装、卸载、升级等变化信息
自动分析软件包依赖关系
2.RPM软件包命名格式
bash-4.2.46-28.e17.x86_64.rpm
软件名称 版本号 发布次数 硬件平台 扩展名
3.RPM命令的格式
rpm命令能够实现几乎所有对RPM软件包的管理功能
执行“man rpm”命令可以获得关于rpm命令的详细帮助信息
rpm命令功能:查询、验证RPM软件包的相关信息·安装、升级、卸载RPM软件包;维护重建RPM数据库信息等综合管理操作
4.查询已安装的rpm软件信息
rpm -q【子选项】 【软件名】
常用选项
-qi | 显示已安装的指定软件的详细信息 |
-ql | 显示已安装的指定软件的文件列表 |
-qc | 列出已安装的指定软件的配置文件 |
-qd | 列出已安装的指定软件的软件包文档所在位置 |
-qR | 列出已安装的指定软件的依赖的软件包及文件 |
-qf | 查询已安装的指定软件属于哪个安装包 |
[root@bogon ~]# rpm -q xz
xz-5.2.2-2.el7_9.x86_64
[root@bogon ~]# rpm -q gzip
gzip-1.5-11.el7_9.x86_64
[root@bogon ~]# rpm -q zip
zip-3.0-11.el7.x86_64
[root@bogon ~]# rpm -qa | grep nfs #显示已安装的指定软件的详细信息
libnfsidmap-0.25-19.el7.x86_64
nfs4-acl-tools-0.3.3-21.el7.x86_64
nfs-utils-1.3.0-0.68.el7.2.x86_64
[root@bogon ~]# rpm -q nfs-utils
nfs-utils-1.3.0-0.68.el7.2.x86_64
[root@bogon ~]# rpm -qi nfs-utils
Name : nfs-utils
Epoch : 1
Version : 1.3.0
Release : 0.68.el7.2
Architecture: x86_64
Install Date: 2024年04月03日 星期三 00时34分10秒
Group : System Environment/Daemons
Size : 1114412
License : MIT and GPLv2 and GPLv2+ and BSD
Signature : RSA/SHA256, 2021年10月15日 星期五 22时00分36秒, Key ID 24c6a8a7f4a80eb5
Source RPM : nfs-utils-1.3.0-0.68.el7.2.src.rpm
Build Date : 2021年10月14日 星期四 20时29分29秒
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://sourceforge.net/projects/nfs
Summary : NFS utilities and supporting clients and daemons for the kernel NFS server
Description :
The nfs-utils package provides a daemon for the kernel NFS server and
related tools, which provides a much higher level of performance than the
traditional Linux NFS server used by most users.
This package also contains the showmount program. Showmount queries the
mount daemon on a remote host for information about the NFS (Network File
System) server on the remote host. For example, showmount can display the
clients which are mounted on that host.
This package also contains the mount.nfs and umount.nfs program.
[root@bogon ~]# rpm -qc nfs-utils #列出已安装的指定软件的配置文件
/etc/gssproxy/24-nfs-server.conf
/etc/modprobe.d/lockd.conf
/etc/nfs.conf
/etc/nfsmount.conf
/etc/request-key.d/id_resolver.conf
/etc/sysconfig/nfs
/var/lib/nfs/etab
/var/lib/nfs/rmtab
/var/lib/nfs/state
/var/lib/nfs/xtab
5.查询未安装的 RPM 软件包文件中信息
rpm -qp【子选项】 RPM包文件
常用选项
-qpi | 查询指定软件包的详细信息 |
-qpl | 查询指定软件包的文件列表 |
-qpc | 查询指定软件包的配置文件 |
-qpd | 查询指定软件包的软件包文档的位置 |
[root@bogon ~]# rpm -qf /etc/httpd/conf/httpd.conf
httpd-2.4.6-97.el7.centos.5.x86_64
[root@bogon ~]# cd /mnt/Packages/
[root@bogon Packages]# ls | grep httpd-2.4.6
httpd-2.4.6-97.el7.centos.5.x86_64.rpm
[root@bogon Packages]# rpm -qpi httpd-2.4.6-97.el7.centos.5.x86_64.rpm #查询指定软件包的详细信息
警告:httpd-2.4.6-97.el7.centos.5.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
Name : httpd
Version : 2.4.6
Release : 97.el7.centos.5
Architecture: x86_64
Install Date: (not installed)
Group : System Environment/Daemons
Size : 9821136
License : ASL 2.0
Signature : RSA/SHA256, 2022年03月25日 星期五 02时21分56秒, Key ID 24c6a8a7f4a80eb5
Source RPM : httpd-2.4.6-97.el7.centos.5.src.rpm
Build Date : 2022年03月24日 星期四 22时59分42秒
Build Host : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
6.安装、升级、卸载 RPM 软件包
(1)格式:
rpm 【选项】 RPM包文件
rpm -ivh RPM软件包
(2)常用选项
-i | 安装一个新的 RPM 软件包 |
-U | 升级某个软件包,若未安装过,则进行安装 |
-F | 升级某个软件包,若未安装过,则放弃安装 |
-h | 在安装或升级软件包的过程中,以“#”号显示安装进度 |
-v | 显示软件安装过程中的详细信息 |
--force | 强制安装某个软件包,比如要安装版本更旧的软件包 |
-e | 卸载指定名称的软件包 |
--nodeps | 在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系 |
[root@bogon Packages]# ls | grep zlib-devel #安装一个新的 RPM 软件包,显示软件安装过程中的详细信息,并且以“#”号显示安装进度
zlib-devel-1.2.7-20.el7_9.x86_64.rpm
[root@bogon Packages]# rpm -ivh zlib-devel-1.2.7-20.el7_9.x86_64.rpm
警告:zlib-devel-1.2.7-20.el7_9.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
软件包 zlib-devel-1.2.7-20.el7_9.x86_64 已经安装
[root@bogon Packages]#
[root@bogon Packages]# ls | grep pcre-devel #升级某个软件包,若未安装过,则进行安装
pcre-devel-8.32-17.el7.x86_64.rpm
[root@bogon Packages]# rpm -U pcre-devel-8.32-17.el7.x86_64.rpm
警告:pcre-devel-8.32-17.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
软件包 pcre-devel-8.32-17.el7.x86_64 已经安装
[root@bogon Packages]#
7.维护RPM数据库
(1)重建 RPM 数据库
当 RPM 数据库发生损坏,可通过 重建RPM数据库 修复
rpm --rebuilddb或者
rpm --initdb
(2)导入验证公钥
在没有导入用于数字签名验证的公钥文件之前,安装光盘中的一部分RPM软件包时会报错。需要向RPM数据库中导入位于光盘根目录下的公钥文件
mount /dev/sr0 /mnt/
rpm --import /mnt/RPM-GPG-KEY-CentOS-7
注意:
RPM数据库:用于记录在Linux系统中安装、卸载、升级应用程序的相关信息,由RPM包管理系统自动完成维护,一般不需要用户干预
当RPM数据库发生损坏(误制文件、非法关机、病当破坏等导致),且Linux系统无法自动完成修复时,将导致无法使用rpm命令正常地安装、卸载及查询软件包,这时可以使用-rebuilddb或 initdb重建RPM数据库
在Linux/Unix应用领域,相当一部分软件厂商会对发布的软件包进行数字签名,以确保软件的完整性、合法性,对于用户来说,可以利用软件官方提供的公钥文件,自动对下载的软件包进行验证,如果在安装软件时出现验证失败的提示,则表示该软件包可能已经被非法算改
三、YUM
先配置本地yum源仓库
mount /dev/sr0 /mnt/ #把光盘挂载到/mnt目录下
cd /etc/yum.repos.d/ #备份系统自带yum仓库
mkdir repos.bak
mv *.repo repos.bak
cd /etc/yum.repos.d/
vim local.repo
[local] #仓库类别
name=local #仓库名称
baseurl=file:///mnt #指定URL 访问路径为光盘挂载目录
enabled=1 #开启此yum源,此为默认项,可省略
gpgcheck=0 #不验证软件包的签名
yum clean all && yum makecache #删除yum缓存并更新
四、源码编译安装软件
编译安装的步骤 | |
./config | 检测安装环境 |
个性化指定安装目录 | |
个性化设置安装选项 | |
make | 把人类的高级语言翻译成二进制语言 |
make install | 把安装好的程序放到指定的安装目录中 |
1.使用 yum 安装编译软件环境的依赖包 gcc gcc-c++ make ....
2.官网下载,解压软件包
tar xf XXX.tar.gz
3.进入软件包目标使用 ./configure 配置软件的安装目录、安装模块等
cd 软件包目录
./configure --prefix=软件安装目录 --XXX #可通过 --help 获取帮助
4.make 编译,将源代码转换成可执行的二进制程序文件
5.make install 安装,复制二进制程序文件和软件配置文件等到软件安装目录