当前位置: 首页 > news >正文

浅谈Yum 安装和 源码安装

浅谈Yum 安装和 源码安装

本文所叙述的Linux系统是基于RedHat发行版的CentOS7

yum安装

1. 前言

我们知道在Windows上下载的安装包后缀是 .exe ,与之对应的 在 Linux下的安装包的后缀是 .rpm

rpm (Red Hat Package Manager) 是红帽软件包管理器

我们在Windows电脑上下载完.exe安装包后,双击打开即可安装,完全不用操心其内部配置和代码的联系方式。

但是,在Linux下,比如你下载一个mysql5.7 的rpm包,那么当你使用rpm命令去安装的时候,就告诉你这个rpm 还依赖于其他的rpm包,你必须按照顺序来一个一个安装,这样显得非常麻烦,且对新手很不友好!

那么,有没有一种工具,让我们无需关心其rpm包之间的依赖,更加方便快捷的安装某个应用呢,答案是肯定的。

这里贴上rpm软件包管理器的常用命令作为学习和参考

# 一、查询已安装的软件包
$ rpm -q 软件包名   # 查询软件包是否安装
$ rpm -ql 软件包名  # 查询软件包的文件具体安装位置
$ rpm -qi 软件包名  # 查询软件包信息# 二、安装、升级、卸载软件包$ rpm -ivh 软件包名  # 安装软件包(其中,i表示安装,v表示显示安装过程,h表示显示安装进度)
$ rpm -Uvh 软件包名  # 升级软件包(U表示升级)
$ rpm -e 软件包名     # 卸载软件包

2. 横空出世

yum就是这样一个方便快捷的工具,对小白同学非常友好。

它会自己解决rpm包之间的依赖关系,我们只需要一个简简单单的命令即可完成安装

# 比如我们安装mysql
$ yum -y install mysql

像上面的命令一样,我们就只提供给我们想要安装的应用名称,即可完成安装。

那么可能有人会问了,这个yum 是从哪里找的rpm安装包呢?安不安全呢?下载速度怎么样啊?

3. yum 源仓库

这个非常好理解,这个yum 仓库里面存放的就是绝大部分rpm安装包,几乎是囊括了你所需要的软件包。

你就跟windows电脑里的软件管家对比,之前你下载一个微信、QQ啥软件的,你都要去百度上寻找官网下载

一不小心可能还下载到病毒,但你去本机自带的软件管家里下载,起码保证你方便寻找,安全可靠。

那yum仓库就跟软件管家一毛一样。里面存放了非常之多的rpm包,当你敲了命令后,他就会去这个仓库里找rpm包

并且自动解决这些包之间的依赖关系,且您放心,这个仓库都是有专人在维护的,可靠性、安全性、完整性不需要担心。

But,But,But 最大的难点就是下载速度比较慢,因为这个仓库是在国外在维护

访问下载速度自然也就慢了,如果你可以科学上网 的话,那当我没说…

当然,解决办法还是有滴!国内也是有这样的仓库的,由国内知名的大厂在维护,比如阿里云、网易、搜狐等

国内开源镜像站
https://developer.aliyun.com/mirror/
http://mirrors.sohu.com
http://mirrors.163.com

但是哦,我在上面说的是这个仓库囊括了绝大多数安装包,有的没有的,就需要第三方可信任组织的软件包

  • epel 它提供了众多centos额外的第三方包
http://mirrors.sohu.com/fedora-epel/7/x86_64/Packages/
https://developer.aliyun.com/mirror/epel/

现在,你有了国内的yum 仓库,你就可以去这个地址下下载啦

老规矩,附上一份yum 常用命令

$ yum install -y 软件名   # 安装软件
$ yum remove 软件名  # 卸载软件
$ yum update 软件名  # 更新软件
$ yum update  # 更新所有软件包
$ yum search 软件名  # 搜索指定软件
$ yum list # 列出所有软件包
$ yum list installed  # 列出已安装的所有软件包
$ yum list available  # 列出可用的安装包
$ yum clean all  # 清理下载的缓存,释放磁盘空间

BUT,又有人可能会问,那yum怎么知道要去这个地址下载软件呢?

嘿!请往下接着瞧

4. 配置仓库地址

首先要说明的一点是,yum是分为服务端和客户端。

服务端说白了就是yum 仓库,提供服务的

