✅学习目标:linux安装软件
linux 由 c语言开发 开源 所以源代码是公开的 无利益 高级语言 ------>机器语言 难度较高
win 闭源 源代码是核心资产 不公开 源代码--编译好--再交给用户进行使用
红帽 red hat 市面上常用的一些软件 编译好 形成了一种 以rpm结尾的安装包软件。
📃学习内容:常用的三种安装方式
安装软件-准备软件 在光盘中 这个时候就需要进行挂载
挂载: 外来设备 (磁盘 u盘 光驱) 把磁盘和文件夹做了关联
一般情况下硬件设备/dev/cdrom
/dev/sr0
挂载的话通常使用命令:mount
mount /dev/sr0 /mnt #将外来设备挂载到 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
df #查询挂载点
/dev/sr0 4414592 4414592 0 100% /mnt
挂载完成后 df 显示挂载点 是否已经挂载
- 一个挂载点 同一时间只能挂载一个设备
- 一个挂载点同一时间挂载了多个设备,只能看到最后挂载设备的数据,其他设备上的数据将背隐藏
- 一个设备可以同时挂载到多个挂载点
- 通常挂载点一般是已存在的空的目录
rpm
了解:rpm 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
特点:
- 建立统一的数据库文件,记录操作信息
- 不能解决依赖关系 只能发现问题
**命令语法 **
rpm [选项] [参数]
rpm安装软件 是有依赖关系的 A--B B--C C--D ….. rpm -q 软件名 查询软件是否安装 rpm -qa 查询所有的安装软件 rpm -ivh +完整包名 安装软件。 rpm -qc 软件名 查询安装软件的配置文件 rpm -qi 查询软件的详细信息 rpm -ql 软件名 查看软件的所有文件列表 rpm -e 软件名 卸载软件
- 此方法不常用 因为存在依赖关系 有可能存在套娃的情况
详解:
[root@localhost abc]# rpm -q tree #查询tree软件是否安装
未安装软件包 tree
[root@localhost abc]# rpm -qa #查询所有安装软件
python-linux-procfs-0.4.9-3.el7.noarch
at-spi2-atk-2.22.0-2.el7.x86_64
libthai-0.1.14-9.el7.x86_64
.
. #比较多 不列举了。
[root@localhost opt]# rpm -qi tree #安装软件的详细信息
Name : tree
Version : 1.6.0
Release : 10.el7
Architecture: x86_64
Install Date: 2019年04月3日 星期二 23时47分31秒
Group : Applications/File
Size : 89505
License : GPLv2+
Signature : RSA/SHA256, 2014年07月04日 星期五 13时36分46秒, Key ID 24c6a8a7f4a80eb5
Source RPM : tree-1.6.0-10.el7.src.rpm
Build Date : 2014年06月10日 星期二 03时28分53秒
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
.
.
. #等等
[root@localhost opt]# rpm -ql tree #查看tree这个软件的所有文件列表
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
yum
他的出现是因为rpm存在部分无法解决的依赖关系 yum可以检测+解决 依赖关系 工作原理: 服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。 客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过http或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。
客户端需要怎么找对应的服务器 以及找到对应的安装包?
- 需要写客户端配置文件
1.必须在 etc/yum.repos.d 目录下面
2.配置文件必须以.repo 结尾 - 配置文件的内容需要手写。
服务端需要有什么? 1.安装包 2.元信息 用于解决安装包路径 以及解决依赖关系。
/etc/yum.repos.d/ #yum仓库文件位置 固定位置
文件夹下面配置文件(必须要以.repo结尾的文件 ,必须在/etc/yum.repos.d/)
yum本地仓库的建立
在没有网络的情况下 需要自己写一个 本地yum仓库 自己既是服务端 也是客户端
mount /dev/sr0 /mnt #挂载 (临时挂载)
cd /etc/yum.repos.d 切换至yum库 固定目录
mkdir test 新建文件夹
mv *.repo test/ #把所有的 .repo文件全部移至test/ 减少干扰
vim local.repo #新建配置文件 进行编辑 i a 都可以
[test0] # 仓库描述
name=test1 #自定义名称 唯一不可重复。
baseurl=file:///mnt #本地目录file:// 固定格式
enable=1 #默认是1 开启可以下载状态 可以不写。
gpgcheck=0 # 不检查安装包的安全性
esc :wq #保存退出
yum clean all #清理所有缓存
yum makecache #建立缓存 元信息
rpm -e tree #卸载安装包 查看是否已经安卓过此安装包
yum install tree -y #安装包名是tree的包 -y代表默认安装
yum -remove tree -y #卸载软件 tree
::: center :::
编译安装
优点-功能自定义 版本可以安装最新
缺点-复杂
在编译前 需要先安装编译软件 make gcc gcc-c++ 等。
3步 ./configure
1.脚本文件,源码包中自带 ,检测安装环境
2.可以选择安装软件的功能,生成一个文件make.file 按照这个文件的配置进行编译
3.指定安装路径 --prefix= 文件路径 指定安装文件路径
make 将源代码编译成二进制 可以执行的文件 make install 将软件安装进系统的指定路径 以下以安装nginx为例 详细说明
详解:
root@localhost ~]# cd /opt #切换到opt文件夹
[root@localhost opt]# mkdir data #新建文件夹data
[root@localhost opt]# ls
data rh
[root@localhost data]# wget http://nginx.org/download/nginx-1.18.0.tar.gz #下载源码包
--2024-04-03 15:57:52-- http://nginx.org/download/nginx-1.18.0.tar.gz
正在解析主机 nginx.org (nginx.org)... 52.58.199.22, 3.125.197.172, 2a05:d014:5c0:2600::6, ...
正在连接 nginx.org (nginx.org)|52.58.199.22|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1039530 (1015K) [application/octet-stream]
正在保存至: “nginx-1.18.0.tar.gz”
100%[======================================================================================>] 1,039,530 348KB/s 用时 2.9s
2024-04-03 15:57:55 (348 KB/s) - 已保存 “nginx-1.18.0.tar.gz” [1039530/1039530])
[root@localhost data]# tar -xf nginx-1.18.0.tar.gz #解压安装包
[root@localhost data]# cd nginx-1.18.0 #切换目录到nginx-1.18.0
[root@localhost nginx-1.18.0]# yum -y install gcc openssl-devel zlib-devel opensll openssl-devel # 安装依赖环境
已加载插件:fastestmirror, langpacks
/var/run/yum.pid 已被锁定,PID 为 5800 的另一个程序正在运行。
Another app is currently holding the yum lock; waiting for it to exit...
另一个应用程序是:PackageKit
内存:221 M RSS (1.6 GB VSZ)
已启动: Wed Apr 3 15:26:01 2024 - 37:59之前
状态 :睡眠中,进程ID:5800
# 以上报错 可以使用m -rf /var/run/yum.pid 解决
[root@localhost nginx-1.18.0]# rm -rf /var/run/yum.pid #执行
[root@localhost nginx-1.18.0]# yum -y install gcc openssl-devel zlib-devel opensll openssl-devel #重新安装依赖环境
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.sjtu.edu.cn
* extras: ftp.twaren.net
* updates: ftp.twaren.net #比较多 不全部例举 注意看下是否有 error undefined等一些常见的报错词 注意看下提示。
root@localhost nginx-1.18.0]# ./configure --prefix=/apps/nginx #检测环境指定安装目录
checking for OS
+ Linux 3.10.0-693.el7.x86_64 x86_64
checking for C compiler ... found
+ using GNU C compiler #也需要看下提示 遇见不理解的可以使用configure --help
[root@localhost nginx-1.18.0]# make -j2 #编译 -j2 2个核心编译 按需写
[root@localhost nginx-1.18.0]# make install #将软件复制到 前面规定路径
[root@localhost nginx-1.18.0]# ln -s /apps/nginx/sbin/nginx /usr/local/sbin/ #nginx设置软链接 方便后续使用
[root@localhost /]# systemctl stop firewalled #关闭防火墙
[root@localhost /]# setenforce 0 # 不启用防火墙
[root@localhost /]# curl 本机ip #测试是否安装成功
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
浏览器输入自己的ip 查看到类似情况也是成功的。 ::: center :::