前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

从0开始学习KVM-KVM学习笔记(2)- CentOS 配置网络yum源

qiguaw 2025-01-21 20:48:10 资源文章 169 ℃ 0 评论

一切皆文件

在Linux系统中,一切皆文件。

所有的设备和文件都是以文件的形式存在的,每个文件都有一个唯一的文件名和路径,除了常规的文件外,Linux还将一些硬件设备和虚拟设备也看做文件。例如,硬盘、U盘、CD-ROM等存储设备都被表示为文件。键盘、鼠标、显示器等输入输出设备也被表示为文件。此外,Linux还将一些特殊的文件看做设备,例如/dev/null、/dev/zero、/dev/random等。

“一切皆文件”是一个核心的设计哲学,意味着系统中的所有资源都被抽象为文件。这个概念使得Linux系统在处理各种资源时具有一致性和简洁性。以下是一些常见的资源类型及其对应的文件类型:

  • 普通文件:这是最常见的文件类型,包括文本文件、二进制文件、图片、音频、视频等。普通文件存储数据,可以被读取和写入。
  • 目录文件:目录文件用于组织和管理其他文件和目录。每个目录文件包含一个文件列表,指明了目录中的文件和子目录。
  • 设备文件-字符设备文件:字符设备文件以字符为单位进行数据传输,例如键盘、鼠标等。它们通常以 /dev/ 开头,如 /dev/tty(终端设备)
  • 设备文件-块设备文件:块设备文件以块为单位进行数据传输,例如硬盘、U盘等。它们也通常以 /dev/ 开头,如 /dev/sda(硬盘设备)
  • 管道文件:管道文件用于进程间通信,允许一个进程将数据输出到管道中,另一个进程从管道中读取数据。管道文件分为命名管道和匿名管道。
  • 套接字文件:套接字文件用于网络通信,允许进程之间通过网络进行数据交换。套接字文件可以是本地的(如UNIX套接字),也可以是远程的(如TCP/IP套接字)。
  • 符号链接文件:符号链接文件是一个指向另一个文件或目录的指针。它类似于Windows系统中的快捷方式,允许用户通过符号链接访问目标文件或目录。

通过将所有资源都视为文件,Linux系统提供了一致的接口和操作方式,使得系统的设计和编程更加简单和高效。

还有一点需要注意,!!在Linux中字母是区分大小写的,比如,A1.txt和a1.txt是两个不同的文件,再如显示磁盘空间使用情况的df命令,df -hdf -H,同一个命令,同一个参数,只是大小写不同,但得到的结果是不同的,前者(-h)是以1024来计算磁盘容量的,后者(-H)是以1000来计算磁盘容量)

[root@localhost ~]# touch A1.txt a1.txt
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root    0 Jan  8 10:14 a1.txt
-rw-r--r--. 1 root root    0 Jan  8 10:14 A1.txt
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                  24G     0   24G   0% /dev
tmpfs                     24G     0   24G   0% /dev/shm
tmpfs                     24G  9.1M   24G   1% /run
tmpfs                     24G     0   24G   0% /sys/fs/cgroup
/dev/mapper/centos-root   50G  2.3G   48G   5% /
/dev/sda1               1014M  194M  821M  20% /boot
/dev/mapper/centos-home  151G   33M  151G   1% /home
tmpfs                    4.7G     0  4.7G   0% /run/user/0
tmpfs                    4.7G     0  4.7G   0% /run/user/1000
[root@localhost ~]# df -H
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                  26G     0   26G   0% /dev
tmpfs                     26G     0   26G   0% /dev/shm
tmpfs                     26G  9.6M   26G   1% /run
tmpfs                     26G     0   26G   0% /sys/fs/cgroup
/dev/mapper/centos-root   54G  2.5G   52G   5% /
/dev/sda1                1.1G  203M  861M  20% /boot
/dev/mapper/centos-home  162G   34M  162G   1% /home
tmpfs                    5.1G     0  5.1G   0% /run/user/0
tmpfs                    5.1G     0  5.1G   0% /run/user/1000

