第十章 Linux 软件安装

List item

10.1 Linux软件包的分类

注意:rpm一般在安装小包,不需要配置,使用其中的 yum 命令最快,当安装目录存在,依赖不存在才会使用rpm 命令,tar一般是安装 大的软件包使用

10.1.1 linux的软件安装包

在这里插入图片描述

10.1.2 rpm软件包的三种RPM包管理器

在这里插入图片描述

常用 yum ,CentOS 属于RedHat 可以使用,Ubuntu不行,Ubuntu使用 apt 命令

10.2 RPM包管理器(rpm命令)

注意:lrzsz是一个用于在Linux系统中进行文件传输的工具集。它提供了rz和sz两个命令,分别用于从本地计算机上传文件到远程主机(rz),以及从远程主机下载文件到本地计算机(sz)。通过使用lrzsz,可以方便地在终端会话中进行文件传输,而无需依赖其他传输工具或图形界面。这对于在SSH连接或串口终端连接等环境下进行文件传输非常有用。

我们可以安装 lrzsz ,这样本地文件传送到远程主机的话,可以直接拖动文件到远程连接主机的终端,安装命令如下

apt -y install lrzsz   	## Ubuntu、ebian等基于apt的系统
yum -y install lrzsz   	## CentOS、Red Hat等基于yum的系统

一、rpm 命令简介

语法: rpm 选项…

常用选项:查询、安装、卸载、更新类

rpm -qa       	## 列出:所有已装rpm包 rpm -qa openssl 或 rpm -qa | grep openssl
rpm -ql       	## 列出:指定已装rpm包的所有文件列表  比如 rpm -ql nginx
rpm -qc       	## 列出:指定已装rpm包的配置文件列表  包查配置文件
rpm -qd       	## 列出:指定已装rpm包的doc文件列表
rpm -qf       	## 查询:指定文件是由哪一个<rpm软件包>安装生成的   配置文件查包
rpm -i        	## 安装:指定rpm包
rpm -e        	## 卸载:指定rpm包
rpm -U        	## 升级:指定rpm包

rpm -v			## 表示显示详细的安装过程信息
rpm -h			## 以适合人类阅读的方式显示进度信息

常用选项:辅助类

--test        		## 不真正安装,只是判断下是否能安装
--nodeps      		## 不验证包依赖  直接安装这个包,不装其依赖
--force       		## 强制重新安装,等同于<--replacefiles选项>+<--replacepkgs选项>+<--oldpackage选项>
--quiet       		## 静默执行  安装的时候不显示一堆内容
-v, --verbose		## 提供更多的详细信息输出   一般和 -i一起使用

一般 rpm 使用都是先在 window 下把包下载,然后传输进来 然后解压 然后 rpm -ivh 包

rpm -ivh 	## 已经下载的软件包

rpm 命令缺陷:不会自动安装依赖包。

二、rpm 命令管理 RPM 软件包

★ rpm 命令:安装RPM软件包

使用较少,使用yum较多

(1) 本地路路径安装:RPM软件包

语法:rpm -i path/to/package.rpm
例句:rpm -i /tmp/tree-1.6.0-10.el7.x86_64.rpm

(2) FTP URL地址网络路径安装:RPM软件包

语法:rpm -i ftp://path/to/package.rpm --ftpproxy HOST --ftpport PORT
## --ftpproxy HOST		指定:FTP代理服务器
## --ftpport PORT     	指定:FTP代理端口号

(3) HTTP URL地址网络路径安装:RPM 软件包

语法:rpm -i http://path/to/package.rpm --httpproxy HOST --httpport PORT
## --httpproxy HOST	指定:HTTP代理服务器
## --httpport PORT	指定:HTTP代理端口号
例句:rpm -i http://mirror.centos.org/centos/7/os/x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm

本人测试:安装 epel-release-6-8.noarch.rpm ,先把 epel-release-6-8.noarch.rpm 放到 Linux里面才可以进行安装,不然找不到

