浅谈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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

I2C驱动实验:验证所添加的I2C设备的设备节点

一. 简介 前面一篇文章向设备树中的 I2C1控制器节点下,添加了AP3216C设备节点。文章如下: I2C驱动实验:向设备树添加 I2C设备的设备节点信息-CSDN博客 本文对设备树进行测试,确认设备节点是否成功创建好。 二. I2C驱动实验&a…

算法刷题应用知识补充--基础算法、数据结构篇

这里写目录标题 位运算&#xff08;均是拷贝运算&#xff0c;不会影响原数据&#xff0c;这点要注意&#xff09;&、|、^位运算特性细节知识补充对于n-1的理解异或来实现数字交换找到只出现一次的数据&#xff0c;其余数据出现偶数次 >> 、<<二进制中相邻的位的…

日志打印的学习之log4j2(一)最简单的案例

spring框架 首先引入依赖 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.11.1</version></dependency> 其次在resources下新增log4j2.xml文件 <?xml versio…

动态多目标优化:动态约束多目标优化测试集DCP1-DCP9的TruePF(提供MATLAB代码)

一、进化动态约束多目标优化测试集DCP1-DCP9 参考文献&#xff1a; [1]G. Chen, Y. Guo, Y. Wang, J. Liang, D. Gong and S. Yang, “Evolutionary Dynamic Constrained Multiobjective Optimization: Test Suite and Algorithm,” in IEEE Transactions on Evolutionary Com…

Web3:数字化社会的下一步

随着技术的不断进步和互联网的发展&#xff0c;我们正逐渐迈入一个全新的数字化社会阶段。在这个新的时代&#xff0c;Web3作为数字化社会的重要组成部分&#xff0c;将发挥着举足轻重的作用。本文将探讨Web3在数字化社会中的意义、特点以及对未来发展的影响。 1. 重新定义数字…

Django--数据库连接

数据库配置 打开mysite/settings.py配置文件&#xff0c;这是整个Django项目的设置中心。Django默认使用SQLite3数据库&#xff0c;因为Python原生支持SQLite3数据库&#xff0c;所以你无须安装任何程序&#xff0c;就可以直接使用它。 下面是默认的数据库配置&#xff1a; …

洛谷刷题 前缀和与差分-[P2004]领地选择(C++)

题目描述 作为在虚拟世界里统帅千军万马的领袖&#xff0c;小 Z 认为天时、地利、人和三者是缺一不可的&#xff0c;所以&#xff0c;谨慎地选择首都的位置对于小 Z 来说是非常重要的。 首都被认为是一个占地 CC 的正方形。小 Z 希望你寻找到一个合适的位置&#xff0c;使得首…

人脸识别:Arcface--loss+code

之前只接触过传统方法的人脸识别算法&#xff0c;本以为基于深度学习的方法会使用对比损失之类的函数进行训练&#xff0c;但是Arcface算法基于softmax进行了创新&#xff0c;本文未深究其详细的loss公式原理&#xff0c;在大致明白其方向下&#xff0c;运行了代码&#xff0c;…

06-kafka及异步通知文章上下架

kafka及异步通知文章上下架 1)自媒体文章上下架 需求分析 2)kafka概述 消息中间件对比 特性ActiveMQRabbitMQRocketMQKafka开发语言javaerlangjavascala单机吞吐量万级万级10万级100万级时效性msusmsms级以内可用性高&#xff08;主从&#xff09;高&#xff08;主从&#…

spring中各种bean加载顺序

具体加载顺序按照罗列的顺序 XXXAware ApplicationContextAware、EnvironmentAware、BeanFactoryAware、BeanClassLoaderAware 顾名思义&#xff0c;用于获取对应的对象&#xff0c;需要在实体类中声明对应的对象且当前类为普通类能被注入。 InitializingBean void afterProp…

pyaudio webrtcvad实现实时录制语音加VAD检测没人说话自动停止录制

vad检测没人说话超过2秒就自动停止录制并保存前面有人说话的音频文件 pip install webrtcvad代码: import pyaudio import wave import time import webrtcvadCHUNK = 320 # 20ms 的语音帧 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 16000 WAVE_OUTPUT_FILENAME

【leetcode面试经典150题】7.买卖股票的最佳时机(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

下载页面上的视频

引言&#xff1a;有些页面上的视频可以直接右键另存为或者F12检索元素找到视频地址打开后保存&#xff0c;但有些视频页面是转码后的视频&#xff0c;不能直接另存为视频格式&#xff0c;可以参考下本方法 以该页面视频为例&#xff1a;加载中...点击查看详情https://wx.vzan.c…

WindowsPowerShell安装配置Vim的折腾记录

说明 vim一直以来都被称为编辑器之神一样的存在。但用不用vim完全取决于你自己&#xff0c;但是作为一个学计算机的同学来说&#xff0c;免不了会和Linux打交道&#xff0c;而大部分的Linux操作系统都预装了vim作为编辑器&#xff0c;如果是简单的任务&#xff0c;其实vim只要会…

leetcode.19. 删除链表的倒数第 N 个结点

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 进阶&#xff1a;你能尝试使用一趟扫描实现吗&#xff1f; 思路 先遍历一遍得到链表的长度l,在从头开始删除第l-n个节点即可 实现 class Solution {public ListNode removeNt…

Java_自定义实体类的列表List<T>调用remove()失败讲解

示例1 前提&#xff1a; 新建一个主类Demo1。 需求&#xff1a; 在一个列表中有三条String的数据&#xff0c;想要使用remove(Object o)删掉其中一条。 结果&#xff1a; remove(Object o)成功把数据删掉。 示例2 前提&#xff1a; 新建一个自定义实体类DataExample和一个主…

爬取学习强国视频小示例

因为需要爬取的视频数量并不是很大&#xff0c;总共需要将131个视频下载下来&#xff0c;所以就直接去手动找找视频的地址和名称保存下来的。由于页面是动态加载的&#xff0c;所以我们无法在网站源码中直接找到视频的超链接。设想是可以用Selenium模拟浏览器点击进行动态加载获…

uni-app如何实现高性能

这篇文章主要讲解uni-app如何实现高性能的问题&#xff1f; 什么是uni-app&#xff1f; 简单说一下什么是uni-app&#xff0c;uni-app是继承自vue.js&#xff0c;对vue做了轻度定制&#xff0c;并且实现了完整的组件化开发&#xff0c;并且支持多端发布的一种架构&#xff0c…

电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?

批量调节音频速度是现代音频处理中的一个重要环节&#xff0c;尤其在音乐制作、电影剪辑、有声书制作等领域&#xff0c;它能够帮助制作者快速高效地调整音频的播放速度&#xff0c;从而满足特定的制作需求。本文将详细介绍批量调节音频速度的方法、技巧和注意事项&#xff0c;…

移动Web学习04-移动端订单结算页PC端个人中心页面

5、电商结算页面案例 css body{background-color: #F2F2F2; } * {box-sizing: border-box;margin: 0;padding: 0; }.main{padding: 12px 11px 80px; }.pay{display: flex;height: 80px;background-color: #fff;bottom: 0;width: 100%;border-top: 1px solid #ededed;position:…