Linux包管理器:高效安装软件的秘诀

🔥个人主页:胡萝卜3.0****

📖个人专栏:************************************************************************************************************************************************************************************************************************************************************《C语言》、《数据结构》 、《C++干货分享》、LeetCode&牛客代码强化刷题****************************************************************************************************************************************************************************************************************************************************************

《Linux系统编程》

⭐️人生格言:不试试怎么知道自己行不行


🎥胡萝卜3.0🌸的简介:


目录

[一. 认识软件包管理器:Linux的 "应用商店"](#一. 认识软件包管理器:Linux的 “应用商店”)

[1.1 包管理器:Linux系统的"软件管家"](#1.1 包管理器:Linux系统的“软件管家”)

[1.2 Linux软件包生态:开源世界的"应用商店"体系](#1.2 Linux软件包生态:开源世界的“应用商店”体系)

二、yum与apt实战指南:掌握两大主流包管理器

[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中存在多种软件安装的方法:

  1. 源代码安装
  2. rmp包
  3. 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

相关推荐
~央千澈~2 小时前
人工智能AI算法推荐之番茄算法推荐证实其算法推荐规则技术解析·卓伊凡
人工智能·算法·机器学习
执笔论英雄2 小时前
【RL】ROLL中loss 计算compute_approx_kl
人工智能
I · T · LUCKYBOOM2 小时前
iptables 防火墙(二)
linux·运维·服务器·网络·安全·centos
sealaugh322 小时前
AI(学习笔记第十七课)langchain v1.0(SQL Agent)
人工智能·笔记·学习
zbguolei2 小时前
使用VBA将EXCEL生成PPT
人工智能·opencv·计算机视觉
易百纳2 小时前
易百纳携多模态AI桌面机器人——Kubee Robot亮相2025火山引擎冬季FORCE大会
人工智能·火山引擎
zhengfei6112 小时前
AI渗透工具——自主进攻性安全人工智能,用于指导渗透测试流程(EVA)
人工智能·安全
IT_陈寒2 小时前
React 18 性能优化实战:5个被低估的Hooks用法让你的应用快30%
前端·人工智能·后端
戴西软件2 小时前
戴西软件3DViz Convert:解锁三维数据流动,驱动一体化协同设计
大数据·人工智能·安全·3d·华为云·云计算