终端显示如下
[root@dj ~]# rpm -i epel-release-6-8.noarch.rpm
错误:打开 epel-release-6-8.noarch.rpm 失败: 没有那个文件或目录

当把安装包从window文件传输进来后,也就是所谓当前目录有该安装包(直接把文件拖动进xshell终端,如果不行就安装 lrzsz之后在进行拖动)

ll       				查看当前目录有没有该安装包,终端显示如下
[root@dj ~]# ll
总用量 20
-rw-------. 1 root root  1585 710 14:57 anaconda-ks.cfg
drwxr-xr-x. 5 root root    36 711 20:16 dir01
-rw-r--r--. 1 root root 14540 726 11:36 epel-release-6-8.noarch.rpm

进行安装命令,要加 -v 才行,终端显示如下

[root@dj ~]# rpm -i epel-release-6-8.noarch.rpm
警告:epel-release-6-8.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 0608b895: NOKEY
[root@dj ~]# rpm -iv epel-release-6-8.noarch.rpm
警告:epel-release-6-8.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 0608b895: NOKEY
软件包准备中...
	软件包 epel-release-6-8.noarch 已经安装

查看有没有安装成功,终端显示如下,安装成功

[root@dj ~]# rpm -qa epel
[root@dj ~]# rpm -qa epel-re
[root@dj ~]# rpm -qa epel-rele
[root@dj ~]# rpm -qa epel-releas
[root@dj ~]# rpm -qa epel-release
epel-release-6-8.noarch

★ rpm 命令:卸载已安装RPM软件包

(1) 卸载:已安装RPM软件包

语法:rpm -e [packageName]
例句:rpm -e tree

★ rpm 命令:查询已安装RPM软件包

(1) 查询:已安装RPM软件包的完整名称

语法:rpm -qa [packageName]
例句:rpm -qa openssh-server

(2) 查询:已安装RPM软件包的所有文件列表

语法:rpm -ql {packageName}
例句:rpm -ql openssh-server

(3) 查询:已安装RPM软件包的配置文件列表

语法:rpm -qc {packageName}
例句:rpm -qc openssh-server

(4) 查询:指定文件属于哪一个RPM软件包

语法:rpm -qf {fileName}
例句:rpm -qf /etc/sysconfig/sshd

三 用的最多的命令

rpm	-qa |grep## 查找可能冲突的包,然后卸载  比如安装mysql要卸载 mariadb
rpm -e 或 yum -y remove		## 卸载冲突的包

rpm -ivh## 安装二进制包,前提把包下载了

注意
rpm -qa openssl			## 这个命令会列出系统中所有已安装的与 OpenSSL 相关的软件包。
						## 它会显示出确切名称为 "openssl" 的软件包以及其版本信息。
rpm -qa | grep openssl	## 这个命令会列出系统中所有已安装的软件包,包括依赖库等等

10.3 RPM包管理器(yum 命令)

10.3.1 yum 架构介绍

yum 命令简介

yum命令是一个基于RPM的软件包管理器,能够从指定YUM服务器自动下载RPM包并且安装。yum命令属于YUM 客户端的命令,它的优点是可以处理软件之间的依赖关系,一次性安装所有依赖的软件包,无需一个个下载安装。

yum clean all 这个是清理仓库的清单
yum makecache fast 这个是重新生成仓库清单 两命令经常一起使用,因为下载东西清单显示占时间很久,有新的仓库也要使用,有新清单生成

10.3.2 yum仓库配置文件

查看yum仓库的列表,做本地源是方便没有网络的时候使用,一般用不上本地仓库。

yum repolist				 ## 查看查看yum仓库的列表
yum clean all            	 ## 清除:当前本机上的<YUM cache 缓存>中的<元数据缓存>,相当于删除原来的菜单
yum makecache fast           ## 重建:当前本机上的<YUM cache 缓存>中的<元数据缓存>相当于使用新的菜单

★ 位置:/etc/yum.repos.d 目录

★ 文件名:xxx.repo

★ 文件内容:cat /etc/yum.repos.d/CentOS-Base.repo(随机打开其中一个文件仓库)

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