Linux目录结构

Linux的目录结构是一个树型结构,Linux 没有盘符 这个概念,只有一个根目录/, 所有文件都在根目录/下面。

目录结图

常见目录及作用

Linux的文件系统目录结构是层次化的,类似于树形结构,每个目录下可以包含文件和其他目录。以下是一些常见的顶级目录及其用途:

  • / (根目录):整个文件系统的最顶层目录,所有的其他目录和文件都位于其下.
  • /bin:存放二进制可执行文件,通常是一些基本的用户命令和程序.
  • /sbin:存放系统二进制可执行文件,通常是一些系统管理程序.
  • /etc:存放系统配置文件,如网络配置、服务配置、用户密码等.
  • /dev:包含设备文件,如硬盘、光驱、键盘等设备的接口.
  • /proc:虚拟文件系统,提供系统运行时的信息,如进程信息、系统内存等.
  • /var:存放经常变化的文件,如日志文件、邮件、缓存等.
  • /tmp:临时文件目录,用于存放临时文件,通常在系统重启时被清空.
  • /usr:用户相关的应用程序和文件,如用户程序、文档、库文件等.
  • /home:用户的主目录,每个用户都有一个以用户名命名的目录.
  • /root:root用户的主目录,用于存放root用户的个人文件.
  • /opt:用于安装附加的应用程序包.
  • /srv:用于存放服务数据,如Web服务器的数据.
  • /boot:包含启动Linux时需要的文件,如内核文件、启动加载器等.
  • /lib:存放共享库文件,即程序运行时需要的库文件.
  • /media:用于挂载可移动媒体设备,如U盘、光盘等.
  • /mnt:用于临时挂载文件系统.
  • /lib64:存放64位共享库文件.
  • /lib32:存放32位共享库文件.
  • /run:用于存放系统运行时的临时文件,替代了传统的/tmp和/var/run.
  • /run/user:每个用户的运行时文件,替代了传统的/var/run/user.

这些目录和文件的组织方式使得Linux系统具有良好的组织性和可管理性,方便用户和系统管理员进行操作和维护。

需记住的目录

/home:用户的家目录

普通用户:lanson,普通用户的家 => /home,如lanson家目录 => /home/lanson文件夹

超级管理员:root,超级管理员的家 => /root

/etc:系统配置文件目录,与操作系统及软件相关,比如系统配置、网卡配置等

/tmp:临时文件目录,类似Windows中的垃圾回收站。

/usr:Linux系统中的程序目录,安装软件、程序默认都会自动安装到此,类似Windows中的Program files文件夹


CentOS安装好后,需要进行一些配置,安装常用的软件,在登录界面中输入用户名(root)和密码登录系统。

CentOS Linux 7(Core)
Kernel 3.10.0-1160.e17.x86-64 on an x86_64

localhost login: _

配置网络

查看网卡信息

安装CentOS时, 选择的是Minimal Install 最小化安装,并未配置网络,先配置好网络,才能安装软件。以root身份登录CentOS,输入以下ip link命令查看网卡信息:

[root@localhost /]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether a0:36:9f:0a:1f:d4 brd ff:ff:ff:ff:ff:ff
3: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:25:90:6b:b9:3a brd ff:ff:ff:ff:ff:ff
4: enp1s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether a0:36:9f:0a:1f:d5 brd ff:ff:ff:ff:ff:ff
5: enp1s0f2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether a0:36:9f:0a:1f:d6 brd ff:ff:ff:ff:ff:ff
6: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:25:90:6b:b9:3b brd ff:ff:ff:ff:ff:ff
7: enp1s0f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether a0:36:9f:0a:1f:d7 brd ff:ff:ff:ff:ff:ff

