服务器配置教案 Help

2-4 软件安装、换源

(了解)本地软件安装

目前往服务器上插U盘安装软件的情况不多了。从光盘安装软件的时代已经过去了,U盘直接插物理服务器的时代也过去了,主要是介绍和理解文件格式,下载.tar.gz文件解压安装倒仍然常用。

基本知识

CentOS上的可执行二进制包后缀为*.rpm*(redhat package manager), Ubuntu上的为*.deb*,Windows .exe (execution),MacOS .app (application),安卓*.apk*, 每家厂商都给自家产品一个命名,计算机圈就是这样。
准备工作,略,因为大家应该没带U盘,在U盘中准备的软件包也是在线下载的,所以这个步骤就不做了。装有软件包的U盘插入电脑,VmwareWorkstation会弹窗提示U盘接入宿主机还是虚拟机,选择虚拟机。

挂载设备

(U盘场景不好模拟,我们以系统自带的cdrom虚拟光驱为例)
查询设备: ls /dev可以看到很多设备,包括cdromcpusda (第一块硬盘)、 sdb (第二块硬盘或U盘)、 tty (伪终端)等,体现了linux系统中的哲学一切皆文件,包括硬件cpu、内存等。
挂载: mount挂在命令。 mount <设备> <逻辑挂在点> ,在Windows上插上U盘就会自动分配一个盘符例如F: ,而这里是手动的更麻烦但更灵活。
实际操作一下:
mount /dev/cdrom /mnt/cdrom ,然后ls /mnt/cdrom 。发现一些东西,这是vmware tools的镜像。
如果挂载U盘,先lsblk (lsblock)可以看到块存储设备,找到刚接入的U盘记下设备名,然后挂载,假设命令为mount /dev/sdc /home/zhangsan ,可以选择方便的逻辑挂载点。
查询挂载结果: df -h

本地安装rmp软件安装包

(本地安装不好模拟,我们从网上下载一个安装包,以假设插入U盘并把安装包拷贝至服务器)
准备:访问rpm下载网站下载一个rpm包,这里采用wget命令在线获取。 (linux的软件源来自官方,跟windows各种第三方软件下载站的生态不能比,只有apache、docker这些生产力工具的官网会给出.rpm .tar.gz之类的安装包,这里不做演示。) 下载软件安装包: wget https://example.com/file.rpm
安装: rpm -i file.rpm

本地执行shell脚本

一些软件用编程脚本执行安装过程。
执行脚本直接写脚本所在路径./example.sh

本地解压缩.tar.gz文件

.tar是一种打包格式,在Linux上流行,类似.zip .iso。 .gz是一种优秀的压缩算法,在Linux上流行(Win11后默认支持新增.tar和.7z)

在线软件安装

与Windows在软件商店中下载软件不同,Linux采用包管理工具。
包管理工具yum (Yellow dog Updater, Modified),负责软件包的搜索、安装、安装依赖、删除等功能。(了解)Ubuntu上为apt ,MacOS上需要额外安装homebrew,Windows上需要额外安装chocolate(非常小众)。
Linux包管理工具,由官方维护软件列表,好比官方软件商店,优点更安全。

更新

yum update 更新软件源列表至最新,否则装软件时提示找不到,经常用于安装新程序之前。选yes时更新系统中已安装的软件包到最新版本,但不会安装新的软件包或删除已安装的软件包。 yum repolist 看到源又分为系统程序、第三方app程序等几大类。

安装

yum install <package_name>
新版本系统中使用dnf ,目前尚不不稳定,未来会取代yum。

查看源

ls /etc/yum.repos.d/ 看到每个软件大类对应一个配置文件,其中重要的是Base和App两大类。 cat /etc/yum.repos.d/CentOS-Linux-BaseOS.repo

(⭐️重要)换源

症状: yum search samba ,超时后报错,报错信息中有mirrors.centos.org 无法解析。 原因: 由于centos8系统版已过维护期官方不在维护。其它需要换源的原因有,国外服务器到国内下载速度慢等。

镜像源:

  • CentOS官网上的第三方镜像列表https://vault.centos.org (速度还是有点慢)

  • 阿里云https://mirrors.aliyun.com/ (学校人多访问可能触发风控进黑名单403)

  • 腾讯云https://mirrors.cloud.tencent.com/ (目前的最优选,用的人比阿里云少的多,又是大厂,推荐)

  • 清华大学镜像(centos个别文件夹内容为空) 观察路径https://vault.centos.org/8-stream/BaseOS/x86_64/os/Packages/ 可见软件列表,安装的软件就是从这里来的。


    选择源镜像的时候注意操作系统和版本保持一致,才能找到正确的源。


    镜像源地址实质是http请求的网站,先放入浏览器确认能访问到,再换源。

(可选)备份:
(以免操作错误,如果操作错误可以mv命令把bak备份文件重命名回去)
cp /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Linux-BaseOS.repo.bak cp /etc/yum.repos.d/CentOS-Linux-AppStream.repo /etc/yum.repos.d/CentOS-Linux-AppStream.repo.repo.bak

