请访问原文链接:Debian 11 “bullseye” 安装笔记 查看最新版。原创作品,转载请保留出处。
作者主页:sysin.org
ISO 下载:Debian 11.10 - The Universal Operating System
OVF 下载:Debian 11.5 x86_64 OVF (sysin) - VMware 虚拟机模板
Debian 版本:11
代号:bullseye
发布日期:2021.08.14
内核版本:5.10
1 | uname -a |
Debian 11 是 LTS 长期支持版本,长达 5 年的生命周期,适合在生产环境运行。
1. Debian 版本历史
Debian 是最早的 Linux 发行版之一,由 Ian Murdock(伊恩 · 默多克)创立。Ian Murdock 于 1973 年 4 月 28 日出生于德国的君斯坦市 (Konstanz, Germany)。他是 Debian GNU/Linux 发行版的创始人,也是商用 Linux 发行商 Progeny 公司的创始人。他曾就职于 Sun Microsystems, Inc,负责 Sun 公司的操作系统平台发展战略。在加入 Sun 公司之前,Ian Murdock 是 Linux 基金会 (Linux Foundation) 的首席技术长官 (CTO),以及 Linux 平台交互标准 LSB (Linux Standard Base) 的主席,最后受聘于 Docker 公司,非常令人遗憾的是 Ian Murdock 于美国时间 2015 年 12 月 28 日 逝世,开源界和 Linux 业界痛失一位真正的天才!
Debian 于 1993 年 8 月 16 日由当时还在美国普渡大学念书的 Ian Murdock 首次发表。Debian 的名称中的 “deb” 取自他的女友(现在为其妻子)Debra,“ian” 取自 Ian Murdock 自己的名字。Ian Murdock 最初把他的系统称为 “Debian Linux Release”。在定义文件 Debian Manifesto 中,Ian Murdock 宣布将以开源的方式,本着 Linux 及 GNU 的精神发行一套 GNU/Linux 发行版。Ian Murdock 的目的是创建一个任何人都可以免费下载和使用的稳定的发行版,而不是让用户一个一个地收集应用程序并自己编译。
以下是最近的基本版本的发布日期:
• 2021-08-14: Distribution Release: Debian 11
• 2019-07-07: Distribution Release: Debian 10
• 2017-06-18: Distribution Release: Debian 9
• 2015-04-26: Distribution Release: Debian GNU/Linux 8.0
• 2013-05-05: Distribution Release: Debian GNU/Linux 7.0
• 2011-02-06: Distribution Release: Debian GNU/Linux 6.0
• 2009-02-15: Distribution Release: Debian GNU/Linux 5.0
• 2007-04-08: Distribution Release: Debian GNU/Linux 4.0
2. Debian 11 的新变化
目录:
-
- 2.2.1. 桌面和知名软件包
- 2.2.2. 无驱动扫描和打印
- 2.2.3. 新的通用 open 命令
- 2.2.4. 控制组 v2
- 2.2.5. 持久化 systemd 日志
- 2.2.6. 新的 Fcitx 5 输入法
- 2.2.7. 来自 Debian Med Blend 团队的新闻
- 2.2.8. 内核 exFAT 支持
- 2.2.9. 改进的 man page 翻译
维基页面 提供了更多关于这个主题的信息。
2.1. 支持的架构
下面是 Debian bullseye 官方支持的架构:
- 32 位 PC 机(
i386
)和 64 位 PC 机(amd64
) - 64 位 ARM(
arm64
) - ARM EABI(
armel
) - ARMv7(EABI 硬浮点 ABI,
armhf
) - 小端序 MIPS(
mipsel
) - 64 位小端序 MIPS(
mips64el
) - 64 位小端序 PowerPC(
ppc64el
) - IBM System z(
s390x
)
您可以在 Debian 移植页面 阅读更多的关于您的架构的移植状态和移植细节的信息。
2.2. 这次发布中有什么新变化?
Debian 的这次发行再次带来了比上一版本 buster 更多的软件;本次发行包括 11294 个新软件包,软件包的总数达到了 59551 个。这个发行版的多数软件包得到了更新:更新了 42821 个软件包(占 buster 软件包总数的 72%)。而且,由于各种原因,有相当数量的软件包(9519 个,占 buster 软件包总数的 16%)从这次发行中被删除了。您将不会看到这些包有任何更新,而且在包管理软件中它们会被标记为 “过时的”;参见 第 4.8 节 “过时的软件包”。
2.2.1. 桌面和知名软件包
如往常一样,Debian 也提供了多个桌面程序和环境。提供的桌面环境包括 GNOME 3.38,KDE Plasma 5.20,LXDE 11,LXQt 0.16,MATE 1.24,以及 Xfce 4.16。
生产力应用也得到了升级,包括办公套件:
- LibreOffice 已升级到 7.0 版;
- Calligra 已升级到 3.2 版;
- GNUcash 已升级到 4.4 版;
这次发行包含了许多软件的更新,其中包括:
软件包 | 在 10(buster)中的版本 | 在 11(bullseye)中的版本 |
---|---|---|
Apache | 2.4.38 | 2.4.48 |
BIND DNS 服务器 | 9.11 | 9.16 |
Cryptsetup | 2.1 | 2.3 |
Dovecot MTA | 2.3.4 | 2.3.13 |
Emacs | 26.1 | 27.1 |
Exim 默认邮件服务器 | 4.92 | 4.94 |
GNU 编译器套件(默认编译器) | 8.3 | 10.2 |
GIMP | 2.10.8 | 2.10.22 |
GnuPG | 2.2.12 | 2.2.20 |
Inkscape | 0.92.4 | 1.0.2 |
GNU C 函数库 | 2.28 | 2.31 |
lighttpd | 1.4.53 | 1.4.59 |
Linux 内核映像 | 4.19 系列 | 5.10 系列 |
LLVM/Clang 工具链 | 6.0.1 和 7.0.1(默认) | 9.0.1 和 11.0.1(默认) |
MariaDB | 10.3 | 10.5 |
Nginx | 1.14 | 1.18 |
OpenJDK | 11 | 11 |
OpenSSH | 7.9p1 | 8.4p1 |
Perl | 5.28 | 5.32 |
PHP | 7.3 | 7.4 |
Postfix MTA | 3.4 | 3.5 |
PostgreSQL | 11 | 13 |
Python 3 | 3.7.3 | 3.9.1 |
Rustc | 1.41(armel 则为 1.34) |
1.48 |
Samba | 4.9 | 4.13 |
Vim | 8.1 | 8.2 |
2.2.2. 无驱动扫描和打印
使用 CUPS
打印以及使用 SANE
扫描对于越来越多的硬件型号已经可以实现无需任何驱动程序(通常是非自由驱动程序)即可正常操作,尤其是过去五年以来出现在市场上的新设备。
2.2.2.1. CUPS 和无驱动打印
使用以太网或无线网络连接的现代打印机已经可以使用 无驱动打印功能,由 CUPS
和 cups-filters
软件包提供支持,此功能已在 Debian buster 发行注记 中描述。Debian 11 “bullseye” 提供了新软件包 ipp-usb
;它使用许多现代打印机所支持的、供应商中立的 IPP-over-USB 协议,且 cups-daemon
推荐安装该软件包。它使得 USB 设备可被视作网络设备,以将无驱动打印扩展至包括 USB 连接的打印机。详情 在维基上 有更多描述。
在 ipp-usb
软件包中包含的 systemd 服务文件将在使用 USB 的打印机连接到系统时启动 ipp-usb
守护程序,以使其可用于打印任务。默认情况下 cups-browsed
软件包应当可以自动完成配置,或者可以 手动设置本地无驱动打印队列。
2.2.2.2. SANE 和无驱动扫描
官方的 SANE
无驱动后端在 libsane1
软件包中由 sane-escl
提供。另有一独立开发的无驱动后端 sane-airscan
。两个后端均可使用 eSCL 协议,但 sane-airscan
另外也可使用 WSD 协议。用户应该考虑在系统上同时安装两个后端。
eSCL
和 WSD
均为网络协议。因此,它们在设备是 IPP-over-USB
设备的情况下也可经由 USB 连接生效(参见上文)。请注意 libsane1
推荐安装 ipp-usb
软件包。在软件包已安装的情况下,合适的设备可以在使用 USB 端口连接到系统的同时自动设置使用无驱动后端。
2.2.3. 新的通用 open 命令
新增加的 open 命令将作为 xdg-open(默认)或者 run-mailcap 的别名出现,具体实现则由 update-alternatives(1) 系统管理。它旨在作为命令行交互工具,帮助用户使用默认的应用程序打开文件;所使用的程序按照具体情况可以是图形界面程序。
2.2.4. 控制组 v2
在 bullseye 中,systemd 默认使用控制组 v2(cgroupv2),它提供了统一的资源控制层级架构。如果有需要,可以使用内核命令行参数重新启用旧有的 cgroups;请参见 第 5.1.9 节 “OpenStack 和 cgroups v1” 一节中适用于 OpenStack 的注记。
2.2.5. 持久化 systemd 日志
在 bullseye 中的 systemd 默认启用了持久日志的功能,日志文件存放于 /var/log/journal/
。请参见 systemd-journald.service(8) 以了解细节;请注意 Debian 中的日志除了默认的 systemd-journal
组外,还可以被 adm
用户组内的成员阅读。
这项改动应该不会对任何已有的传统日志守护程序(例如 rsyslog
)产生任何干扰,但是不依赖这些守护程序所提供的特别功能的用户应当考虑将传统日志程序卸载并切换到仅使用新的 systemd 日志工具。
2.2.6. 新的 Fcitx 5 输入法
Fcitx 5 是用于中文、日语、韩语和其它许多语言的一个输入法。它是 buster 提供的 Fcitx 4 的后续版本。新版本增加了对 Wayland 的支持并改进了扩展支持。您可以在 维基页面上 阅读更多信息以及从旧版本迁移的方法。
2.2.7. 来自 Debian Med Blend 团队的新闻
Debian Med 团队正在积极打包用于研究病毒序列以及与流行病学研究相关的软件以抗击 COVID-19
和疫情大流行。下一个发行周期中,团队将继续进行这项任务,并专注于打包可以应用于这两个领域的机器学习工具。
除了添加生命科学和医药领域的新软件包之外,许多已有的软件包也得到了持续集成支持。
一些性能关键的应用程序现在受益于 SIMD Everywhere 的实现。该软件库可以帮助软件包既支持更多的硬件平台(尤其是 arm64
),又受益于处理器所提供的向量运算扩展带来的性能提升,例如 amd64
上的 AVX
,或 arm64
上的 NEON
。
如需安装由 Debian Med 团队维护的软件包,您可以安装名为 med-*
**
的元软件包;在 Debian bullseye 中,其版本号为 3.6.x。您还可以访问 Debian Med 任务页面 以查看 Debian 中全部可用的生物和医疗软件。
2.2.8. 内核 exFAT 支持
bullseye 是第一个提供支持 exFAT 文件系统的 Linux 内核的发行版本,且它默认使用该实现挂载 exFAT 文件系统。因此,用户不再需要使用 exfat-fuse
软件包所提供的用户空间文件系统实现。如果您要继续使用用户空间文件系统的实现,您需要在挂载 exFAT 文件系统时直接调用 mount.exfat-fuse 命令。
创建和检查 exFAT 文件系统的工具位于 exfatprogs
软件包,它由 Linux 内核 exFAT 实现的作者编写。由已有的 exfat-utils
软件包提供的独立实现仍然可用,但它不能与新的实现共同安装在系统上。我们推荐您迁移到使用 exfatprogs
软件包,尽管您需要注意并处理两者可能不互相兼容的命令行选项。
2.2.9. 改进的 man page 翻译
部分项目,例如 systemd、 util-linux、 OpenSSH 和 Mutt 的部分语言的手册页,例如法语、西班牙语和马其顿语,得到了明显改进。欲获得此项改进,请安装 manpages-*
xx*
(其中 *
xx*
是您所需的自然语言的代码)。
在 bullseye 的生命周期中,进一步的翻译改进将会通过 backports
仓库提供。
3. 安装摘要
本例使用 Debian 11 AMD64(x86_64)CD:debian-11.0.0-amd64-netinst.iso 进行安装。
- 语言选择,选择 English,Location 选择 China
- 设定 root 账号密码,并提示新建一个账号(普通用户)并设置密码
- 分区,默认 ext4 文件系统,可选 LVM(本例使用手动分区,
/boot
2G,剩余为/
,安装后手动创建/swap.img
作为 SWAP 分区) - 软件包管理,可以选择本地镜像源(如果使用 DVD 安装默认将 cdrom 作为 source,也需要配置镜像,否则可能因依赖关系报错,例如 snmp)
- 组件:默认选择 GNOME 桌面环境(这里取消)和 Standard System Utilities(保持勾选),勾选 SSH server
4. 默认没有安装 sudo
Debian 在安装过程中设置 root 密码,并提示创建一个普通用户,SSH server 需要手动勾选安装,root 默认不允许 SSH 登录,同时默认并没有 sudo,所以第一步必须配置 sudo,或者开启 root 账号 SSH 登录(存在安全性风险,不推荐)。
本例中安装时创建了一个名为 sa 的用户:
1 | id sa |
安装 sudo:
1 | apt install sudo |
将之前创建的普通用户添加到 sudo 组,即可获得管理员权限:
1 | usermod -a -G sudo sa |
附:/etc/sudoers
默认配置如下。
1 |
|
5. 软件包管理入门
Debian 软件包管理叫做 Advanced Packaging Tool (APT),是一套管理软件包和相关依赖的机制,可以实现应用程序的安装、移除和更新等。
如果您已经有了 Linux(RHEL、Ubuntu)或者 Unix(macOS、FreeBSD)任一产品的软件包管理工具使用经验,对于其他系统可以参看下表快速入门:
命令功能 / 系统 | Darwin (macOS) | FreeBSD | Debian/Ubuntu | RHEL(dnf = yum) |
---|---|---|---|---|
搜索和查找软件包 | brew search | pkg search | apt list | yum list |
查看软件包信息 | brew info | pkg info | apt show | yum info |
安装 | brew install | pkg install | apt install | yum install |
删除 | brew uninstall/remove/rm | pkg delete/remove | apt remove | yum remove |
删除不在使用的软件包 | brew autoremove | pkg autoremove | apt autoremove | yum autoremove |
更新 repo 列表 | brew update | pkg update | apt update | yum makecache |
更新软件包 | brew upgrade | pkg upgrade | apt upgrade | yum upgrade/update |
清理缓存临时文件等 | brew cleanup | pkg clean -a | apt autoclean | yum clean all |
备注 1:RHEL 8 开始,使用 dnf,但 yum 仍然可用,实际上两个命令都是相同的文件链接,等价。
备注 2:RHEL 此处用词包含其免费兼容发行版 AlmaLinux、Rocky Linux 以及退役的 CentOS。
可以看到,CentOS 中更新 repo 列表的命令与其他不同,其他命令几乎都是相同或者极为类似。
当然 Ubuntu 是基于 Debian 构建,apt 使用方式是一样的。
注意事项: 应该尽量避免以下行为。
- 在 “
/etc/apt/sources.list
” 中不要包含testing
或unstable
。 - 在 “
/etc/apt/sources.list
” 里不要在标准的 Debian 中混合使用其它非 Debian 的档案库,例如 Ubuntu。 - 不要建立 “
/etc/apt/preferences
”。 - 不了解会造成的全部影响,就不要通过配置文件改变软件包管理工具的默认行为。
- 不要使用 “
dpkg -i <random_package>
” 安装任何软件包。 - 绝不使用 “
dpkg --force-all -i <random_package>
” 安装任何软件包。 - 不要删除或修改 “
/var/lib/dpkg/
” 中的文件。 - 不要让从源码直接安装的程序覆盖系统文件。如果需要的话,将它们安装到 “
/usr/local
” 或 “/opt
” 中。
6. 创建一个管理员账号
默认配置下,创建一个管理员账号,即有 sudo 权限执行所有命令的用户:
1 | useradd -m -s /bin/bash -G sudo user1 #user1 为用户名 |
备注:
-m 创建同名 home 目录
-s 指定 shell
-G 修改附加属组
7. 配置 vi
系统自带 vi 即 vim 8.2.2434,默认配置有点难用,使用 .vimrc 配置文件后报错,竟然不支持语法高亮:
1 | E319: Sorry, the command is not available in this version: syntax on |
通过 apt list vim
可以看到系统自带的实际是 vim-tiny
安装完整版的 vim:
1 | sudo apt install vim |
可以看到提示 update-alternatives:vi 和 vim 等都指向了 /usr/bin/vim.basic
crontab -e
仍会提示选择默认编辑器,注意选择 vim.basic 即可。
.vimrc
配置文件参考如下:
1 | """""""""""""""""""""""""""""""""""""" |
8. 开启 root 账号登录的方法
不建议开启,以下步骤仅供参考。
Debian 默认禁用 root SSH 密码登录(Pubkey 认证不受此限,默认启用),安装时候创建特定用户作为管理员帐号(通过 sudo 执行特权命令),启用 root 用户步骤如下:
- 修改 root 密码(设置密码后可以通过控制台登录)
1 | sudo passwd root |
- 修改配置文件(启用 SSH 密码登录)
1 | sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak |
找到下面相关配置:
1 | Authentication: |
修改如下:
1 | PermitRootLogin prohibit-password |
补充:
1 | PermitRootLogin prohibit-password #允许 root 登录,但禁止使用密码认证 |
- 或者直接快速配置
1 | sudo sed -i.bak "/^#PermitRootLogin/c"PermitRootLogin""yes"" /etc/ssh/sshd_config |
- 重启服务生效
1 | sudo systemctl restart ssh |
9. 格式化网卡命名
从 Debian 9 开始,(CentOS 7 开始,Ubuntu 16.04 开始),安装好后网卡名称变成了类似 ensxxx 这种随机名称(本例为 ens33,可能是其他数字)。
1 | 编辑 grub 配置文件 |
10. 网络配置
查看 IP 地址信息:
1 | ip address |
Debian 11 网络配置文件为:/etc/network/interfaces
。
默认配置使用 DHCP,安装过程并没有手动配置提示。内容如下:
1 | cat /etc/network/interfaces |
修改 IP 地址:
1 | sudo vi /etc/network/interfaces |
可以看到 Debian 网络配置方法并没有变更,Ubuntu 16.04 也是这样配置,但是 18.04 开始使用 netplan,20.04 同样使用 netplan 但是默认配置文件名称再次变更。
配置多个 IP:
1 | auto eth0:0 |
添加静态路由(Linux 通用,临时,重启消失):
1 | route add -net 10.10.11.0/24 gw 10.10.1.1 |
Debian 配置永久静态路由:
1 | 添加 |
11. 修改主机名
设置主机名:
1 | hostnamectl set-hostname debian01 --static |
或者:
1 | sudo vi /etc/hostname |
添加 domain name:
1 | sudo vi /etc/hosts |
查看 FQDN:
1 | hostname -f |
12. 设置时区
我们默认安装是已经正确设置时区,但是如果是第三方云主机时区就未必符合本地要求。
1 | 查看时区,有 CST 正确 |
13. 修改镜像源
安装的时候已经可以选择 mirror,加速本地访问,可以访问 Debian worldwide mirror sites 查看选择可用的镜像站点。
1 | 模板使用 mirror.sjtu.edu.cn |
更新:
1 | sudo apt update #更新源 |
14. 安装 SNMP
1 | sudo apt install snmpd snmp |
(模板仅仅安装,未配置)
15. 配置 NTP(正确方法更新)
(1) 默认使用 systemd-timesyncd(NTP Client)进行时间同步:
也适用于 Ubuntu 20.04 和 22.04。
配置文件默认如下:vi /etc/systemd/timesyncd.conf
1 | [Time] |
默认 NTP 服务器使用 0-3.debian.pool.ntp.org
如果使用其他的服务器,增加一行,多个地址用空格分隔:
1 | NTP=ntp1.aliyun.com ntp2.aliyun.com |
重启服务生效:systemctl restart systemd-timesyncd
手动同步(sudo atp install ntpdate
):ntpdate -s ntp1.aliyun.com
查看同步状态:
timedatectl timesync-status
本例使用该默认配置。
(2) 配置使用 chrony:
也适用于 Ubuntu 18.04、20.04 和 22.04。
也可以禁用默认的 NTP Client(命令:sudo timedatectl set-ntp off
),使用 chrony 进行时间同步。
安装
这里使用 chrony 替代传统的 ntp,当然 ntp 也是可用的,两种默认都没有安装。
安装 chrony:
1 | sudo apt install chrony |
chrony 自带一个交互式工具 chronyc,在配置文件中指定了时间服务器之后,如果想查看同步状态,可以进入这个交互式工具的交互界面。
1 | chronyc 有很多的子命令,可以输入 help 来查看 |
查看:
1 | chronyc sources -v |
最基本配置:
1 | cat /etc/chrony/chrony.conf |
修改 pool 2.debian.pool.ntp.org iburst
为指定的 NTP 服务器。
通常是修改为内网中的 NTP,保持时间的统一和可靠同步,否则一般不用修改。
例如 Ubuntu 中默认的是:
1 | pool ntp.ubuntu.com iburst maxsources 4 |
这里的 pool 表示一组服务器,也可以用 sever 指令替代,标识一台服务器,可以是域名也可以是 IP 地址。
16. 虚机安装 VMware Tools
默认自动安装,查看状态如下:
1 | 查看版本 |
虚机会自动安装,如果未安装,执行如下命令安装:
1 | apt install open-vm-tools |
17. 安装必备工具
根据需要安装自己常用的必备工具:
1 | sudo apt -y install zip unzip |
18. Shell 配置
命令自动补全忽略大小写
该配置针对 Bash,仅使用 Zsh 可以忽略。
1 | echo 'set completion-ignore-case on' >> ~/.inputrc |
修改 vmrc(vim 配置文件)
为当前用户创建 ~/.vimrc,内容参看上述 “配置 vi”
为将 .vimrc 添加到默认用户配置文件 cp ~/.vimrc /etc/skel/.vimrc
ll 常规版
一般 Linux 中默认定义了 ll 别名,但参数比较少,需要使用更加强大的 ll 别名。
Debian 默认并没有定义 ll 别名。
写入环境变量(当前用户优先执行):
bash:
1 | echo 'alias ll="ls -lahF --color=auto --time-style=long-iso"' >> ~/.bashrc |
zsh(稍后配置 zsh):
1 | echo 'alias ll="ls -lahF --color=auto --time-style=long-iso"' >> ~/.zshrc |
注意:仅仅针对当前用户,写入全局用户配置文件:/etc/skel/.bashrc 或者 /etc/skel/.zshrc
高级版 ls:以数字显示权限
这里我们把命令叫做 lll
命令:
1 | ls -lahF --color=auto --time-style=long-iso | awk '{k=0;s=0;for(i=0;i<=8;i++){k+=((substr($1,i+2,1)~/[rwxst]/)*2^(8-i))}j=4;for(i=4;i<=10;i+=3){s+=((substr($1,i,1)~/[stST]/)*j);j/=2}if(k){printf("%0o%0o ",s,k)}print}' |
创建文件
在使用 cat EOF 中出现 $ 变量通常会直接被执行,显示执行的结果。若想保持 $ 变量不变需要使用 \ 符进行注释。
1 | 如果非 root 用户,请先切换到 root |
Zsh
以下针对当前用户有效,建议使用全局配置,参看 其他文章。
1 | Zsh |
19. 清理并制作镜像模板
清理 apt 缓存
1 | sudo apt clean && sudo apt autoclean #清理下载文件的存档 |
清理临时文件夹
1 | rm -rf /tmp/* # 清空临时文件夹 |
清空历史记录
1 | 比较完整的清空历史记录 |
至此,Debian 的基本配置已经完成,可以制作模板了。
20. Gnome 桌面环境
如果需要在命令行下安装桌面环境,操作如下:
1 | sudo apt update |
21. 关于防火墙或者包过滤
Debian 11 默认使用 nftables 作为 netfilter 前端,使用 nft 命令进行管理,但是默认并没有启用。
Linux 内核嵌入了 netfilter 防火墙,可以从用户空间使用 iptables、ip6tables、arptables 和 ebtables 命令对其进行控制。然而,Netfilter iptables 命令正在被 nftables 取代,这避免了它的许多问题。它的设计涉及较少的代码重复,并且只需使用 nft 命令即可对其进行管理。
Debian Buster(即 Debian 10,包括 11)默认使用 nftables 框架。
要在 Debian 中启用默认防火墙,请执行:
1 | apt -y install nftables |
关于 nft
命令的语法和用例,参看其他文章。
文章用于推荐和分享优秀的软件产品及其相关技术,所有软件默认提供官方原版(免费版或试用版),免费分享。对于部分产品笔者加入了自己的理解和分析,方便学习和研究使用。任何内容若侵犯了您的版权,请联系作者删除。如果您喜欢这篇文章或者觉得它对您有所帮助,或者发现有不当之处,欢迎您发表评论,也欢迎您分享这个网站,或者赞赏一下作者,谢谢!
赞赏一下