# Ubuntu的安装和配置


**安装参考视频:**[在VMware 虚拟机中安装 Ubuntu 22.04](https://www.bilibili.com/video/BV11Z4y1C7dA?from=search&;seid=487049529830631598&spm_id_from=333.337.0.0&vd_source=b7c588d503c173fed51b757a85fd68c5)

**Linux操作系统教学视频参考:**[【小白入门 通俗易懂】2021韩顺平 一周学会Linux](https://www.bilibili.com/video/BV1Sv411r7vd?p=110&;vd_source=b7c588d503c173fed51b757a85fd68c5)P1-5为Linux系统的概述,P108开始介绍Ubuntu系统



## 1 Ubuntu的安装


本次通过VMware虚拟机来实现Ubuntu的安装

Ubuntu版本:22.04


网络连接的三种模式:

①桥接模式:可以和外部进行通讯,但虚拟机要和主机处于同一网段,同一网段的IP最多255个,容易造成IP冲突

②NAT模式(Network Address Translation,网络地址转换):可以和外部进行通讯,不造成IP冲突

③主机模式:独立系统,不和外部发生联系


搭建虚拟机通常采用NAT模式



## 2 Ubuntu的root用户


Ubuntu安装好之后默认用户是没有root(即管理员)权限的,这样使用很多命令时我们要在前面加上sudo,而且可能还需要输入密码,很麻烦。


一般使用su root命令来切换到root用户,但是由于安装时系统并没有提醒设置root初始密码,所以会报错,这时我们需要手动给root用户设置密码


①sudo passwd,系统提示输入当前用户密码

②root用户密码并再次确认,系统提示我们root用户密码设置成功

③su root,输入密码,这时系统里我们的身份已经切换为了root@Ubuntu22,命令前的提示符由$变成了#

④fdisk -l来检验,已经能够马上得到回应

⑤exit,就能退出root并返回一般用户,这时系统里我们的身份已经退回了,命令前的提示符变回了$



## 3 APT软件管理


### 3.1 APT软件管理原理

APT即Advanced Packaging Tool,是Ubuntu的安装包管理工具,可以使用apt命令执行软件包的安装、更新、卸载等等。Ubuntu系统下有一个/etc/apt/source.list文件,记录了很多的服务器地址(大多在美国),然后APT通过指令连接到网关,连接到国内网络,最后连接到美国的服务器来完成对软件包的安装、更新和卸载。但是在网络不太顺畅的时候,这种方式就会有问题,于是在国内网络就出现了APT的镜像网站,镜像网站定时地从美国服务器把APT软件下载更新到自己的服务器上,国内比较知名的有清华大学、阿里(中国官方)等等。可以通过换源把APT的指向修改为国内的镜像,加快访问速度。


### 3.2 APT更新源和APT操作命令

**sudo apt-get update**  更新源(更新索引)

sudo apt-get -f install

**sudo apt-get install package**  安装包

**sudo apt-get remove package**  删除包


sudo apt-cache search package  搜索软件包

**sudo apt-cache show package**  软件包的相关信息,如说明、大小、版本等

sudo apt-get install package --reinstall  重新安装包


sudo apt-get -f install  修复安装

sudo apt-get remove package --purge  删除包,包括配置文件等

sudo apt-get build-dep package  安装相关的编译环境


**sudo apt-get upgrade**  更新已安装的包

sudo apt get dist-upgrade  升级系统

sudo apt-cache depends package  了解使用该包依赖哪些包

sudo apt-cache rdepends package  查看该包被哪些包依赖

**sudo apt-get source package**  下载该包的源代码


Ubuntu16.04后,apt可以替代apt-get和apt-cache

详见:[apt和apt-get之间有什么区别?](https://blog.csdn.net/ybhuangfugui/article/details/113153505)


### 3.3 更新Ubuntu软件下载地址(即换源)

输入cat /etc/apt/sources.list

cat命令(concatenate的缩写)可以查找上述后缀的文件,并查看内容


输入后可以看到其中连接向的地址是国内,这可能是本机下载的ubuntu已经是国内源的镜像。一般来说都会显示的是美国的地址,我们就需要手动进行换源。国内一般选择[清华源](https://mirrors.tuna.tsinghua.edu.cn/)或者[阿里源](https://developer.aliyun.com/mirror/),这里我们选择清华源。


首先备份一份默认的源地址:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

cd /etc/apt/,cd可以进入指定文件夹

ll,可以查询当前文件夹下的文件,可以看到我们已经成功创建了backup文件

su root,切换成root用户

echo '' > sources.list,把当前的sources.list文件清空

vim sources.list,使用vim打开这个文件


注意这里要用Ubuntu的浏览器进入镜像站,因为本机的剪贴板和虚拟机暂时并不共享。进入清华源镜像站后搜索Ubuntu,找到最新的,点击后面的问号,进入帮助文档,选择对应的版本后右键复制下方的代码块,并用右键粘贴到sources.list中,按:wq退出


输入sudo apt-get update,通知APT管理软件我们已经更新了源地址,让其刷新一遍


apt操作实例:

pwd,显示当前所在路径

cd /home,切换到home目录

pwd,显示当前所在路径查看是否成功退出

su root,切换为root用户

sudo apt-get remove vim

sudo apt-get install vim

sudo apt-cache show vim 获取软件信息



## 4 安装VMtools(仅在虚拟机下需要安装)


### 4.1 VMtools的作用

①使虚拟机与VMware的界面完全贴合,四周不会留下黑色边框

②虚拟机与主机可以共用鼠标

③虚拟机与主机可以共用剪切板

④虚拟机与主机可以共享文件夹(可以同时读写同一个文件)


### 4.2 VMtools的安装

①开启虚拟机并进入系统

②vmware下面自动提示提示可安装vmtools

③确认后Ubuntu左边会出现一个光驱,右击这个光驱,会出现两个选项unmount(强制卸载)和eject(弹出可抽取式设备),选择eject

④再点击vmware上方菜单的虚拟机--安装vmtools,这时光驱重新出现,点击进去,将其中后缀为tar.gz的文件拷贝到Files--Other Locations--computer--opt(通常用来放第三方支持工具)。一开始这里不能复制和粘贴,是因为权限不够,输入sudo nautilus,可以让我们进入文件管理器,可以随意复制、粘贴、删除、无权限限制。

⑤cd/ opt,进入opt目录

⑥tar -zxvf VM,按tab补全文件名,解压该文件

⑦cd /opt/vmware,按tab补全目录名,进入解压出的文件夹

⑧ls,可以看到有一个vmware的install的文件,这个就是安装文件

⑨./vmware,按tab补全文件名,就可以开始安装,这时第一个选项默认选no,我们要输入y才能开始安装,后面的选项一路按enter选择默认就行,提示initializing后有几项提示报错,报错信息为segementation fault(core dumped),安装并没有完全成功,这可能是因为缺少GCC,GCC是GNU出品的Linux环境下编译C语言的编译器,而Ubuntu安装的时候默认是没有安装这些开发工具的。

⑩cd /bin,进入bin文件夹,vmtools默认被安装到这里,这里还有卸载文件

./vmware-un,按tab自动补全卸载文件名,开始卸载,准备手动安装GCC后再重新安装vmtools

cd,进入初始默认目录

gcc -v,发现系统确实无法找到gcc

apt-get install build-essential,安装build-essential这个包,其中包含GCC,G++等开发工具

gcc -v,提示gcc version 11.2.0,安装成功

cd /opt/vmware,按tab补全目录名,进入解压出的文件夹

./vmware,按tab补全文件名,就可以开始安装,这时第一个选项默认选no,我们要输入y才能开始安装,后面的选项一路按enter选择默认,依然报错segementation fault(core dumped),那么说明刚刚的问题可能并不是缺失gcc造成的


经过查证,问题应该是Ubuntu的版本和VMware提供的vmtools的版本不匹配造成的,解决办法参考:[Ubuntu安装VMware tools时Segmentation fault (core dumped)问题的解决](https://blog.csdn.net/m0_50695988/article/details/124660867)

cd /bin,进入bin文件夹,vmtools默认被安装到这里,这里还有卸载文件

./vmware-un,按tab自动补全卸载文件名,开始卸载

apt-get install open-vm-tools open-vm-tools-desktop,手动安装vmtools,这里的open指的是开源版本,desktop指的是桌面图形化版本


### 4.3 设置共享文件夹

首先在主机创建一个共享文件夹,然后在vm左边的库里面右击当前虚拟机,选择设置--选项--共享文件夹--总是启用--添加,找到刚才设置的文件夹,确定


Ubuntu中,点Files--Other Locations--Computer--mnt--hgfs(Host Guest File System),即可找到刚才的文件夹,像这样的共享文件夹,主机和虚拟机都是直接访问,两边做出的修改都会同步


在实际开发中,Linux的环境一般在远程,文件的上传下载是需要使用远程方式完成的



## 5 Ubuntu下开发Python


安装好Ubuntu后默认就已经安装好Python的开发环境


输入python3,可以看到Ubuntu22.04安装的python版本为3.10.4,并且这时已经进入python命令行,输入quit()可以退出


尝试编写一个python脚本,输入vi hello.py,进入了linux自带的编辑器vi,但是不能正常使用

输入sudo apt-get install vim来更新vi,vim即vi improved,是vi开源后的改进版本。更新后依然报错E353:Nothing in register,原因在于操作错误,vi的运行逻辑和其他编辑器不同,参考解决如下:[第一次使用vim遇到的问题及常用方法](https://my.oschina.net/hedgehog11/blog/148194?p={{page}})


vi 的工作模式:

①正常模式:这是打开文件第一个看到的模式,用光标在字符之间来回移动,进行删除、复制、移动字符等操作,也可以使用复制粘贴来处理文件数据。按i或a进入插入模式,按:(冒号)进入末行模式

②插入模式(Insert):输入你要编辑的内容。按ESC返回命令行模式,再按:(冒号)进入末行模式

③命令模式:输入命令对文件进行操作,保存文件或退出 vi。输入:wq存盘并退出 vi,输入q!不保存强制退出 vi,输入w:filename, 将文件保存为制定的文件名


保存完之后可以看到在Home里出现了hello.py这个文件,输入python3 hello.py,可以看到这个程序已经被执行



## 6 远程登录


### 6.1 SSH

SSH是Secure Shell的缩写,有IETF的网络小组(Network Working Group)所制定,SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较为可靠,转为远程登陆会话和其他网络服务提供安全性的协议,常用于远程登录,几乎所有的UNIX/Linux平台都可运行SSH


使用SSH服务,需要安装相应的服务器和客户端,服务器是被控制的,客户端是控制的。服务器在22号端口监听


与CentOS不同,Ubuntu默认没有安装SSHD服务

netstat,提示没有该指令,需要安装net-tools包

apt install net-tools,安装该包

netstat -anp | more,查看当前已使用的所有端口的情况,发现Local Address下没有22号端口在监听


### 6.2 安装SSH和启用

sudo apt-get install openssh-server,这个命令其实既安装了服务端又安装了客户端

service sshd restart,启动sshd服务,没有报错

netstat -anp | more,发现22号端口已经处于Listen状态


远程登录的方式:使用相应的工具,例如Xshell

文件的传输工具:Xftp


主机到官网选择Downloads--Free for Home/School

勾选both,确认后两个软件的链接见会被发送到填入的邮箱

这两个软件需要的权限比较高,安装时右键选择以管理员身份运行


ifconfig 查询Unbuntu的公网IP地址


回到主机cmd,输入ping 【公网IP地址】,提示得到回复,说明两台机器可以接通

打开Xshell,新建会话,名称可以自行命名,主机填写要连接的IP地址,端口22,其他默认


新建成功后双击刚刚新建的会话,弹出的窗口选择接受并保存,这里保存的的是密钥文件,提示输入用户名,注意Ubuntu默认是不允许直接使用root用户登录的,所以只能先使用其他用户登录,如果需要开启root用户ssh登录,参考解决方案:[开启root用户ssh登录](https://blog.csdn.net/qq_38923792/article/details/109625928)


exit或logout,退出ssh

reboot,可以重启linux系统


### 6.3 从一台linux系统远程登录另一台linux系统

在创建服务器集群时,会用到这个技术


为了学习,可以克隆一台虚拟机,同样启用ssh服务


sudo apt install openssh-server

如果克隆出的这一台是当作客户端,那么不用启动sshd服务,如果这一台也要作为服务器,那么也要启用

service sshd start


在linux客户端:

ssh 服务器端用户名@服务器端IP,然后输入服务器端该用户名的密码

如果访问出现错误,可查看是否有该文文件~/.ssh/known_ssh,尝试删除该文件解决

exit或logout,登出


### 6.4 安装Xftp

对安装包右键选择以管理员身份运行,新建会话参照上面的ssh,协议最好选择SFTP,端口还是选择22好端口,不要选21号端口,其他默认

提示输入用户名,Ubuntu默认是不允许直接使用root用户登录的,所以只能先使用其他用户登录


如果需要开启root用户xftp权限,参考解决方案:[使用ROOT用户登录XFTP、XSHELL](https://www.freesion.com/article/26001155660/)


### 6.5 如何处理Xshell和Xftp中文乱码问题

点击左上方的小齿轮,出现服务器的属性,选择选项,把编码改成Unicode(Utf-8)