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 7月 10 14:57 anaconda-ks.cfg
drwxr-xr-x. 5 root root 36 7月 11 20:16 dir01
-rw-r--r--. 1 root root 14540 7月 26 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 9月 13 15:44 auto Nginx 自动生成的文件目录,里面存放安装的内容
-rw-r--r-- 1 1001 1001 323312 4月 11 09:45 CHANGES 版本变动修改地方介绍
-rw-r--r-- 1 1001 1001 494234 4月 11 09:45 CHANGES.ru 俄语版
drwxr-xr-x 2 1001 1001 168 9月 13 15:44 conf 默认配置文件目录
-rwxr-xr-x 1 1001 1001 2611 4月 11 09:45 configure 自动化编译脚本 # 重要
drwxr-xr-x 4 1001 1001 72 9月 13 15:44 contrib Nginx 的贡献文件目录
drwxr-xr-x 2 1001 1001 40 9月 13 15:44 html 默认html文件目录
-rw-r--r-- 1 1001 1001 1397 4月 11 09:45 LICENSE 应该是许可证信息
-rw-r--r-- 1 root root 438 9月 13 15:47 Makefile ./configure 生成的文件 # 重要,有该文件才可以 make
drwxr-xr-x 2 1001 1001 21 9月 13 15:44 man 帮助man手册目录
drwxr-xr-x 3 root root 174 9月 13 15:48 objs 放 nginx 启动服务,预编译后才会有
-rw-r--r-- 1 1001 1001 49 4月 11 09:45 README 说明书
drwxr-xr-x 9 1001 1001 91 9月 13 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