客户端就是我们个人、企业的主机,来获取这些服务的机器

我们先来看看yum 的客户端
# 客户端的配置文件是 /etc/yum.conf 文件  它为所有仓库提供公共配置
$ vim /etc/yum.conf[main]
cachedir=/var/cache/yum/$basearch/$releasever   # 注明缓存的文件目录位置
keepcache=0										# 本地缓存是否保留 0 否 1 是
debuglevel=2									# 调日志级别
logfile=/var/log/yum.log						# 日志文件目录位置
exactarch=1										# 精确匹配系统平台(CentOS、Ubantu)
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5								# 同时安装几个软件包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m# 最后一句话解释一下,请将你的yum 仓库配置文件(也就是仓库地址咯)放在 /etc/yum.repos.d目录下,要以.repo结尾才可以
# PUT YOUR REPOS HERE OR IN separate files named file.repo  
# in /etc/yum.repos.d
# 那我们cd 到该目录下看看
$ cd /etc/yum.repos.d
# 切记,必须将*.repo文件放在这个目录下,也不能放在它的子目录下,且只在这个目录下才可行。

我们来以这个目录下的 CentOS-Base.repo 文件为例来说明文件内容

$ vim CentOS-Base.repo# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#[base]
name=CentOS-$releasever - Base -mirrors.sohu.com  # 仓库的名字
failovermethod=priority # roundrobin 随机挑选   priority 顺序读取
baseurl=http://mirrors.sohu.com/centos/7/os/x86_64/Packages/=http://mirrors.sohu.com/centos/7/updates/x86_64/Packages/
gpgcheck=1  # 是否检测秘钥
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  # 公钥存放路径# 指定rpm包升级的时候,去哪里找
#released updates   
[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# epel额外包的下载地址
#additional packages that may be useful
[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

自己自定义的时候的格式,按照[base]的那个来,其余的updates和 extras都也一样

我们可以去阿里巴巴的镜像网站看看如何配置

[阿里巴巴CentOS的[base]的配置源教程](centos镜像_centos下载地址_centos安装教程-阿里巴巴开源镜像站 (aliyun.com))

[阿里巴巴CentOS的[extras]的配置源教程](epel镜像_epel下载地址_epel安装教程-阿里巴巴开源镜像站 (aliyun.com))

源码安装

上面的yum 安装方式有利有弊

  • 利:安装方便快捷,适合新手,配置相对方便,可以自动解决依赖关系

  • 弊:不能自定义应用、不能指定应用的下载版本

源码安装利弊

  • 利:可以指定下载版本,设置参数、指定安装路径、扩展第三方功能
  • 弊:不适合新手,适合老手,不能自动解决依赖关系,安装复杂、配置相对复杂

建议方式:yum 和 源码一起使用,即可解决绝大部分问题

源码安装分三步

前提条件:准备好开发工具以及开发环境

  • 开发工具:gcc make 等
  • 开发组件
    • yum groups install "Development Tools"
    • yum groups install "Platform Development"

第一步

执行脚本 configure 文件

# 1.解压提前下载好的tar.gz 的源码包
# 2.cd 到解压的目录下
# 3.然后执行./configure --prefix=软件安装路径对于C C++ 代码进行编译安装,需要执行configure脚本来生成Makefile文件来检查依赖和外部环境# 假设你已经下载了nginx-1.12.0.tar.gz压缩包在/opt目录下$ cd /opt/ 
$ tar -zxvf nginx-1.12.0.tar.gz # 解压
$ cd nginx-1.12.0
$./configure --prefix=/data/nginx_test01 # 指定安装的目录到/data/nginx_test01 下
$ ls # 可以看到Makrfile文件

第二步

执行make 命令

# make 的作用就是进行源代码编译,以及提供一些功能
# 在当前目录(/opt/nginx-1.12.0)下输入make指令
$ make

第三步

开始安装 make install

# 当你执行完这条命令后,才会生成/data/nginx_test01这个文件夹
# 还是在当前目录下,输入make install命令
$ make install
# 然后这个目录文件就生成了  /data/nginx_test01

演示启动玩一下

# 上面已经编译安装完了nginx,现在我们来启动它
$ cd /data/nginx_test01
$ ls
$ cd ./sbin # bin目录是二进制文件可执行的目录
$ ls # 然后可以看见一个nginx可执行文件,执行它
$ ./nginx# 然后去网页上访问IP加端口,看看是否成功# 如果出现403,则需要浅浅的配置一下nginx的配置文件
$ cd /data/nginx_test01/conf
$ vim nginx.conf# user nobody;  # 将第一行代码取消注释,nobody改成root 以root用户执行
user root;
...
...
# 保存退出# 重启nginx
$ cd ..
$ ./sbin/nginx -s reload 
# 然后就好了

最后一步,将启动文件地址加入到PATH里,配置全局变量

就不用每次去指定目录里再去启动、重启了

# 我想直接输入 nginx启动它,就必须要配置环境变量
# 那么就可以将 /data/nginx_test01/sbin 写入环境变量$ vim /etc/profile.d/nginx.sh
# 写入这样一条命令
$ export PATH=/data/nginx_test01/sbin:$PATH
# 保存退出# 重新读取配置文件
$ source /etc/profile.d/nginx.sh# 然后就可以启动、重启、停止nginx服务了
$ nginx #启动
$ nginx -s stop #停止
$ nginx -s reload
$ nginx -s restart

感谢自己的记录和坚持不懈,加油! 今日学习记录和分享到此结束! 下次再见!

相关文章:

浅谈Yum 安装和 源码安装

浅谈Yum 安装和 源码安装 本文所叙述的Linux系统是基于RedHat发行版的CentOS7 yum安装 1. 前言 我们知道在Windows上下载的安装包后缀是 .exe ,与之对应的 在 Linux下的安装包的后缀是 .rpm rpm (Red Hat Package Manager) 是红帽软件包管理器 我们在Windows电脑…...

JavaEE初阶Day 3:多线程(1)

目录 Day 3:多线程(1)1. 线程1.1 引入线程的原因1.2 线程的定义1.3 为何线程更轻量1.4 问题 2. 多线程代码2.1 继承Thread重写run2.2 通过实现Runnable接口创建线程2.3 针对2.1的变形使用匿名内部类2.4 针对Runnable创建匿名内部类2.5 使用la…...

gutil140.dll是什么?gutil140.dll无法继续执行的解决方法

gutil140.dll文件是一个动态链接库(DLL)文件,通常与Microsoft Visual Studio 2015相关联。 gutil140.dll是开发过程中使用的工具函数集合,它辅助开发人员执行常见的编程任务,如文件操作、内存分配和字符串处理等。这个…...

在CentOS 7上安装Python 3.7.7

文章目录 一、实战步骤1. 安装编译工具2. 下载Python 3.7.7安装包3. 上传Python 3.7.7安装包4. 解压缩安装包5. 切换目录并编译安装6. 配置Python环境变量7. 使配置生效8. 验证安装是否成功 二、实战总结 一、实战步骤 1. 安装编译工具 在终端中执行以下命令 yum -y groupin…...

基于SpringBoot Vue宠物领养系统

一、📝功能介绍 基于SpringBoot Vue宠物领养系统 角色:管理员、用户 当游客打开系统的网址后,首先看到的就是首页界面。在这里,游客能够看到宠物领养救助平台的导航条显示首页、宠物招领、宠物认领、 宠物论坛、宠物资讯、后台管…...

ip命令

ip a 也是ip addr简写 [rootlocalhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft…...

【Kaggle】练习赛《鲍鱼年龄预测》(上)

前言 上一篇文章&#xff0c;讲解了《肥胖风险的多类别预测》机器学习方面的文章&#xff0c;主要是多分类算法的运用&#xff0c;本文是一个回归的算法&#xff0c;本期是2024年4月份的题目《Regression with an Abalone Dataset》即《鲍鱼年龄预测》&#xff0c;在此分享高手…...

Ruby 之交租阶段信息生成

题目 我看了一下&#xff0c;这个题目应该不是什么机密&#xff0c;所以先放上来了。大概意思是根据合同信息生成交租阶段信息。 解答 要求是要使用 Ruby 生成交租阶段信息&#xff0c;由于时间比较仓促&#xff0c;变量名那些就用得随意了些。要点主要有下面这些&#xff1a…...

RUST语言值所有权之内存复制与移动

1.RUST中每个值都有一个所有者,每次只能有一个所有者 String::from函数会为字符串hello分配一块内存 内存示例如下: 在内存分配前调用s1正常输出 在分配s1给s2后调用报错 因为s1分配给s2后,s1的指向自动失效 s1被move到s2 s1自动释放 字符串克隆使用...

【Django学习笔记(三)】BootStrap介绍

BootStrap介绍 前言正文1、BootStrap 快速了解2、初识BootStrap2.1 下载地址2.2 创建目录2.3 引入BootStrap2.4 使用BootStrap 3、BootStrap 组件&样式3.1 导航条3.2 栅格系统3.3 container3.3.1 container3.3.2 container-fluid 3.4 面板3.5 媒体对象3.6 分页3.7 图标3.7.…...

ClickHouse开发相关(UDAF)

ClickHouse开发相关(UDAF) ClickHouse介绍 ClickHouse是一个开源、高性能的列式 OLAP 数据库管理系统,用于使用 SQL 进行实时分析。 为什么需要ClickHouse UDAF? ClickHouse中已存在了许多聚合函数,绝大多数情况下已经覆盖我们的需求,但是有时候我们仍然需要自定义函数…...

MySql并发事务问题

事务 事务概念&#xff1a; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 事务的特性&#xff1a;ACID&#xff1a; 小…...

Windows下Docker创建Mysql5.7

安装 下载镜像&#xff0c;注意&#xff0c;要带版本号 docker pull mysql:5.7 等下载完成执行命令&#xff1a; 错误命令1&#xff0c;直接Windows下路径&#xff1a; docker run --name mysql57 --restartalways -p 3306:3306 -v F:/mysqldata/data57/log:/var/log/mysql…...

Redis(性能管理、主从复制、哨兵模式)概述及部署

目录 一、性能管理 1、查看Redis内存使用 2、内存碎片率 3、跟踪内存碎片率 4、内存使用率 5、内回收key 二、Redis集群有三种模式 三、Redis主从复制 1、主从复制的概念 2、主从复制的作用 3、主从复制的流程 4、搭建Redis主从复制 1.环境准备 2.安装Redis&#…...

LabVIEW挖坑指南

一、挖坑指南 1.1、输出变量放在条件框内 错误写法&#xff1a; 现象&#xff1a;如果没进入对应的分支&#xff0c;输出为默认值 正常写法&#xff1a; 让每个分支输出的值都在预料之内。 1.2、统计耗时不准 错误写法 现象&#xff1a;统计出来的耗时是2000ms 正常写法&a…...

docker容器环境安装记录(MAC M1)(完善中)

0、背景 在MAC M1中搭建商城项目环境时&#xff0c;采用docker统一管理开发工具&#xff0c;期间碰到了许多环境安装问题&#xff0c;做个总结。 1、安装redis 在宿主机新建redis.conf文件运行创建容器命令&#xff0c;进行容器创建、端口映射、文件挂载、以指定配置文件启动…...

Linux 常用命令(持续更新中...)

1. ls 查看文件列表命令 语法&#xff1a; ls [-a -l -h] [Linux路径] -a -l -h 是可选的选项 &#xff08;-h需配合-l命令一起使用&#xff09;Linux路径是此命令可选的参数 ls #查看当前目录所有非隐藏文件(平铺方式显示) ls -a #查看当前目录下所有文件 …...

xss.pwnfunction-Jefff

在eval中可以直接执行命令所以直接把"直接闭合在结尾再加上一个"因为后面的"没闭和会报错 ?jeffa";alert(1);" 或 ?jeffa"-alert(1)-" -是分隔符...

java——文件上传

一、文件上传——简介 文件上传的简介&#xff1a;文件上传是指将本地计算机中的文件传输到网络上的服务器或另一台计算机上的过程。在 Web 开发中&#xff0c;文件上传通常指的是将用户通过 Web 页面提交的文件&#xff08;如图像、文档、音频、视频等&#xff09;传输到服务器…...

RCE(远程命令执行)漏洞详解

漏洞描述 RCE(remote command/code execute&#xff0c;远程命令执行)漏洞 远程代码执行 (RCE) 攻击是指攻击者可以在一个组织的计算机或网络上运行恶意代码。执行攻击者控制的代码的能力可用于各种目的&#xff0c;包括部署额外的恶意软件或窃取敏感数据。 漏洞原理 远程代…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...