Linux包管理器:从apt到镜像源全解析

文章目录


1.软件包管理器

在Linux下安装软件的常见安装方式

  1. 源代码安装:二进制拷贝到某个文件目录下
  2. rpm包安装:将项目编好,打个包,Linux安装包
  3. 包管理器安装:包管理器是最佳实践
    centos:yum
    Ubuntu:apt

2. 什么是软件包(应用商店)

  1. 在Linux下安装软件,一个通常的办法就是下载到程序的源代码,并进行编译得到可执行程序
  2. 这样的方法太麻烦了,于是有些人就会把一些常用的软件提前编译好,做成软件包放到一个服务器上,通过包管理器可以很方便的获取到这个已经编译好的软件包,并直接进行安装。(这个东西的存在就好比说是我们手机上的应用商店一样,我们需要下载某个软件先搜索到它再把它下载下来即可)
  3. 软件包和软件包管理器就好比"APP"和应用商店"的关系
  4. yum(yellow dog Modifiled)是Linux下的一个软件包管理器,主要运用再Fedora,RedHat,CentOS等发行版上。
  5. Ubuntu上主要使用的是apt(Advance Pakage Tool)作为包管理器。apt同样也提供了自动解决依赖关系、下载和安装软件包的功能,

3. Linux软件生态

  1. 首先,先抛出一个问题:我们如何去评估一款操作系统的好坏?
    操作系统好坏的评估不仅仅在于操作系统本身,还依托于其运用的场景。更重要的事情是,一款操作系统开发出来需要被更多的人使用,并且在维护和使用该操作系统的过程中衍生出的各种圈子。人们会建立社区和配套的文档,资料,论坛,并在此操作系统的基础上开发并开源各种不同的软件。(你的指令都是这样生成的)
    形成各种各样的圈子不是目的而是手段,形成圈子进而被更多的人使用才是根本因素,一款操作系统的圈子有越多的人愿意维护,公开相关文档,资料,开源各种工具和软件那么就可以说其生态较为完善,推荐使用。

大家有没有想过一个问题?这些开源的操作系统的云服务器是哪里来的?为什么会有人愿意将自己的成果开源?

一个具有良好生态的操作系统或者软件,会吸引更多的去使用人使用。一旦给他人或者企业提供了价值,他们就依赖其提供的价值,大家就会去主动维护这个社区,有的企业就会向其提供服务器等物质价值。所以开源的原始动力是让其适应不同的群体,本质也是吸引更多的人来使用,互相交换价值这种体系一旦运转下来并越来越丰富完善,我们就称该操作系统的"生态"越完善,从而吸引更多的人这样。这样就构成了一个良性循环,从某种角度上来讲,开源的本质也就是一种商业模式。

  1. 接下来我们先来讨论一下Linux下软件下载的过程
  2. 这就又引出了一个问题,我们下载软件的时候包管理器怎么知道去哪一个云服务器上下载?原因是因为yum/apt内置了配置文件,包含了内置服务器的url也就是服务器的公网IP,就可以找到对应的云服务器。
  3. 我们知道CentOS或者说Ubuntu都是老外搞出来的,操作系统本身以及对应的软件等一开始肯定是部署在国外的服务器上的。我们在中国境内访问因为防火墙的原因,我们的服务器通过国外的连接访问的时候及其容易不稳定。
    那么就有人将国外的软件包批量化的拷贝过来,把国外配置的链接替换为国内的链接,走国内的线,就会加速我们软件的安装。
    这样的过程也就是我们的镜像,国外的配置路径用国内的配置路径叫镜像源配置。
  4. 关于软件包我们还需要解决依赖的问题,那么什么叫做依赖呢?
    我们可以类比一下,我们写C语言程序的时候,是不是还要引用库文件,我们就可以说你写的代码依赖C语言的库,因为有的东西你是直接调用的。同样的你的软件也需要依赖别的库。yum/apt会自动扫描需要那些库,自动解决依赖关系。windows下装软件是把所有的软件包包括依赖关系全部打包了。
  5. 更换软件源的方式
    以我的Ubuntu机器为例:
    查看现有镜像源:

    更换软件源的过程:
  6. 备份当前源配置
bash 复制代码
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  1. 编辑源文件(在里面替换成国内镜像源地址)
bash 复制代码
sudo vim /etc/apt/sources.list

在如下位置更换镜像源:

  1. 更新清理软件源缓存并验证是否生效
bash 复制代码
sudo apt update      # 更新缓存(不是清理)
sudo apt clean       # 清理已下载的软件包缓存
sudo apt autoclean   # 清理旧版本的软件包缓存