或者输入ip add查看网卡络信息

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether a0:36:9f:0a:1f:d4 brd ff:ff:ff:ff:ff:ff
3: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:25:90:6b:b9:3a brd ff:ff:ff:ff:ff:ff
4: enp1s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether a0:36:9f:0a:1f:d5 brd ff:ff:ff:ff:ff:ff
5: enp1s0f2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether a0:36:9f:0a:1f:d6 brd ff:ff:ff:ff:ff:ff
6: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:25:90:6b:b9:3b brd ff:ff:ff:ff:ff:ff
7: enp1s0f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether a0:36:9f:0a:1f:d7 brd ff:ff:ff:ff:ff:ff

我的电脑上有6块网卡,lo是环回接口(这个lo网口暂时不用理会,后面大概了解下就好),这里选用enp1s0f0网卡来配置联网。

enp1s0f0含义如下:

  • en:表示这是一个以太网(Ethernet)接口
  • p1s0f0:表示该网卡的物理位置和功能
    • p1:表示PCI总线的编号为1
    • s0:表示PCI插槽的编号为0
    • f0:表示PCI设备的功能编号为0

配置网络信息

网卡配置文件位置

网卡配置文件在/etc/sysconfig/network-scripts目录下,由ifcfg+网卡名称组成(如, if cfg-enp6s0),这是一个文本文件,可以直接打开编辑。在Linux中,绝大多数(全部)的配置文件都是文本文件,用vi/vim打开编缉。

enp1s0f0网卡对应的网络配置文件为/etc/sysconfig/network-scripts/ifcfg-enp1s0f0,修改该配置文件。

[root@localhost ~]# cd /etc/sysconfig/network-scripts   # 进入网络配置文件目录
[root@localhost network-scripts]# cp ifcfg-enp1s0f0 ifcfg-enp1s0f0.bak    # 备份enp1s0f0网卡配置文件
[root@localhost network-scripts]# vi ifcfg-enp1s0f0   # 编辑enp1s0f0网卡配置文件

如下所示,修改网络信息:

# vi ifcfg-enp1s0f0

# 网卡配置详解:
TYPE=Ethernet   # 网络接口类型,以太网
PROXY_METHOD=none   # 代理方式,没有使用代理
BROWSER_ONLY=no   # 表示该网络接口不仅用于浏览器,还可以用于其他网络服务。如果设置为 yes,则表示该网络接口仅用于浏览器,不用于其他网络服
BOOTPROTO=static    # 启用的协议,static静态IP,DHCP动态IP,none,不指定协议
DEFROUTE=yes    # 默认路由,yes/no
IPV4_FAILURE_FATAL=no   # 是否开启IPv4致命错误检测,否,不开启。如果IPv4配置失败,网络接口仍然可以启动。这意味着即使IPv4地址配置不成功,网络接口也会被激活,但可能无法进行IPv4通信
IPV6INIT=yes    # 启用IPv6初始化
IPV6_AUTOCONF=yes   # 启用IPv6自动配置
IPV6_DEFROUTE=yes   # 使用IPv6默认路由
IPV6_FAILURE_FATAL=no   # 表示如果IPv6配置失败,网络接口仍然可以启动。这意味着即使IPv4地址配置不成功,网络接口也会被激活,但可能无法进行IPv6通信
IPV6_ADDR_GEN_MODE=stable-privacy   #  IPv6地址生成模式,稳定隐私模式
NAME=enp1s0f0   # 网络接口的名称
UUID=8be9690e-2392-456e-9b86-88a5ebb49819   #  网络接口的通用唯一标识符(UUID)
DEVICE=enp1s0f0   # 设备名称,与网络接口名称相同
ONBOOT=yes    # 系统启动时激活该网络接口
IPADDR=10.91.19.38    # IP地址
NETMASK=255.255.255.0   # 子网掩码或是PREFIX=24
GATEWAY=10.91.19.254    # 默认网关
DNS1=114.114.114.114    # 首选DNS
DNS2=8.8.8.8    # 备用DNS

修改完成后输入:wq保存退出,完成网络配置。


附:关于vi/vim的使用

Vim是一个功能强大的文本编辑器,广泛用于编程和文本编辑。它有多种模式,主要包括普通模式、插入模式和命令行模式。以下是一些基本的Vim使用方法:

启动Vim

  • 打开终端,输入 vim 命令,然后按回车键,即可启动Vim.
  • 如果要打开一个文件进行编辑,可以在命令后面加上文件名,如 vim filename.

基本模式

  • 普通模式:启动Vim后,默认进入普通模式。在这个模式下,可以使用各种命令来移动光标、删除文本、复制粘贴等。
  • 插入模式:在普通模式下,按 i 键进入插入模式。在这个模式下,可以输入和编辑文本。按 Esc 键可以退出插入模式,回到普通模式。
  • 命令行模式:在普通模式下,按 : 键进入命令行模式。在这个模式下,可以输入各种命令来执行操作,如保存文件、退出Vim等.

基本命令

  • 移动光标:
    • h:向左移动光标
    • j:向下移动光标
    • k:向上移动光标
    • l:向右移动光标
    • 使用上下左右方向键也可移动光标
    • gg:移动到文件的第一行
    • G:移动到文件的最后一行
    • :n:移动到第n行,n是行号
    • 0:移动到当前行的行首
    • $:移动到当前行的行尾
  • 删除文本:
    • x:删除光标所在位置的字符
    • dd:删除当前行
    • d$:删除从光标位置到行尾的文本
    • d0:删除从光标位置到行首的文本
  • 复制粘贴:
    • yy:复制当前行
    • p:粘贴到光标所在位置的下方
    • P:粘贴到光标所在位置的上方
  • 撤销和重做:
    • u:撤销
    • Ctrl + r:重做
  • 查找和替换:
    • /pattern:查找pattern,按 n 查找下一个匹配项,按 N 查找上一个匹配
    • :%s/old/new/g:将文件中所有的old替换为new,g表示全局替换
  • 保存和退出:
    • :w:保存文件
    • :wq 或 :x:保存文件并退出Vim
    • :q:退出Vim,如果文件有修改未保存,会提示错误
    • :q!:强制退出Vim,不保存修改

高级功能

  • 多窗口编辑:
    • :split 或 :sp:水平分割窗口
    • :vsplit 或 :vsp:垂直分割窗口
    • Ctrl + w + 方向键:在分割的窗口之间切换
  • 宏录制:
    • q + 字母:开始录制宏,字母表示宏的名称
    • q:停止录制宏
    • @ + 字母:执行录制的宏
  • 插件管理:
    • Vim支持各种插件来扩展其功能,可以通过插件管理器如Vundle、Pathogen等来安装和管理插件

Vim是一个非常强大的编辑器,掌握其基本命令和功能可以帮助你更高效地进行文本编辑和编程工作.


重启网络

网卡信息配置完成后要重新启动网络,使用IP生效。

[root@localhost ~]# systemctl restart network		# 重启网络服务
[root@localhost ~]# ip add		# 查看IP地址
[root@localhost ~]# ping www.baidu.com		# ping 测试网络是否已连通
PING www.a.shifen.com (157.148.69.80) 56(84) bytes of data.
64 bytes from 157.148.69.80 (157.148.69.80): icmp_seq=1 ttl=52 time=35.7 ms
64 bytes from 157.148.69.80 (157.148.69.80): icmp_seq=2 ttl=52 time=48.5 ms
64 bytes from 157.148.69.80 (157.148.69.80): icmp_seq=3 ttl=52 time=35.9 ms

# CentOS中ping会一直进行,不结束,按Ctrl+C中断/结束ping命令

完成网络配置

通过以上操作并测试,CentOS完成了网络配置,已经能够联网,之前有看到过lo接口,大概了解下。


附:什么是lo环回接口

在Linux系统中,lo接口是一个虚拟的网络接口,也称为本地回环接口(Loopback Interface)。它用于在同一台机器上的网络应用程序之间进行通信。

lo接口的主要特点和用途:

定义

  • 虚拟接口:lo接口不对应任何物理硬件设备,而是通过软件实现的。
  • IP地址:其IP地址通常是127.0.0.1,这是一个特殊的IP地址,用于指向本地主机本身。