########################################################################################
## [base] 			它是:遵循ini格式的配置段标识名(不允许使用空格)  
## name=           	它是:描述性内容,可和base里面写的一样,方便自己知道是放什么内容
## mirrorlist=URL		指定:YUM网络源的动态访问地址,由YUM来自动选择YUM网络源
## baseurl=URL		指定:YUM网络源的固定访问地址
## gpgcheck=    		设置:是否执行 gpg 校验?1 表示:执行gpg校验;0 表示:不执行gpg校验
## gpgkey=URL		指定:执行gpg 校验时,需要使用的key 密钥文件,上面写 1 才需要写
## enabled=       		指定:是否启用该[base]配置段?1 表示:启用;0 表示:禁用
## ----------------------------------------------------------------------------------------------------------
## 内置变量:			了解即可,上面是重点
## $releasever	## 用于标识客户端操作系统的主版本号
##               ## ▶ 通过/etc/yum.conf全局配置文件中[ distrooverpky=value ]行,获得$releasever变量值
## $basearch    	## 用于标识系统的基本平台架构,可以通过uname -m命令得出,有效值为i386、x86_64
##               	## ▶ i686和i586机器的基本平台是i386,AMD64和Intel64机器的基本平台是x86_64
## $arch       	## 用于标识系统的CPU架构,有效值为ia32e和amd64
## $infra    	## 一般为stock,cat /etc/yum/vars/infra,显示结果为stock
########################################################################################

假如我们要做一个本地仓库作为 yum 的仓库源,那我们应该进行如下操作 **最少 5 行可配置 gpgkey= 可不写 **

首先可以先在/etc/yum.repos.d/ 下创建一个 bak结尾的文件名做备份,把/etc/yum.repos.d/的所有文件(仓库)移进去,这样方便我们测试自己的仓库有无问题
首先在/etc/yum.repos.d/ 目录下 创建一个文件做本地仓库 注意:文件名要以 .repo 结尾,且文件路径不能错

然后文件里面填写如下内容

[ ] 			## 方框里面写标识名,随便写,最好容易让人知道这个文件是什么文件,注意不能使用 空格
name=           ## 描述性内容,可以和标识名一样,随便写,让人知道是什么文件就行	
baseurl=URL		## 指定:YUM网络源的固定访问地址,外网是以http:// 开头  内部的话使用 file:// 开头
gpgcheck=    	## 设置:是否执行 gpg 校验?1 表示:执行gpg校验;0 表示:不执行gpg校验,0和1都可以不影响,填1的话要写下一行,填0的话下一行不用写
gpgkey=URL		## 指定:执行gpg 校验时,需要使用的key 密钥文件,看校验填0的话这一行不用写,填1的话这一行的 URL代表是填写一个地址,具体可看其他文件
enabled=       	## 指定:是否启用该[base]配置段?1 表示:启用;0 表示:禁用,填1即可
				## 注意:URL代表地址

10.3.3 配置yum仓库

例子:创建一个仓库,假如把<本机 DVD 光盘>作为仓库源,首先挂载<CentOS DVD 光盘>,配置<YUM 客户端>采用<本机 DVD 光盘>作为<YUM 仓库源>

cd /etc/yum.repos.d/
mkdir bak 
mv * bak				## 把原来所有仓库移到备份文件里面,防止影响本地仓库
touch dvd.repo 			## 创建yum本地仓库(文件)
这里 DVD 光驱名为 sr0,内含4000多个软件包,我们把他当做我们的yum仓库,首先我们需要把它挂载才可以使用
mkdir /dvd
mount /dev/sr0 /dvd				## 挂载
echo "mount /dev/sr0 /dvd" >> /etc/rc.d/rc.local   ## 开机自动挂载

vim dvd.repo           输入以下内容