扩展软件源:官方软件源(如 Ubuntu 默认源)只包含稳定版、开源、经过严格审核的软件 ,很多新版本软件(如 Docker、Node.js、Nginx)或非开源软件(如 NVIDIA 驱动、VS Code)不在官方源中,需要通过添加第三方扩展源 来获取。

以Docker为例:

bash 复制代码
# 1. 下载并安装 Docker 的 GPG 公钥(验证软件包来源)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 2. 添加 Docker 源到 sources.list.d(创建第三方源配置文件)
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 3. 更新 APT 缓存(让系统识别新源)
sudo apt update

# 4. 从新源安装软件
sudo apt install docker-ce

查看第三方源:

bash 复制代码
ll /etc/apt/sources.list.d/

apt安装软件时,需要从远程软件源服务器下载包和依赖,需要保持网络畅通,可以用ping用来检测网络连通性。

4.下载安装软件示例

  1. 查看软件包,还是以我的ubuntu机子为例
bash 复制代码
apt search lrzsz

查看某个软件的具体信息:

bash 复制代码
apt show lrzsz

Package: lrzsz(软件包名称)

Version: 0.12.21-11build1(软件版本号)

Priority: optional(优先级,表示这个包不是系统必须的,而是可选的)

Section: universe/comm(软件包所属的分类区域,universe表示社区维护的开源软件,comm表示通信相关工具)

Origin: Ubuntu(软件包的来源发行版是Ubuntu)

Maintainer: Ubuntu Developers ubuntu-devel-discuss@lists.ubuntu.com(Ubuntu官方维护者)

Original-Maintainer: Martin A. Godisch godisch@debian.org(原始维护者,来自Debian社区)

Bugs: https://bugs.launchpad.net/ubuntu/+filebug(提交Bug反馈的网址)

Installed-Size: 237 kB(安装后占用的磁盘空间大小)

Depends: libc6 (>= 2.34)(依赖关系,表示这个包依赖libc6这个C标准库,且版本需要大于等于2.34)

Suggests: minicom(建议安装的软件包,不是必须的,但配合使用会更好)

Homepage: https://ohse.de/uwe/software/lrzsz.html(软件官网地址)

Download-Size: 78.1 kB(下载包的大小)

APT-Manual-Installed: yes(表示这个包是用户手动安装的,而不是作为依赖自动安装的)

APT-Sources: http://mirrors.tencentyun.com/ubuntu noble/universe amd64 Packages(软件包的来源,说明是从腾讯云的Ubuntu镜像站下载的,发行版本是noble,架构是amd64 64位)

Description: Tools for zmodem/xmodem/ymodem file transfer(软件描述:用于zmodem/xmodem/ymodem文件传输的工具)

Lrzsz is a cosmetically modified zmodem/ymodem/xmodem package built from the public-domain version of Chuck Forsberg's rszz package.(详细描述:lrzsz是基于Chuck Forsberg的rszz包的公共领域版本进行了外观修改的zmodem/ymodem/xmodem软件包)

These programs use error correcting protocols ({z,x,y}modem) to send (sz, sx, sb) and receive (rz, rx, rb) files over a dial-in serial port from a variety of programs running under various operating systems.(这些程序使用纠错协议zmodem/xmodem/ymodem来通过拨号串口发送文件(命令为sz、sx、sb)和接收文件(命令为rz、rx、rb),可以与多种操作系统下运行的程序进行通信)

  1. 安装软件
bash 复制代码
sudo apt install -y lrzsz
  1. 删除软件
bash 复制代码
sudo apt remove -y lrzsz

欢迎大家批评指正!!!

相关推荐
崇山峻岭之间5 小时前
Keil5输出hex转换为bin的设置
linux·运维·服务器
Hoxy.R6 小时前
KingbaseES读写分离高可用集群扩容、备库重建与故障切换实战
运维·数据库
谷雪_6586 小时前
Linux 网络命名空间:从内核原理到企业级容器网络架构全景实战
linux·网络·架构
Tian_Hang6 小时前
Eclipse Ditto 的权限策略
java·服务器·前端·网络·ide·ubuntu·eclipse
qq_163135757 小时前
Linux 【03- chgrp命令超详细教程】
linux
考虑考虑7 小时前
nginx配置ssl
运维·后端·nginx
我会尽全力 乐观而坚强8 小时前
MySQL库与表的操作
linux·数据库·mysql
着迷不白8 小时前
Linux 磁盘管理完全指南:分区、文件系统、挂载与 LVM 实战
linux·运维·服务器
山川而川-R8 小时前
LangChain
linux·运维·服务器
QH_ShareHub8 小时前
Linux 根目录结构详解
linux·运维·服务器