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
可以看到很多设备,包括cdrom、 cpu、 sda (第一块硬盘)、 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.
(推荐)方法三
sed
命令是灵活强大的流式文本编辑工具,比vim/nano更加不直观但在这种场景下更方便,这里的语法为全文查找替换和文件夹下通配符匹配所有repo文件。 源网址由http://mirror.centos.org替换为第三方镜像地址https://vault.centos.org或https://mirrors.aliyun.com/。 相比方法二的优点是一次性替换12个配置文件,缺点是如果替换错误不好还原。
地址可以替换为想要的镜像源地址
换源后测试
(非必需)替换完成后
yum clean
清除之前的缓存。(必需)
yum update
。命令本意是检查已安装软件的新版本, 但重要在更新本地软件列表为最新 ,因此不更新的话装软件找不到或版本落后。执行命令更新后,返回信息"413Mb update?(Y/N)",问是否更新已安装软件到最新版,不更新
测试,
yum search samba
,看到返回许多samba相关的软件包,yum install samba
能进行安装,为成功。
作业
实验一:命令行跑火车字符画
换源使yum能正常使用。
安装sl软件包,这是一个让用户输入ls命令出错时在命令行显示字符画火车的小软件。
yum install -y epel-release
,epel-release为yum提供企业软件外的额外软件列表。安装sl软件包:
yum install sl
。 调用命令行跑火车命令:sl
。命令行能看到跑火车🚞。
实验二:命令行俄罗斯方块
项目介绍: (github搜索俄罗斯方块的英文tetris+cli关键字时搜到,go语言写的,go语言是编译型语言,项目的releases页面已经有根据不同操作系统平台编译好的可执行程序)
tetrigo项目github主页
找到项目右侧tetrigo/releases页面。
找到最近版本中的linux-amd64.tar.gz下载文件。下载程序:
方法一 点击文件下载到宿主机,再拖动到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桌面系统中打开火狐浏览器访问项目地址并下载文件,会下载至用户家目录下。
解压缩文件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运行
ls -l
看到解压后并重命名为tetrigo的是一个可执行二进制文件,从文件颜色绿色和文件明细第一个字符-表示单文件这两年来判断。
执行可执行程序,进入游戏界面。注意这里的* ./tetrigo 是执行命令而不是命令后的参数路径,因此不能简写为tetrigo*,否则会报错 tetrigo不是可执行的命令或函数。./tetrigo
参考
linux命令行小游戏
best-linux-terminal-console-games
linux命令行跑火车
.tar .gz .tar.gz
wget命令一些用法