[CentOSDVD]
name=CentOS7DVD
baseurl=file:///dvd			## 表示把/dvd当仓库,使用yum下载东西从里面找包
enable=1					## 启用该[base]配置段
gpgcheck=0					## 不使用校验码,不用验证
## wq 退出保存
yum clean all            	## 清除:当前本机上的YUM cache 缓存中的元数据缓存,相当于删除原来的菜单
yum makecache fast          ## 重建:当前本机上的YUM cache 缓存中的元数据缓存相当于使用新的菜单
yum repolist                ## 查看:当前本机上的已生效 YUM 仓库源的标识符列表
yum -y install tree         ## 测试:随便找一个包看看能不能下载,可以下载即成功

10.3.4 yum 命令管理 RPM 软件包

★ yum 命令语法:yum [options] COMMAND

​ yum 选项 命令

选项很多,可以看命令帮助

yum 搜索/查询rpm软件包

yum provides			## 搜索:提供<指定功能或文件名>的<rpm包>。 ##重要
## 常用于搜索:提供<指定命令文件>的<rpm包>。常用于知道命令或者内容不知道在哪个包
## 可使用该命令或者内容搜索在哪个包里,然后下载该包 
例子:
yum provides ifconfig       ## 搜索:ifconfig属于哪个包,好去下载该包使用该命令
yum provides *bin/httpd     ## 搜索:包含指定命令文件的rpm包名称,可以使用通配符


yum search 				## 搜索:包含<指定关键字>的<rpm包>。
                        ## 搜索范围:默认在<包名称>和<包摘要>中执行<搜索匹配>,如若失败,则继续在<包描述和包URL地址内容>中执行<搜索匹配>。
yum search httpd
yum search all httpd            ## search all :在<所有内容>中执行<搜索匹配>。


yum list     					## 列出:<RPM包>列表。	
yum list 或者 yum list all       ## 注意,这里是列出仓库能搜到的全部包
yum list installed              ## 注意,这里是列出已经安装的包
yum list available              ## 列出:<可安装的RPM包>


yum info     					##	显示:<指定RPM包>的<各项信息>。
yum info httpd                  ## 显示:<httpd包>的<各项信息>

★ yum 示例学习 2:安装/更新 rpm 软件包

##################################################################################################
1. 安装:<RPM 软件包>     install

yum install -y httpd       ## 安装:<指定的RPM包>
                           ## 如未指明<RPM包>的版本,则安装最新版的RPM包
yum install -y httpd-2.4.6-67.el7.centos.x86_64    ## 安装:<指定版本的RPM包>
yum install -y httpd --enablerepo=02_centos7_epel  ## 安装:<指定的RPM包>,并临时开启<指定的repo源>
yum reinstall -y httpd                             ## 重装:<指定的RPM包>
##################################################################################################
## 2. 重装:<RPM 软件包>
##
yum reinstall -y httpd    ## 重装:<指定的RPM包>
##################################################################################################
以下慎重使用
## 3. 更新:<RPM 软件包>
##
yum update -y       ## 更新:整个系统,更新<已有的软件包>
                    ## 会保留:<老版本>
                    ## 须防止:系统更新的风险性
yum upgrade -y      ## 更新:整个系统,更新<已有的软件包>,并安装<需要的新软件包>
                    ## 会删除:<老版本>,从而,需要提防<现有软件>的<依赖性问题>
                    ##  须防止:系统更新的风险性

## update 比 upgrade 安全一些

yum update -y httpd                              ## 更新指定的RPM包
yum update -y httpd-2.4.6-67.el7.centos.x86_64   ## 更新指定版本的RPM包
yum update -y -x kernel --skip-broken            ## 更新整个系统,-x 排除指定的软件包
## 备注:
##      -x, --exclude= 排除:kernel包
##      --skip-broken 跳过<依赖关系存在冲突>的<RPM包>

★ yum 示例学习 3:卸载/降级 rpm 软件包

## 1. 卸载:<RPM 软件包>    remove
yum remove -y httpd-tools httpd

## 2. 降级:<RPM 软件包>  慎用
yum downgrade -y httpd-tools httpd

★ yum 示例学习 4:管理 rpm 软件包组