用途

  • 本地通信测试:用于在本地主机上测试网络服务和应用程序。由于数据通过lo接口传输时不会真正发送到网络上,因此可以在没有网络连接的情况下进行网络服务的测试。
  • 诊断工具:当网络出现问题时,可以使用lo接口来帮助诊断问题。如果一个应用程序无法连接到网络,但可以ping通127.0.0.1,那么问题可能出在网络配置或外部网络连接上。
  • 安全隔离:在一些安全敏感的应用中,lo接口可以用来隔离本地服务,使其只能被本地主机访问,从而提高安全性。
  • 程序间通信:很多需要网络的程序(如一些媒体播放器)需要这个接口来进行通信。

特点

  • 无需物理连接:lo接口是一个虚拟接口,不需要任何物理网络连接即可工作。
  • 低延迟:由于数据在本地主机内部传输,不涉及实际的网络传输,因此延迟非常低。
  • 独立性:lo接口的工作不依赖于其他物理网络接口的状态,即使其他接口关闭或出现故障,lo接口仍然可以正常工作。

CentOS添加用户

在CentOS或其他Linux系统中,除了root用户外,通常还会添加普通用户,原因主要有以下几点:

安全性

  • 权限隔离:root用户拥有系统的最高权限,可以访问和修改系统中的任何文件,执行任何命令。如果以root用户身份登录系统并进行日常操作,一旦发生误操作或被恶意软件利用,可能会对系统造成严重破坏。而普通用户权限有限,只能访问和修改自己的家目录和被授权的特定文件,执行的操作也受到限制,从而降低了系统被误操作或恶意攻击的风险。
  • 最小权限原则:遵循最小权限原则,用户只拥有完成其工作所必需的权限。普通用户通常只具备完成日常任务所需的权限,如编辑个人文件、运行应用程序等,而不需要系统级别的权限。这样可以减少潜在的安全漏洞和攻击面。

管理方便

  • 多用户协作:在多用户环境中,不同的用户可能负责不同的任务或项目。通过为每个用户创建独立的账户,可以方便地分配任务、跟踪工作进度和管理权限。例如,在一个开发团队中,每个开发人员都有自己的用户账户,可以独立地进行代码开发、调试和测试,而不会相互干扰。
  • 资源管理:系统管理员可以通过设置资源限制(如磁盘配额、内存使用限制等)来管理普通用户的资源使用情况。这有助于合理分配系统资源,避免个别用户过度占用资源,影响其他用户和系统的正常运行。

审计和追踪

  • 日志记录:系统会记录每个用户的行为日志,包括登录时间、执行的命令、访问的文件等。通过分析这些日志,可以追踪用户的行为,发现潜在的安全问题或违规操作。如果所有操作都以root用户身份进行,日志中将无法区分是哪个用户执行的操作,给审计和追踪带来困难。
  • 责任明确:当出现问题或错误时,可以通过用户账户来明确责任归属。例如,如果某个文件被意外删除或修改,可以通过查看操作该文件的用户账户来确定是哪个用户所为,从而采取相应的措施进行处理。

兼容性和便利性

  • 应用程序需求:有些应用程序或服务需要以特定的用户身份运行,以确保其正常工作和安全性。例如,Web服务器通常以一个非root用户身份运行,以降低Web服务被攻击时对系统的影响。通过创建相应的普通用户账户,可以满足这些应用程序的需求。
  • 用户习惯:对于普通用户来说,使用自己的用户账户可以更方便地管理个人文件、设置和应用程序。用户可以自定义桌面环境、安装个人应用程序等,而不会影响系统的整体配置和其他用户的工作。
  • 如上所述,添加普通用户是出于安全、管理、审计等多方面的考虑,有助于构建一个稳定、安全和高效的Linux系统环境。

创建sudo用户

sudo命令旨在允许用户以其它用户身份运行命令,默认情况下为root用户。在CentOS上wheel组中的用户默认被授予sudo访问权限。如果要为用户添加sudo权限,需添加用户到wheel组。