方法一

nano编辑这两个文件,注释掉mirrorlist那行,取消注释baseurl那行并替换网址为有效的镜像源地址。优点是灵活可控,知道修改了哪里。

方法二

wget命令用于下载url对应的文件,-O参数表示指定下载路径,下载镜像平台提供的repo文件覆盖掉之前旧的。相比方法三这种方法更容易理解,但修改多个repo文件需要重复操作。
1.

wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo https://mirrors.aliyun.com/repo/centos-stream/8/CentOS-Stream-BaseOS.repo
wget -O /etc/yum.repos.d/CentOS-Linux-AppStream.repo https://mirrors.aliyun.com/repo/centos-stream/8/CentOS-Stream-AppStream.repo

(推荐)方法三

sed命令是灵活强大的流式文本编辑工具,比vim/nano更加不直观但在这种场景下更方便,这里的语法为全文查找替换和文件夹下通配符匹配所有repo文件。 源网址由http://mirror.centos.org替换为第三方镜像地址https://vault.centos.orghttps://mirrors.aliyun.com/。 相比方法二的优点是一次性替换12个配置文件,缺点是如果替换错误不好还原。

sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
  1. 地址可以替换为想要的镜像源地址

sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.cloud.tencent.com|g" /etc/yum.repos.d/CentOS-*

换源后测试

  1. (非必需)替换完成后yum clean清除之前的缓存。

  2. (必需) yum update 。命令本意是检查已安装软件的新版本, 但重要在更新本地软件列表为最新 ,因此不更新的话装软件找不到或版本落后。


    执行命令更新后,返回信息"413Mb update?(Y/N)",问是否更新已安装软件到最新版,不更新

  3. 测试, yum search samba ,看到返回许多samba相关的软件包, yum install samba能进行安装,为成功。

作业

实验一:命令行跑火车字符画

  1. 换源使yum能正常使用。

  2. 安装sl软件包,这是一个让用户输入ls命令出错时在命令行显示字符画火车的小软件。


    yum install -y epel-release ,epel-release为yum提供企业软件外的额外软件列表。

  3. 安装sl软件包: yum install sl。 调用命令行跑火车命令: sl 。命令行能看到跑火车🚞。

实验二:命令行俄罗斯方块

  1. 项目介绍: (github搜索俄罗斯方块的英文tetris+cli关键字时搜到,go语言写的,go语言是编译型语言,项目的releases页面已经有根据不同操作系统平台编译好的可执行程序)
    tetrigo项目github主页
    找到项目右侧tetrigo/releases页面。
    找到最近版本中的linux-amd64.tar.gz下载文件。

    2-4复制下载文件链接.png
  2. 下载程序:

    • 方法一 点击文件下载到宿主机,再拖动到centos桌面版虚拟机中(vmwaretool会负责宿主机与虚拟机之间的文件拷贝)。

    • 方法二 (推荐) 在tetrigo_0.1.6-rc3_linux_amd64.tar.gz文件上鼠标右键然后选择复制文件链接 ,在虚拟机终端里使用粘贴快捷键shift+ins (复制快捷键是shift+del,linux的命令行的快捷键毕竟不同于windows), 网址粘贴后移动光标到行首(快捷键ctrl+A)添加wget补全下载命令,将会把可执行文件下载至当前文件夹。

    wget https://github.com/Broderick-Westrope/tetrigo/releases/download/v0.1.6-rc3/tetrigo_0.1.6-rc3_linux_amd64.tar.gz
    • 方法三 在linux桌面系统中打开火狐浏览器访问项目地址并下载文件,会下载至用户家目录下。

  3. 解压缩文件tetrigo_0.1.6-rc3_linux_amd64.tar.gz ,重命名解压缩后的文件夹或文件为一个更短的名字tetrigo
    tar是封装格式类似zip、iso,gz是gzip压缩软件类似rar,所以.tar.gz代表先打包再压缩,对应tar和gzip两个命令。
    这里使用tar命令的二合一,参数z 使用gzip压缩、x extract检出文件解压缩、c create创建新的归档文件、v verbose冗余信息显示下载进度、f file指定解压后的文件名,所以创建压缩文件用-zcvf参数,解压缩用-zxvf。

    tar -zxvf tetrigo_0.1.6-rc3_linux_amd64.tar.gz tetrigo
  4. 运行
    ls -l看到解压后并重命名为tetrigo的是一个可执行二进制文件,从文件颜色绿色和文件明细第一个字符-表示单文件这两年来判断。
    执行可执行程序,进入游戏界面。注意这里的* ./tetrigo 是执行命令而不是命令后的参数路径,因此不能简写为tetrigo*,否则会报错 tetrigo不是可执行的命令或函数

    ./tetrigo
    2-4解压缩重命名运行程序.png
    2-4俄罗斯方块命令行版.gif

参考

linux命令行小游戏
best-linux-terminal-console-games
linux命令行跑火车
.tar .gz .tar.gz
wget命令一些用法

Last modified: 25 十一月 2024