yum groups list                         ## 列出:<包组>列表
yum groups info "文件及打印服务器"         ## 查看:<包组>信息
yum groups install "文件及打印服务器"      ## 安装:<包组>
yum groups remove "文件及打印服务器"       ## 卸载:<包组>

★ yum 示例学习 5:缓存/下载 rpm 软件包

★ 注意: <yum cache缓存>的<默认位置>是:/var/cache/yum/

★ 注意: 不会缓存<url=file:// 本地路径>的<RPM包>,仅会缓存<url=http:// 网络路径>的<RPM包>

yum install -y httpd --downloadonly --downloaddir=/tmp/dir01
## 备注:
##    --downloadonly         	## 仅下载,不安装
##    --downloaddir=/tmp/dir01	## 设置<下载目录>
ls -l /tmp/dir01

10.3.5 获取常用的其他YUM仓库源

1 获取epel 源

☛ 了解:EPEL (Extra Packages for Enterprise Linux)

● 它是由 Fedora Special Interest Group 为企业 Linux 创建、维护和管理的一个高质量附加包集合。

● 它适用于但不仅限于 Red Hat Enterprise Linux (RHEL), CentOS, Scientific Linux (SL), Oracle Linux (OL)。

☛ 安装:epel 源配置文件

yum install -y epel-release

yum clean all

yum makecache fast

2 获取中科大源
vi /etc/yum.repos.d/ustc_centos7.repo

[base]
name=CentOS-$releasever - Base 
baseurl=https://mirrors.ustc.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates 
baseurl=https://mirrors.ustc.edu.cn/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras 
baseurl=https://mirrors.ustc.edu.cn/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus 
baseurl=https://mirrors.ustc.edu.cn/centos/$releasever/centosplus/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

yum clean all
yum makecache fast
3 获取清华源
vi /etc/yum.repos.d/tsinghua_centos7.repo

[base]
name=CentOS-$releasever - Base 
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates 
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras 
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus 
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

yum clean all
yum makecache fast
4 获取阿里源
vi /etc/yum.repos.d/aliyun_centos7.repo

[base]
name=CentOS-$releasever - Base 
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates 
baseurl=https://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras 
baseurl=https://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus 
baseurl=https://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

yum clean all
yum makecache fast

10.3.6 apt-get 配置仓库

主文件/etc/apt/sources.list

对于容器,可以直接覆盖进去

RUN echo "deb http://mirrors.aliyun.com/debian/ stable main contrib non-free" > /etc/apt/sources.list && \
    echo "deb-src http://mirrors.aliyun.com/debian/ stable main contrib non-free" >> /etc/apt/sources.list && \
    apt-get update && \
    apt-get install -y --no-install-recommends net-tools

验证

root@image-check-d588f95bb-ljhbx:/app# cat /etc/apt/sources.list
deb http://mirrors.aliyun.com/debian/ stable main contrib non-free
deb-src http://mirrors.aliyun.com/debian/ stable main contrib non-free

对于Ubuntu机器 追加即可,建议追加前记得备份/etc/apt/sources.list

ecs-user@iZuf6ixjbay8dbfn0xx52cZ:/app/image-check$ uname -a
Linux iZuf6ixjbay8dbfn0xx52cZ 4.15.0-210-generic #221-Ubuntu SMP Tue Apr 18 08:32:52 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/apt/sources.list

...
deb http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security main restricted
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security main restricted
deb http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security universe
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security universe
deb http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security multiverse
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security multiverse

10.3.7 例子安装mongodb

1.配置MongoDB的yum源

创建yum源文件:
vim
添加以下内容:
cat >/etc/yum.repos.d/mongodb-org-4.2.repo<<EOF
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-4.2/
gpgcheck=0
enabled=1
EOF
这里可以修改 gpgcheck=0, 省去gpg验证

安装命令:
yum -y install mongodb-org

10.4 Linux Tar 源码包 编译安装

10.4.1 tar 包优缺点

在这里插入图片描述

10.4.2 Tar 源码包 编译安装 三板斧

官方语言:预编译 编译下载 安装

