学习目标

  • 理解本节涉及的核心主题:Linux 包管理、包管理配置与镜像源、配置和管理软件源、使用自定义镜像源。
  • 掌握重点命令或工具:/var/log
  • 能够结合示例完成常见操作,并理解关键参数、使用场景与结果差异。
  • 能够识别本节相关的常见风险、易错点或排查思路。

学习重点

  • 主题范围:Linux 包管理、包管理配置与镜像源、配置和管理软件源、使用自定义镜像源、总结、Linux 系统日志管理
  • 重点命令:/var/log
  • 学习重点:命令用途、关键参数、典型场景、与相近命令的区别
  • 复习方式:先理解场景,再动手练习,最后对照结果检查

Linux 包管理

包管理配置与镜像源

配置包管理工具的镜像源可以显著提升软件包的下载速度和稳定性,尤其是在地理位置较远的情况下。以下将介绍如何配置和管理软件源,以及使用自定义镜像源和第三方软件源。

配置和管理软件源

软件源(Repository)是存储和分发软件包的服务器。正确配置软件源可以确保包管理工具能够访问最新的软件包和更新。

编辑软件源列表文件

不同的 Linux 发行版使用不同的文件来配置软件源。

  • Debian/Ubuntu 使用 /etc/apt/sources.list/etc/apt/sources.list.d/
    编辑主软件源列表

    sudo nano /etc/apt/sources.list
    

    示例内容:

    deb http://archive.ubuntu.com/ubuntu/ focal main restricted
    deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
    deb http://archive.ubuntu.com/ubuntu/ focal universe
    deb http://archive.ubuntu.com/ubuntu/ focal-updates universe
    deb http://archive.ubuntu.com/ubuntu/ focal multiverse
    deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
    deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
    deb http://security.ubuntu.com/ubuntu focal-security main restricted
    deb http://security.ubuntu.com/ubuntu focal-security universe
    deb http://security.ubuntu.com/ubuntu focal-security multiverse
    
  • CentOS/RHEL 使用 /etc/yum.repos.d/\*.repo
    示例:编辑 CentOS 基础仓库配置

    sudo nano /etc/yum.repos.d/CentOS-Base.repo
    

    示例内容:

    [base]
    name=CentOS-$releasever - Base
    baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    [updates]
    name=CentOS-$releasever - Updates
    baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
  • Arch Linux 使用 /etc/pacman.conf/etc/pacman.d/mirrorlist
    编辑镜像列表

    sudo nano /etc/pacman.d/mirrorlist
    

    示例内容:

    Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch
    Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch
    
添加新软件源

添加新的软件源可以扩展可用的软件包范围,满足特定需求。

  • Debian/Ubuntu
    添加 PPA(Personal Package Archives)

    sudo add-apt-repository ppa:repository-name/ppa
    sudo apt update
    

    示例:添加 graphics-drivers PPA

    sudo add-apt-repository ppa:graphics-drivers/ppa
    sudo apt update
    
  • CentOS/RHEL
    添加 EPEL(Extra Packages for Enterprise Linux)仓库

    sudo yum install epel-release
    

    或手动添加

    sudo nano /etc/yum.repos.d/epel.repo
    

    示例内容:

    [epel]
    name=Extra Packages for Enterprise Linux 7 - $basearch
    baseurl=https://download.fedoraproject.org/pub/epel/7/$basearch
    enabled=1
    gpgcheck=1
    gpgkey=https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
    
  • Arch Linux
    添加 AUR(Arch User Repository)
    使用辅助工具(如 yay)从 AUR 安装软件包:

    yay -S 软件包名称
    
删除或禁用不需要的软件源