当前登录到系统的用户必须具有sudo权限或者以root登录,当前登录的用户不具有sudo权限,请退出以root登录。否则你遇到权限拒绝的错误。

之前安装系统过程里,没有添加用户,用的一直是root登录,现在我需要添加一个普通用户(xiaoqiang),并使该用户具有sudo 权限。

useradd xiaoqiang		# 添加用户:xiaoqiang
passwd xiaoqiang		# 为该用户设置密码
Changing password for user xiaoqiang.
New password: 						# 输入密码
Retype new password: 			# 再次输入密码
passwd: all authentication tokens updated successfully.		# 密码创建成功
usermod -aG wheel xiaoqiang		# 将用户xiaoqiang加入wheel组,使其具有sudo权限
# usermod命令的-aG选项,添加用户到wheel组中,-a表示追加用户到指定组,-G选项表示不要将用户从其它组中移除。
# 不建议直接修改用户主要组,这可能导致某些权限问题,最好的方式将用户追加到wheel组中。
exit		# 退出root用户,以xiaoqiang户登录系统

退出root用户,以xiaoqiang户登录CentOS系统,测试xiaoqiang用户是否具有sudo权限(root权限)

xiaoqiang@localhost ~]$ sudo ls /root

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for xiaoqiang: 				# 输入密码
a1.txt	A1.txt	anaconda-ks.cfg

注意!!命令提示符的变化,在root用户/权限下,CentOS的命令提示是“#”号,在其它用户/普通用户下,CentOS的命令提示是“$”号,此提示符的变化告诉我们,如果看到CL I提示符为#,表示当前用户具有root权限,如果看到CL I提示符为$,表示当前用户为普通用户,不具有root权限。


附:su 切换用户

使用su命令可以快速切换用户,而不用退出当前用户。如:

[xiaoqiang@localhost ~]$ su 			# su不带参数/用户名,直接切换到root
Password: 				# 输入root密码
[root@localhost xiaoqiang]# 		# 已切换到root,注意CLI提示符
[root@localhost xiaoqiang]# su xiaoqiang		# root切换到普通用户,不用输入密码
[xiaoqiang@localhost ~]$ 		# 普通用户CLI提示发生变化,由#成$

su(switch user)是一个在Linux系统中用于切换用户账户的命令。它允许当前用户切换到另一个用户账户,通常用于管理员以普通用户身份执行任务,或者普通用户切换到其他用户账户进行操作。合理使用 su 命令,用户可以在不同的用户账户之间灵活切换,满足不同的操作需求,同时保持系统的安全性和稳定性。


CentOS 源

在CentOS系统中,“源”通常指的是软件包的仓库(repository),这些仓库包含了可供安装和更新的软件包。CentOS使用Yum包管理器(在CentOS 8中,Yum已被Dnf取代,但基本概念相同)来管理软件包的安装、更新和卸载,而这些操作都依赖于配置好的软件源。

软件源的作用

  • 提供软件包:软件源包含了各种软件包,用户可以通过包管理器从这些源中安装软件。
  • 更新软件包:软件源会定期更新软件包,以修复漏洞、提供新功能和改进性能。用户可以从源中获取软件的最新版本。
  • 依赖管理:当安装一个软件包时,包管理器会自动从源中查找并安装所需的依赖包,简化了软件安装过程。

软件源的类型

  • 官方源:由CentOS项目官方提供的软件源,包含经过测试和验证的软件包,确保系统的稳定性和安全性。
  • 第三方源:由第三方组织或个人提供的软件源,可能包含官方源中没有的软件包或更新版本的软件包。使用第三方源时需要注意其可靠性和安全性。

配置软件源

软件源的配置文件位于 /etc/yum.repos.d/ 目录下,文件扩展名为 .repo。每个 .repo 文件定义了一个或多个软件源。以下是一个简单的 .repo 文件示例:

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