第一板斧./configure 配置命令 数据库是 cmake

固定安装如下

yum -y install gcc			## 预编译要下载 是开源编译器集合,可预编译c语言 c++ 等更多语言包
pcre-devel  zlib-devel   	## 这两个依赖包也可以下,不下在预编译出错看缺什么下什么  
							## devel 结尾这些都是依赖包,一般缺什么就在预编译出错那里查看

gcc 			## 是 GNU Compiler Collection 的缩写
				## 是一个常用的编译器,用于编译和构建 C、C++ 等程序
pcre-devel 		## 基于Perl兼容的正则表达式库(PCRE)的开发包,用于开发使用正则表达式的应用程序
zlib-devel 		## 提供数据压缩和解压功能的开发包,用于开发需要数据压缩的应用程序
./configure   								# 最简单编译
./configure --prefix=/usr/local/目录名		  # 安装到指定目录

还可以 --user=    --group= (如果服务有创建对应用户需要添加)   要求怎么编译加什么

源码安装包介绍

[root@server ~]# ll nginx-1.24.0			查看安装包
总用量 816
drwxr-xr-x 6 1001 1001    326 913 15:44 auto			Nginx 自动生成的文件目录,里面存放安装的内容
-rw-r--r-- 1 1001 1001 323312 411 09:45 CHANGES		版本变动修改地方介绍
-rw-r--r-- 1 1001 1001 494234 411 09:45 CHANGES.ru	俄语版
drwxr-xr-x 2 1001 1001    168 913 15:44 conf			默认配置文件目录
-rwxr-xr-x 1 1001 1001   2611 411 09:45 configure	自动化编译脚本	# 重要
drwxr-xr-x 4 1001 1001     72 913 15:44 contrib		Nginx 的贡献文件目录
drwxr-xr-x 2 1001 1001     40 913 15:44 html			默认html文件目录
-rw-r--r-- 1 1001 1001   1397 411 09:45 LICENSE		应该是许可证信息
-rw-r--r-- 1 root root    438 913 15:47 Makefile		./configure 生成的文件	 # 重要,有该文件才可以 make
drwxr-xr-x 2 1001 1001     21 913 15:44 man			帮助man手册目录
drwxr-xr-x 3 root root    174 913 15:48 objs			放 nginx 启动服务,预编译后才会有
-rw-r--r-- 1 1001 1001     49 411 09:45 README		说明书
drwxr-xr-x 9 1001 1001     91 913 15:44 src			包含Nginx 的源代码文件	
# grep "YES" ~/nginx-1.24.0/auto/options 查看安装的内容 比如模块

★ 功能:

● 创建:<make编译>所需的<Makefile 编译规则文件>

● 创建:<make编译>和<make install安装>所需要的<其他文件>


★ 了解:Makefile 编译规则文件

● Makefile 类似于一个<批处理脚本,如:Shell脚本>,通过定义了一系列的<规则>,来指定:

♦ 安装在哪里目录中?

♦ 哪些模块需要启用?是采用<静态编译方式>?还是采用<动态链接方式>?

♦ 哪些文件需要先编译?

♦ 哪些文件需要后编译?

♦ 哪些文件需要重新编译?

♦ 通过<内嵌/外部shell命令>,来实现更复杂的<批处理操作>。

♦ 等等 …

● Makefile 最终借助 make 命令,来实现<自动化编译>。

第二板斧make 编译命令

★ make 是一个解释并执行<Makefile 编译规则文件>的<命令工具>。

● make 等同于 make all 需要有 Makefile 文件


★ 功能:(将源代码转变成二进制代码文件,好进行安装)

● 读写并执行<Makefile 编译规则文件>中的指令,从而实现<编译>和<链接>。

● <make命令>的大体流程如下:

1. 读写并执行:<Makefile 编译规则文件>

2. 执行<编译>:用<编译器,如:gcc>编译<源代码>,生成<xxx.o目标文件>和<其他相关文件,如:动态链接模块>