移除不再需要的软件源可以提高包管理工具的效率,减少不必要的安全风险。

  • Debian/Ubuntu
    禁用软件源
    编辑 /etc/apt/sources.list/etc/apt/sources.list.d/*.list,在不需要的源前添加 # 注释。
    示例:禁用 universe
    # deb http://archive.ubuntu.com/ubuntu/ focal universe
    
  • CentOS/RHEL
    禁用仓库
    编辑对应的 .repo 文件,设置 enabled=0
    示例:禁用 extras 仓库
    [extras]
    name=CentOS-$releasever - Extras
    baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
    enabled=0
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
  • Arch Linux
    移除或注释镜像源
    编辑 /etc/pacman.d/mirrorlist,在不需要的镜像源前添加 # 注释。
    示例:禁用特定镜像源
    # Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch
    

使用自定义镜像源

配置自定义镜像源,尤其是国内镜像源,可以显著提升软件包下载速度和稳定性。以下介绍如何配置国内镜像源和使用第三方软件源。

配置国内镜像源

国内镜像源(如阿里云、清华大学镜像)通常提供更快的下载速度,适合中国大陆用户。

  • Debian/Ubuntu 系列的配置示例
    使用阿里云镜像源
    1. 备份原始源列表
      sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
      
    2. 编辑源列表
      sudo nano /etc/apt/sources.list
      
    3. 替换为阿里云源
      deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
      
      deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
      
      deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
      
      deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
      
    4. 更新软件包列表
      sudo apt update
      
  • CentOS/RHEL 系列的配置示例
    使用清华大学镜像源
    1. 备份原始仓库配置
      sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
      
    2. 编辑仓库配置
      sudo nano /etc/yum.repos.d/CentOS-Base.repo
      
    3. 替换为清华大学镜像源
      [base]
      name=CentOS-$releasever - Base - TUNA
      baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
      enabled=1
      gpgcheck=1
      gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
      
      [updates]
      name=CentOS-$releasever - Updates - TUNA
      baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
      enabled=1
      gpgcheck=1
      gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
      
      [extras]
      name=CentOS-$releasever - Extras - TUNA
      baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
      enabled=1
      gpgcheck=1
      gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
      
    4. 清理缓存并更新
      sudo yum clean all
      sudo yum makecache
      
  • Arch Linux 的配置示例
    使用清华大学镜像源
    1. 备份原始镜像列表
      sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
      
    2. 编辑镜像列表
      sudo nano /etc/pacman.d/mirrorlist
      
    3. 添加清华大学镜像源
      ## China
      Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
      Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
      
    4. 同步软件包数据库
      sudo pacman -Syy
      
使用第三方软件源

使用第三方软件源可以访问官方仓库中未提供的软件包,扩展系统的功能和应用范围。

  • Debian/Ubuntu 添加 PPA(Personal Package Archives)
    PPA 是 Ubuntu 社区提供的第三方软件源,允许用户从中安装和更新软件包。
    示例:添加 graphics-drivers PPA

    sudo add-apt-repository ppa:graphics-drivers/ppa
    sudo apt update
    

    安装特定软件包

    sudo apt install nvidia-driver-460
    
  • CentOS/RHEL 安装 EPEL(Extra Packages for Enterprise Linux)仓库
    EPEL 提供了许多额外的软件包,扩展了 CentOS 和 RHEL 的功能。
    安装 EPEL 仓库

    sudo yum install epel-release
    

    验证 EPEL 仓库是否启用

    yum repolist
    
  • Arch Linux 使用 AUR(Arch User Repository)
    AUR 是 Arch Linux 社区维护的用户贡献的软件包仓库,提供了大量未在官方仓库中的软件。
    安装 yay(AUR 助手工具)

    sudo pacman -S --needed base-devel
    git clone https://aur.archlinux.org/yay.git
    cd yay
    makepkg -si
    

    使用 yay 安装 AUR 软件包

    yay -S 软件包名称
    

    示例:安装 google-chrome

    yay -S google-chrome
    

总结

Linux 包管理是系统维护和软件部署的重要环节,不同的发行版采用不同的包管理工具和系统。通过熟练掌握 aptyumdnfpacman 以及 RPM 和 DEB 包管理工具,系统管理员可以高效地安装、更新和管理系统软件。此外,合理配置和管理软件源,尤其是使用国内镜像源和第三方软件源,可以显著提升包管理的效率和系统的功能扩展。

以下是基于具体实例的应用总结:

  • Debian/Ubuntu 系列
    • 安装新用户软件包
      sudo apt update
      sudo apt install vim
      
    • 更新系统软件包
      sudo apt update && sudo apt upgrade
      
    • 卸载不需要的软件包
      sudo apt remove vim
      
    • 搜索并安装特定软件包
      apt-cache search python
      sudo apt install python3-pip
      
    • 配置阿里云镜像源
      sudo nano /etc/apt/sources.list
      # 替换为阿里云源后保存并更新
      sudo apt update
      
  • CentOS/RHEL 系列
    • 安装新用户软件包
      sudo yum install wget
      
    • 更新系统软件包
      sudo yum update
      
    • 卸载不需要的软件包
      sudo yum remove wget
      
    • 搜索并安装特定软件包
      yum search docker
      sudo yum install docker
      
    • 添加 EPEL 仓库
      sudo yum install epel-release
      sudo yum update
      
  • CentOS 8+ 系列
    • 使用 dnf 安装软件包
      sudo dnf install htop
      
    • 更新系统软件包
      sudo dnf upgrade
      
    • 卸载不需要的软件包
      sudo dnf remove htop
      
  • Arch Linux 系列
    • 安装新用户软件包
      sudo pacman -S vim
      
    • 更新系统软件包
      sudo pacman -Syu
      
    • 卸载不需要的软件包
      sudo pacman -R vim
      
    • 搜索并安装 AUR 软件包
      yay -S google-chrome
      
  • RPM 与 DEB 包管理
    • 安装 RPM 包
      sudo rpm -ivh nginx-1.18.0-1.el8.x86_64.rpm
      
    • 卸载 RPM 包
      sudo rpm -e nginx
      
    • 查看 DEB 包信息
      dpkg -l | grep google-chrome
      
    • 安装 DEB 包
      sudo dpkg -i google-chrome-stable_current_amd64.deb
      sudo apt-get install -f
      

Linux 系统日志管理

日志文件与日志记录

日志文件记录了系统和应用程序的运行信息、错误信息、用户活动等,是系统管理员了解系统状态和诊断问题的重要依据。

/var/log 目录下的日志文件

/var/log 目录是 Linux 系统中存放各种日志文件的默认位置。以下是一些常见的日志文件及其作用:

  • syslog:系统日志,记录了系统范围内的各种事件,如系统启动信息、服务状态变化、系统错误等。
  • auth.log:认证日志,记录了与系统认证相关的事件,如用户登录、sudo 使用、认证失败等。
  • kern.log:内核日志,记录了内核级别的事件和错误,如硬件驱动问题、内核崩溃等。
  • dmesg:启动时的内核消息,记录了系统启动过程中内核检测到的硬件和驱动信息。
  • boot.log:启动日志,记录了系统启动过程中各个服务的启动情况。
  • daemon.log:后台进程日志,记录了系统后台守护进程(daemon)的运行信息和错误。

常见日志文件介绍

详细介绍几个关键日志文件的作用、内容及查看方法。

syslog
作用与内容

syslog 是系统范围内的日志文件,记录了操作系统和各种服务的运行信息。它包含了系统启动、关机、服务状态变化、系统错误、警告等信息。

查看与分析方法

查看 syslog 文件

sudo cat /var/log/syslog

分页查看

sudo less /var/log/syslog

实时监控

sudo tail -f /var/log/syslog

过滤特定信息

使用 grep 命令过滤包含特定关键词的日志条目。

sudo grep "error" /var/log/syslog

分析工具

使用 awksed 等工具对日志进行更复杂的分析和处理。

sudo awk '/error/ {print $0}' /var/log/syslog
auth.log
作用与内容

auth.log 记录了与系统认证相关的所有事件,包括用户登录、注销、sudo 权限使用、SSH 连接等。它是检测系统安全性和审计用户活动的重要日志文件。

查看与分析方法

查看 auth.log 文件

sudo cat /var/log/auth.log

分页查看

sudo less /var/log/auth.log

实时监控

sudo tail -f /var/log/auth.log

过滤认证失败的尝试

sudo grep "Failed password" /var/log/auth.log

查看 SSH 登录事件

sudo grep "sshd" /var/log/auth.log
kern.log
作用与内容

kern.log 记录了内核级别的日志信息,包括硬件驱动加载、内核错误、系统调用等。它对于诊断内核相关的问题和硬件故障尤为重要。

查看与分析方法

查看 kern.log 文件

sudo cat /var/log/kern.log

分页查看

sudo less /var/log/kern.log

实时监控

sudo tail -f /var/log/kern.log

过滤内核错误

sudo grep "error" /var/log/kern.log
其他重要日志文件

除了上述主要日志文件外,系统中还有其他重要的日志文件:

  • messages:类似于 syslog,在某些发行版(如 CentOS)中,messages 记录了系统范围内的事件和错误。
    查看方法

    sudo cat /var/log/messages
    
  • secure:在某些发行版(如 CentOS)中,secure 记录了与系统安全相关的事件,如认证、sudo 使用等。
    查看方法

    sudo cat /var/log/secure
    
  • 应用程序日志
    许多应用程序会在 /var/log 目录下创建自己的日志文件,如 nginx 的日志位于 /var/log/nginx/apache 的日志位于 /var/log/apache2//var/log/httpd/
    查看 nginx 日志

    sudo cat /var/log/nginx/access.log
    sudo cat /var/log/nginx/error.log
    

    查看 apache 日志

    sudo cat /var/log/apache2/access.log
    sudo cat /var/log/apache2/error.log
    

本节总结

  • 本节主要围绕 Linux 包管理、包管理配置与镜像源、配置和管理软件源、使用自定义镜像源、总结 展开。
  • 需要重点掌握的命令或工具包括:/var/log
  • 学习时应优先抓住「命令解决什么问题、在什么场景下使用、执行后会产生什么结果」。
  • 对涉及权限、覆盖、网络、系统服务、删除或安全配置的操作,建议先在测试环境练习。

复习建议

  • 先用自己的话复述本节每个主题或命令的作用,避免只记参数不懂用途。
  • 按原文示例至少手敲一遍典型命令,并观察输出变化。
  • 对高风险操作先确认路径、权限和目标对象,再执行实际命令。
  • 可优先复习这些高频命令:/var/log