在示例中:

  • [base] 是软件源的标识符。
  • name 是软件源的名称。
  • mirrorlist 或 baseurl 指定了软件源的地址。mirrorlist 会从多个镜像中选择一个,而 baseurl 指定了一个固定的地址。
  • gpgcheck 用于启用或禁用GPG签名检查,确保软件包的完整性和来源可靠性。
  • gpgkey 指定了用于验证软件包签名的GPG密钥文件路径.

管理软件源

  • 查看可用源
  • yum repolist
  • 启用或禁用源:在 .repo 文件中,可以通过设置 enabled=0enabled=1 来启用或禁用某个软件源。
  • 添加第三方源:将第三方源的 .repo 文件复制到 /etc/yum.repos.d/ 目录下即可添加该源。
  • 清理缓存:在修改软件源配置后,可以使用以下命令清理缓存,使更改生效:
  • yum clean all

通过合理配置和管理软件源,用户可以方便地安装和更新CentOS系统中的软件包,确保系统的稳定性和安全性。

配置CentOS阿里云镜像源

切换国阿里云国内源的步骤

备份源

sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

更换源

sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

或者

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

清理源

yum clean all # 清理所有类型的缓存,包括元数据、头文件和软件包文件等。
Loaded plugins: fastestmirror
Cleaning repos: base extras updates

# 在修改软件源配置文件(如添加或修改 .repo 文件)后,
# 执行 yum clean all 可以确保Yum使用最新的源信息,避免因缓存导致的问题

运行 yum makecache 生成缓存

sudo yum makecache # 生成缓存
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00 
extras | 2.9 kB 00:00:00 
updates | 2.9 kB 00:00:00 
(1/6): extras/7/x86_64/other_db | 154 kB 00:00:00 
(2/6): extras/7/x86_64/filelists_db | 305 kB 00:00:00 
(3/6): base/7/x86_64/other_db | 2.6 MB 00:00:01 
(4/6): updates/7/x86_64/other_db | 1.6 MB 00:00:01 
(5/6): base/7/x86_64/filelists_db | 7.2 MB 00:00:01 
(6/6): updates/7/x86_64/filelists_db | 15 MB 00:00:02 
Metadata Cache Created

查看源

sudo yum repolist # 查看源
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 526
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 6,173
repolist: 16,771

出现 'Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 信息,不影响使用。修改相关配置: eg:

sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo


为什么要使用国内源

官方源不香吗?为什么要切换为国内源。

一句话,因为国内源在国内,官方源在国外。很多时候你是连接不上官方源的,即便是能连接上官方源,那下载速度简直是要亲命了。切换到国内源,可以带来更快的下载速度、更高的网络稳定性、更好的本地化支持和更高的安全性,从而提升整体的使用体验。




yum 更新系统

配置完源后就可更新CentOS了,类似于Windows的打补丁。yum update 的作用是通过更新系统中的软件包,修复漏洞、获取新功能、处理依赖关系、提高系统稳定性和简化管理,从而为用户提供一个安全、稳定、高效的使用环境。定期执行 yum update 是维护Linux系统健康的重要步骤。

使用yum update更新系统

sudo yum update -y			# 更新系统及软件包
[sudo] password for xiaoqiang: 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
No packages marked for update		# 因为我已经更新过了,大概300多个补丁/软件(包),这里显示没有需要更新的软件包

使用yum upgrade更新系统


sudo yum upgrade -y		# 更新系统及软件包
  Loaded plugins: fastestmirror
  Loading mirror speeds from cached hostfile
   * base: mirrors.aliyun.com
   * extras: mirrors.aliyun.com
   * updates: mirrors.aliyun.com
  No packages marked for update		# 因为我已经更新过了,大概300多个补丁/软件(包),这里显示没有需要更新的软件包
  

yum update和yum upgrade的区别

它们都对软件进行升级,也**都对内核进行升级(重启进入新内核,uname -r查看)。

唯一的区别是:

  • yum update不删除旧包
  • yum upgrade删除旧包

在生产环境中最好使用yum update更新系统,防止因旧软件包依赖而出现问题。




Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表