3. 执行<链接>:用<链接器:如:gcc-c++>,链接一个或多个<xxx.o目标文件>,从而生成<最终的二进制可执行文件>

第三板斧make install 安装命令

★ 功能:

● 在 make 之后,依据<<Makefile 编译规则文件>中的<指令>,将<binary二进制可执行文件>和<其他相关文件>,安装到<安装目录>。

4、例子1编译安装 httpd 源码包

1、准备:tar源码包

cd ~
tar -axf ~/httpd-2.4.46.tar.gz

2、Make:编译安装

(1) 进入:tar包的解压目录

cd ~/httpd-2.4.46
## 查看:<安装目录>的信息
./configure --help
## 查看:<默认要安装>的功能
./configure --help | grep -E "^[ \t]*--disable"
## 查看:<默认不安装>的功能
./configure --help | grep -E "^[ \t]*--enable"
## 查看:可用的<临时环境变量>
./configure --help | grep -E "^[ \t]*--enable"
## 备注:
export LDFLAGS="-L<lib dir>"     ## 设置在make编译安装过程中,临时使用lib库目录
export LDFLAGS="-l<library >"    ## 设置在make编译安装过程中,临时使用lib库文件
export LDFLAGS="-I<include dir>" ## 设置在make编译安装过程中,临时使用include头文件目录

(2) 安装:依赖包

yum install -y gcc apr-devel apr-util-devel pcre-devel openssl-devel openldap-devel

(3) 创建:Makefile文件 预编译, 写错了可以删除该文件,缺什么依赖包下载什么依赖包

./configure --prefix=/usr/local/apache --enable-ssl --enable-ldap
--prefix=/usr/local/apache	## 指定安装目录
--enable-ssl          		## 开启<SSL 安全加密协议>的功能
--enable-ldap         		## 开启<LDAP 轻量目录访问协议>的功能,用于集中化用户身份验证

(4) 执行:make编译

make
echo $?

(5) 执行:make安装

make install

(6) 退出:tar包的解压目录

cd ~

3、查看:安装目录

ll /usr/local/apache/        	## 查看安装的基础目录
ll /usr/local/apache/bin   		## 查看安装的命令目录
5 例子2黑客帝国炫酷代码

cmatrix是Linux环境下黑客帝国风格的屏保,绿色的字母在屏幕上刷刷如雨水落下,偶尔看看能回忆起程序猿的黑客梦。

步骤:

1. 创建/usr/local/temp目录
mkdir -p /usr/local/temp

2. 进入/usr/local/temp目录
cd /usr/local/temp

3. 把cmatrix安装包放到/usr/local/temp
cp /root/cmatrix-1.2a.tar.gz /usr/local/temp/

4. 解压源码包
tar -xvf cmatrix-1.2a.tar.gz

5. 进入/usr/local/temp/cmatrix-1.2a目录
cd cmatrix-1.2a

6. 安装依赖包和编译工具
yum install -y ncurses-devel gcc make

7. 检测
./configure

8. 编译
make

9. 安装
make install

注意:先进行第 7 步,生成Makefile文件,在进行第七步查看缺少什么安装包或者依赖,然后根据 yum provides 命令 去查找是什么包
然后安装该包,第六步就是安装查找到的包,然后把Makefil删掉,重新进行第7步,依次往下,如果第8步出现 致命错误 ,说明包或者依赖没安装完成

测试

输入cmatrix -b看效果

