
🔥个人主页:胡萝卜3.0****
📖个人专栏:************************************************************************************************************************************************************************************************************************************************************《C语言》、《数据结构》 、《C++干货分享》、LeetCode&牛客代码强化刷题****************************************************************************************************************************************************************************************************************************************************************
⭐️人生格言:不试试怎么知道自己行不行
🎥胡萝卜3.0🌸的简介:


目录
[一. 认识软件包管理器:Linux的 "应用商店"](#一. 认识软件包管理器:Linux的 “应用商店”)
[1.1 包管理器:Linux系统的"软件管家"](#1.1 包管理器:Linux系统的“软件管家”)
[1.2 Linux软件包生态:开源世界的"应用商店"体系](#1.2 Linux软件包生态:开源世界的“应用商店”体系)
[2.1 查看软件包](#2.1 查看软件包)
[2.1.1 yum](#2.1.1 yum)
[2.1.2 apt](#2.1.2 apt)
[2.2 下载和卸载软件](#2.2 下载和卸载软件)
[2.2.1 yum下载和卸载软件](#2.2.1 yum下载和卸载软件)
[2.2.2 apt下载和卸载软件](#2.2.2 apt下载和卸载软件)
[2.3 关于Linux / Windows下多用户软件安装次数的问题](#2.3 关于Linux / Windows下多用户软件安装次数的问题)
[2.4 注意事项](#2.4 注意事项)
[2.5 安装源](#2.5 安装源)
[2.6 更新安装源](#2.6 更新安装源)
一. 认识软件包管理器:Linux的 "应用商店"
在Linux中存在多种软件安装的方法:
- 源代码安装
- rmp包
- yum/apt:包管理器
通过上面列举的3种软件安装的方法中,最推荐使用是:yum/apt:包管理器,源代码和rmp包不太推荐。
那接下来,我们就要来看看包管理器是什么?
1.1 包管理器:Linux系统的"软件管家"
ok,我们知道在手机上会提供应用商店,并且windows上也存在应用商店,不管是手机上的应用商店还是windows中的应用商店,无非就是一个app或者应用程序,本质上就是一个客户端。
当我们在应用商店中下载软件时,实际上并非直接从应用商店下载安装包,而是通过商店提供的链接,从托管该软件文件的服务器进行下载。

那包管理器就类似于Linux下的应用商店,也是一个客户端!!!
- yum(Yellow dog Update,Modified)是Linux下非常常用的一种包管理器,主要应用在Fedora,RedHat,Centos等发行版上
- Ubuntu:主要使用apt(Advanced Package Tool)作为其包管理器。apt同样提供了自动解决依赖关系、下载和安装软件包的功能
Linux下载软件的过程(ubuntu、centos、other)------

ok,聊完了这个,接下来我们来聊一下Linux软件包生态的问题------
1.2 Linux软件包生态:开源世界的"应用商店"体系
这里的核心就是:如何评估一款操作系统的好坏?
也许会有uu想说,一款操作系统系统的好坏不就是:看他是否稳定,是否被大多数人使用吗?
ok,这是对的,但是如果你这样和你的老板说的话,老板有可能不是那么认可。
一款操作系统的好坏是看这款操作系统是否有完善的生态!!!
一个完善的生态应该包含这些:

社区完善,论坛活跃,官方文档完善,软件体系非常丰富,维护更新速度及时,有bug及时修,操作系统本身比较稳定,并且富有大量针对性的客户群体......

作为Linux系统的开发者,你就必须想办法让更多人用起来,那Linux操作系统就必须要有完善的操作系统生态------

我们知道Linux系统是一款开源的操作系统,既然是开源的并且Linux具有完善的生态,那自然就会有人愿意给Linux写相应的引用软件,并且提供云服务器让你下载

并且开源的本质也是一种商业模式!!!
CentOS的社区论坛:The CentOS Project
Ubuntu Releasesubuntu的社区论坛:Ubuntu Releases
在使用yum/apt时,你的Linux机器是怎么知道软件包在全球的哪台机器上的呢?
ok,其实在你的云服务器内部会存在某种配置文件,这个配置文件里面会保存目标服务器的下载链接官方地址,然后在使用yum/apt时,你的Linux机器就会去相应的官方下载链接中去下载相应的软件。
但是,我们知道不管是centos,还是ubuntu,他们的服务器都是在国外的,那既然在国外,我们在国内对这些服务器进行访问的时候,就会有些问题,那在我们的国内就有国内Linux软件安装源的官方链接------
1. 清华大学开源软件镜像站(官方镜像)
bash
https://mirrors.tuna.tsinghua.edu.cn/
-
官方状态:被各大发行版列为官方镜像
-
支持:Ubuntu, Debian, CentOS, Arch Linux, Fedora等
2. 中国科学技术大学镜像站(USTC)
bash
http://mirrors.ustc.edu.cn/
-
官方状态:官方镜像站
-
支持:几乎所有主流发行版
3. 阿里云开源镜像站
bash
https://developer.aliyun.com/mirror/
-
官方状态:官方合作镜像
-
支持:Ubuntu, Debian, CentOS, Fedora等
4. 华为云开源镜像站
cpp
https://mirrors.huaweicloud.com/
-
官方状态:官方镜像
-
支持:主流发行版
以上所列举的都是国内镜像源。其工作原理是:各大服务商将官方软件仓库同步到位于国内的服务器上,我们实际上是从这些境内服务器下载软件包,从而获得更快的速度与更稳定的连接。

那接下来的问题就是:我们为什么选择使用yum/apt进行下载相应的软件呢?
这是因为:

- 那为什么要有yum/apt呢?
因为yum/apt方便,并且可以解决软件依赖,直接帮我们下载软件和该软件所依赖的软件包

ok,解决了操作系统生态的问题,我们也知道了yum/apt在下载软件的时候,会去Linux机器中的配置文件中保存的官方下载链接去下载相应的软件,那接下来我们就要来学习一下:我们该怎么使用yum/apt进行下载操作呢?
二、yum与apt实战指南:掌握两大主流包管理器
2.1 查看软件包
2.1.1 yum
通过 yum list 命令可以罗列出当前centos一共有哪些软件包。
cpp
# yum list 查看centos中的所有软件
[carrot@VM-0-16-centos ~]$ yum list
由于包的数量过多,这里我们就要使用grep命令来帮我们来筛选我们所关注的包,例如:
bash
[carrot@VM-0-16-centos ~]$ yum list | grep lrzsz
lrzsz.x86_64 0.12.20-36.el7 @os
- 软件包名称:主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.CPU架构
- "x86_64"后缀表示64位系统的安装包,"i686"后缀表示32位系统安装包。在选择包时要和系统匹配
- "el7"表示操作系统发行版的版本。"el7"表示的是centos7/redhat7。"el7"表示centos6/redhat6
- 最后一列,base表示的是"软件源"的名称(
@os就是@base,只是显示的名称不同),类似于"小米应用商店","华为应用商店"......
这样我们就可以在众多软件包中找到 lrzsz。
2.1.2 apt
- apt search 你的包名字 可以在ubuntu的众多软件包中找到你所关注的包
- apt show 你的包名字 可以查看你所关注包的更详细的信息
bash
# Ubuntu
# apt search 你的包名字 可以在ubuntu的众多软件包中找到你所关注的包
$ apt search lrzsz
Sorting... Done
Full Text Search... Done
cutecom/focal 0.30.3-1build1 amd64
Graphical serial terminal, like minicom
lrzsz/focal,now 0.12.21-10 amd64 [installed]
Tools for zmodem/xmodem/ymodem file transfer
# apt show 你的包名字 可以查看你所关注包的更详细的信息
$ apt show lrzsz
Package: lrzsz
Version: 0.12.21-10
Priority: optional
Section: universe/comm
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Martin A. Godisch <godisch@debian.org>
...
对于ubantu中的软件包就有详细的介绍!!!
2.2 下载和卸载软件
2.2.1 yum下载和卸载软件
bash
# 下载软件
# -y 表示下载软件的时候不会被询问,直接自动确认
sudo yum install [-y] 软件包名
# 卸载软件
# -y 表示卸载软件的时候不会被询问,直接自动确认
sudo yum remove [-y] 软件包名
yum会自动找到都有哪些软件包需要下载/卸载,加上 -y 选项 直接敲"enter"安装/卸载即可
注意事项:
- 安装软件和卸载软件时需要向系统目录中写入内容,一般需要sudo或者切到root账户下才能完成
- yum安装软件只能一个安装完之后才能再安装另一个。正在yum安装一个软件的过程中,如果再尝试用yum安装另一个软件,yum会报错
- 报错自行查资料
我们知道所谓的软件安装就是将软件拷贝到/usr/bin的路径下,/usr/bin是root(管理员)创建的
bash
[carrot@VM-0-16-centos ~]$ ll -d /usr/bin
dr-xr-xr-x. 2 root root 36864 Dec 22 21:22 /usr/bin

作为普通用户没有权限在/usr/bin/路径下进行操作,所以我们需要 su 切换成root,或者对命令进行提权才能进行下载和删除软件,我们一般使用命令提权
bash
# 命令提权可以下载
[carrot@VM-0-16-centos ~]$ sudo yum install -y lrzsz
# 切换成root可以下载
[carrot@VM-0-16-centos ~]$ su
Password:
[root@VM-0-16-centos carrot]# yum install -y lrzsz
卸载软件同样如此!!!
bash
[carrot@VM-0-16-centos ~]$ sudo yum remove -y lrzsz
[carrot@VM-0-16-centos ~]$ su
Password:
[root@VM-0-16-centos carrot]# yum remove -y lrzsz
补充命令:
bash
# -d 选项表示不要显示该目录下的内容,只查看当前目录本身
[root@VM-0-16-centos carrot]# ll -d /usr/bin
dr-xr-xr-x. 2 root root 36864 Dec 25 21:27 /usr/bin
2.2.2 apt下载和卸载软件
bash
# 下载软件
# -y 表示下载软件的时候不会被询问,直接自动确认
sudo apt install [-y] 软件包名
# 卸载软件
# -y 表示卸载软件的时候不会被询问,直接自动确认
sudo apt remove [-y] 软件包名
apt会自动找到都有哪些软件包需要下载/卸载,加上 -y 选项 直接敲"enter"安装/卸载即可
注意事项:
- 安装软件和卸载软件时需要向系统目录中写入内容,一般需要sudo或者切到root账户下才能完成
- apt安装软件只能一个安装完之后才能再安装另一个。正在apt安装一个软件的过程中,如果再尝试用apt安装另一个软件,apt会报错
- 报错自行查资料
这里有个问题:那我怎么知道我要用的包的名字是什么?装什么包呢?
- 这是和应用场景有关的!!!需要什么包就下载什么包
2.3 关于Linux / Windows下多用户软件安装次数的问题
- Linux中软件安装,如果是多用户,安装几次呢?
1次,因为是以root的权限进行安装的,在/usr/bin路径下安装的
Windows在安装软件的时候会询问是多用户安装还是单用户安装,前者和Linux一样,装了就所有的用户都装好了,后者则只会安装指定用户。
Windows系统一般只有一个用户。
2.4 注意事项
关于yum/apt的所有操作必须保证主机(虚拟机)网络畅通
可以通过ping指令验证------
bash
ping www.baidu.com
# 当天yum / apt也能离线安装,但是和我们当前⽆关,暂不关⼼。
那这里还有一个问题:yum/apt怎么知道我要安装的软件在什么位置?
在CentOS和Ubuntu中,包管理器通过配置文件获知软件仓库的地址,然后下载仓库的索引文件。这些索引包含了每个软件包在仓库中的具体存储路径,从而定位到确切的下载位置。
| 项目 | CentOS/RHEL (yum) | Ubuntu/Debian (apt) |
|---|---|---|
| 配置文件 | /etc/yum.repos.d/*.repo |
/etc/apt/sources.list 和 /etc/apt/sources.list.d/*.list |
| 索引文件 | repodata/primary.xml.gz |
Packages.gz |
ok,那接下来我们就要来聊聊安装源了------
2.5 安装源
- Cetnos 安装源路径:
bash
$ ll /etc/yum.repos.d/
total 16
-rw-r--r-- 1 root root 676 Oct 8 20:47 CentOS-Base.repo # 标准源
-rw-r--r-- 1 root root 230 Aug 27 10:31 epel.repo # 扩展源
# 安装扩展源
# $ sudo yum install -y epel-release
[root@VM-0-16-centos carrot]# ll /etc/yum.repos.d/
total 16
-rw-r--r-- 1 root root 641 Sep 11 11:52 CentOS-Base.repo
-rw-r--r-- 1 root root 230 Sep 11 11:52 CentOS-Epel.repo
-rw-r--r-- 1 root root 1358 Sep 5 2021 epel.repo
-rw-r--r-- 1 root root 1457 Sep 5 2021 epel-testing.repo
Base 表示稳定软件源;epel 表示扩展软件源
@Base 在稳定软件源中下载;@epel 在扩展软件源中下载

- Ubuntu 安装源路径:
bash
$ cat /etc/apt/sources.list # 标准源
$ ll /etc/apt/sources.list.d/ # 扩展源
# ubuntu 安装扩展源,就结合未来具体场景
2.6 更新安装源

更新安装源,云服务器不用考虑,因为软件源都是国内的了,其它需要的话可以参考------CentOS 更新yum源及yum命令详解_cnteos更新源命令-CSDN博客
好玩的命令 :Linux命令行的有趣命令_linux有趣的命令-CSDN博客
结尾
希望对学习Linux相关内容的uu有所帮助,不要忘记给博主"一键三连"哦!
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:
https://cloud.tencent.com/developer/support-plan?invite_code=bg03csc6h92