^           ) S E " ?         : l                                     L f   q   ^ (  
  H           o q U _ A         J 3                         q     ^       r   b   X 7  
  H           6 | D N t         G J                         V     b       <   5 6 d @  
  :   6       ' " i x           X ,       S                 3     \ `     E   + P s . >
  +   Q         . * )             v       > C               f     B ^     }   1 J X Q i
  k   K         d [ s             k   5   : $         y   = &     < R   y `   H > B ( R
  D   =         K % #             D   "   A ,         /   M }   | 5 M   I `   w f # ^ X
  a   v         F b :         I   c   s   { }         D   f b   b ^ m   L [   ) h g X _
k O   s         J e C         N   }   >   { #         r   j a   W S H   Z P   S     S ;
( ]     t       o 1 e   +     @   ,   \   % '         8   T {   T l z z > B         d Q
3 h     B       3 p )   &     P   `   *   n .       8 z   + )   " 6 1 f ^ "         Z *
K P     F         1 l   =   I I   @   P g & :       a b   O e   * 1 & E   $         E ^
b G     X         8 n   $   + v     R c d Q N       P \     )   2 ' : Y   _ i       s j
a `   # ,   /     6 #   J   e Y     W ' | [ P   !   i b /   6   c | # !     T       _  
@ ^   R o   ,           @   p a     L V V ' I   s   } a v   c   1 , , z     0 q     C  
` X   o *   R           J   n v     c 0 n n ^   y   E y X   A G G . + 0     v q     (  
5 *   0 ^   % <   D     E 8 w #     Q . B ] r   [     R _   B ' _ ] j U     Q E     (  
' 2   X s   $ D   e     P S E = :   f m D A # q a     A l   a z * &   E     < P     h 9
^ "   + 1   | `   j >   x P O z [   F   X z @ 2 '     r L   C g % A   3   ' h '       N
# w   ? $   < s   f "   ? ! / r F   L   E ; J _       N     T K W 5   ? ! L v w       J
a   j 2 ? d D H   7 <   Z , C o $   ^   e f = H       g     - C U , @ ; v \ ` {       n
T   O i i F I C   v W   J _ c Y Q   )   9 i           R     b O X F P o ) d U 6       v
3   % b h z z 0   p     5 2 M | q M B   y ,       c   Y     U b { ] = d X     E       C
h   o x k , o Y   ^     ) u x 0 m c Q   O $       '   =     y d o   A A g     `       8
o   l 1 L } u _   y     w Q /   \ R |   p ;       +         u o a   P R M     9   4   >

10.5 wget 命令

wget 是一个在 Linux 和 UNIX 系统中常用的命令行工具,用于通过 HTTP、HTTPS 和 FTP 协议从网络上下载文件。wget 支持多种功能和选项,以下是一些常用的 wget 命令和选项:

常和 rpm -ivh 和 yum -y localinstall 还有 tar源码安装一起使用

基本语法:

wget [选项] [URL]
常用选项:

-c				## 继续下载中断的文件,支持断点续传。
-P				## <目录>:指定下载文件保存的目录。
-O 				## <文件名>:指定下载文件的保存文件名。
-r				## 递归下载,下载指定 URL 中链接的所有文件。
-np				## 不进入上层目录,仅递归下载指定 URL 中链接的文件。
-nH				## 不创建主机目录,将下载文件保存在当前目录。
-N				## 只下载比本地文件新的文件,根据文件时间戳判断是否需要重新下载。
-nc				## 不要覆盖已经存在的文件,避免重复下载。
-q				## 静默模式,不显示详细的下载信息。
-b				## 后台下载。
--limit-rate=速度	 ## 限制下载速度,单位可以是 B、K、M、G 等。
--user=用户名称		## 指定用户名进行 HTTP 认证。
--password=密码	 ## 指定密码进行 HTTP 认证。

示例用法:

下载一个文件:

wget http://example.com/file.tar.gz

将下载文件保存到指定目录:

wget -P /path/to/dir http://example.com/file.tar.gz

指定保存文件名:

wget -O output_file.tar.gz http://example.com/file.tar.gz

递归下载一个网站的所有文件:

wget -r http://example.com/

限制下载速度:

wget --limit-rate=1M http://example.com/file.tar.gz

10.6 yum ,apt ,apk

查找当前仓库有没有指定的包

yum search <package-name>
apt search <package-name>
apk search <package-name>

知道命令查找包

yum provides ifconfig
apt-file search ifconfig
apk search ifconfig			## alpine没有提供,只能通过该方式

查看已安装的包

rpm -qa

yum list installed
dpkg -l 
apk info

换源后更新仓库

yum clean all 
yum makecache fast

yum makecache
apt update
apk update
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值