10 lines
21 KiB
JavaScript
10 lines
21 KiB
JavaScript
import{_ as a,c as i,o as e,a4 as s}from"./chunks/framework.DtvhUNIn.js";const g=JSON.parse('{"title":"Linux 概念普及","description":"","frontmatter":{},"headers":[],"relativePath":"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.Y.1Linux概念普及.md","filePath":"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.Y.1Linux概念普及.md"}'),n={name:"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.Y.1Linux概念普及.md"},t=s(`<h1 id="linux-概念普及" tabindex="-1">Linux 概念普及 <a class="header-anchor" href="#linux-概念普及" aria-label="Permalink to "Linux 概念普及""></a></h1><h2 id="before-start" tabindex="-1">Before Start <a class="header-anchor" href="#before-start" aria-label="Permalink to "Before Start""></a></h2><p>在使用 Linux 之前,请确保自己会使用计算机。如果 Windows 都玩不转的,可以先补下基础知识。</p><ul><li>什么是文件?什么是文件系统?</li><li>操作系统是干什么的?</li><li>软件是怎么运行起来的?</li></ul><h2 id="what-is-linux-distribution" tabindex="-1">What is Linux Distribution <a class="header-anchor" href="#what-is-linux-distribution" aria-label="Permalink to "What is Linux Distribution""></a></h2><p>Linux 不同于 Windows 和 macOS 这类系统,它没有官方维护的版本。Linux 的官方只负责维护核心,而给这个核心加上各种软件变成能用的操作系统的重任,就交给了下游的各个组织和公司。所谓发行版,就是把一系列的软件和核心放在一起,经过测试之后,做成一个完整的系统,分发给用户。</p><p>这个模式给 Linux 提供了多样性。用户可以选择适合自己的发行版。虽然在早期这使适配软件变得有些困难,使不同发行版割裂开来,给 Linux 的发展带来了阻碍。但是现在是 2023 年,随着包管理的规范化和新一代打包系统的兴起,这个状况得到了极大的改善。现在我们可以自由选取发行版,而不用过度担心软件适配的问题。</p><p>简而言之,GNU/Linux 加包管理加桌面约等于发行版,虽然不严谨,但是差不多贴近事实。</p><h3 id="package-manager" tabindex="-1">Package Manager <a class="header-anchor" href="#package-manager" aria-label="Permalink to "Package Manager""></a></h3><p>一般来说,一个 Linux 的发行版最核心的部分是包管理模式。这通常通过包管理器和软件源实现。</p><p>包 (package) 类似 Windows 的安装包,它包含了要安装的软件以及一些额外的信息,但是同 Windows 安装包不同,它只是一个压缩包,不能自己运行安装,必须经过包管理器。用户很少需要直接下载安装它,而是通过包管理器。我们也不鼓励安装不在仓库里面的包,如果系统软件源里面没有可以去 flatpak。至于某些专有软件,我更推荐丢进 Windows 10 LTSC 虚拟机。</p><p>包管理器 (package manager) 负责安装和管理软件包。它读取软件包,按照软件包的要求去安装它的依赖 (通常是一些运行库,就像 Windows 下面的 VC++ 和 .NET),然后自动把包安装到规定的位置。</p><p>软件源 (repository) 是用来存放软件包的网站。包管理器就是从软件源服务器上下载包的。因为软件源通常在国外,软件包下载可能会比较慢。所以我们一般使用国内各个高校的镜像源,修改软件源的地址就是所谓换源。</p><p>有些人可能会纠结软件装到哪里去了,是装在什么盘上面了。这个不需要管。因为 Linux 的目录的定义和 Windows 有很大不同,这使得一些 Windows 上面的繁琐操作在 Linux 上面很多余。</p><p>这些常见的包管理器</p><ul><li>apt(dpkg): apt 是 Debian 系发行版的包管理器。基本上提供 Linux 安装包的软件都会支持。</li><li>pacman: Arch 系的包管理器。可以使用 AUR(Arch User Repository),这里也能找到很多软件。</li><li>rpm: Red Hat 系的包管理器。包比较少。只是由于中文互联网有很多死去的 CentOS 的教程遗留,所以提出来介绍一下。</li><li>dnf: Fedora 的包管理器。</li><li>flatpak: 通用包管理器,是个 Linux 桌面端都能安装使用。使用的 flathub 软件源上面有非常丰富的桌面软件支持(甚至有 QQ),建议发行版软件源里面没有的都可以先看看 flathub 有没有,如果有就 flatpak 安装,而不是拿着网站上面下过来的 deb 文件手动安装,这样很容易搞坏系依赖管理。</li><li>snap: 通用包管理器,只有 Ubuntu 强推。我建议使用 Ubuntu 的把这个卸载了换成 flatpak 避免影响使用体验。</li></ul><p>不同的包管理器决定了不同的发行版。因此一般用包管理器做发行版的分类依据。</p><h3 id="desktop-environment" tabindex="-1">Desktop Environment <a class="header-anchor" href="#desktop-environment" aria-label="Permalink to "Desktop Environment""></a></h3><p>桌面环境对用户而言当然也是很重要的,很大程度决定了用户体验。在 Linux 上面,桌面只是一些普通的程序,可以随便安装和更改。所以会有很多的桌面可供选择。不过这个选择一般来说发行版都帮你选好了。</p><h4 id="gnome" tabindex="-1">Gnome <a class="header-anchor" href="#gnome" aria-label="Permalink to "Gnome""></a></h4><p>Gnome 曾一度成为 Linux 桌面的代名词,因为很多发行版默认会安装这个桌面。Gnome 的风格比较独特,有点类似 macOS,但是有不少自己的东西。对触控板手势的适配不错。</p><p>开箱状态连任务栏和桌面图标都没有,好在可以手动安装。一般各个发行版默认安装了 dash-to-dock(任务栏),desktop-icons(桌面图标) 这些插件。</p><p>设置比较少,不过可以通过 gnome-tweaks 补上。这样基本的设置都能覆盖。</p><h4 id="kde" tabindex="-1">KDE <a class="header-anchor" href="#kde" aria-label="Permalink to "KDE""></a></h4><p>KDE 也是非常热门的桌面。类似 Windows 的操作逻辑和极强的可定制性让他更适合 Linux“玩家”。</p><p>比较旧的版本里面可能会默认单击打开文件夹,可以在工作区 (workspace) 设置中改成双击。</p><p>KDE 的 GUI 功能做的还是不错的。而且提供了不少有用的套件。</p><p>Discover 应用商店可以直接使用发行版包管理器和 flatpak 进行安装,收录了很多软件,并且可以自动进行系统更新检查。</p><p>设置里面的选项很多,可以随便改。喜欢折腾的可以去看看 Theme,只是系统自带的主题安装器需要哈利波特才能使用。</p><p>自带的代理设置有些软件不会读,比如 Firefox, 给这些软件单独设置一下就行。</p><h4 id="cinnamon" tabindex="-1">Cinnamon <a class="header-anchor" href="#cinnamon" aria-label="Permalink to "Cinnamon""></a></h4><p>Cinnamon 目前大众的发行版只有 Linux Mint 在支持,但是这也是个不错的桌面,适合小白。</p><h4 id="xfce-lxqt" tabindex="-1">Xfce || LXQT <a class="header-anchor" href="#xfce-lxqt" aria-label="Permalink to "Xfce || LXQT""></a></h4><p>如果你有一台老爷机,这两个桌面也许是个不错的选择。</p><h4 id="display-manager" tabindex="-1">Display Manager <a class="header-anchor" href="#display-manager" aria-label="Permalink to "Display Manager""></a></h4><p>在开机登陆用户的时候,那个让你输密码的界面并不是桌面,而是 DM(Display Manager),如果你有多个桌面,可以在这里切换。</p><p>我建议不要管这个,发行版用什么就跟着用。如果要自己安装都建议 SDDM。</p><h4 id="wayland-and-x11" tabindex="-1">Wayland and X11 <a class="header-anchor" href="#wayland-and-x11" aria-label="Permalink to "Wayland and X11""></a></h4><p>显示服务器是比桌面更底层的东西,处在系统内核和桌面之间,用来管理窗口。这个一般碰不到,只要了解你使用的是 X11 还是 Wayland 就行。X11 是老的,Wayland 是新的。</p><p>现在 (2023 年) 的时间点非常尴尬,处于 X11 和 Wayland 换代的节点上面。一方面 X11 太老旧了 (十几年没有大更新了) 对有些新事物支持不好,比如 2k 屏幕 1.5 倍缩放的屏幕撕裂问题。另一方面 Wayland 支持虽然已经大致完善,但是有些死硬派没跟上,说的就是你,Nvidia!</p><p>好在大多数发行版并不需要纠结这些。非 N 卡的 Gnome 和 KDE 桌面基本都是 Wayland 了,其他的桌面环境或者使用 N 卡都会用 X11。</p><p>但是有些发行版可能忘了给 N 卡换 X11, <strong>如果你桌面登不进去</strong>,请检查自己的环境是否是 Wayland,如果是,<strong>换成 X11</strong>。</p><p>如果你 N 卡要强开 Wayland,请参照自己使用的发行版的 wiki 以及 Arch Linux wiki, 看看有什么需要注意的点。</p><h2 id="distro" tabindex="-1">Distro <a class="header-anchor" href="#distro" aria-label="Permalink to "Distro""></a></h2><p>大多数发行版是基于某几个特定的发行版魔改的。所以会有“系”的说法。常见的有 Debian 系,Arch 系 Red Hat 系和 SUSE 系。其中 Red Hat 系主要面向企业,桌面版除了 Fedora 并不多见。</p><p>服务器发行版建议 Debian,用 Ubuntu 也是可以的。如果在中文互联网找资料可能会见到 CentOS,但是 CentOS 如今已经停止维护了,所以看到之后绕着走就行。</p><p>在<a href="./3.Y.2双系统安装和发行版推荐.html">3.Y.2 双系统安装和发行版推荐</a> 推荐的发行版都是针对<strong>双系统/单系统方案</strong>的,因为在实机安装日常使用的时候,发行版对体验的影响才会体现出来,这样我写下的文字就会帮你剩下不少时间。</p><p><strong>对于虚拟机</strong>,你不会在乎用户体验的,安装完新鲜感一过肯定就不打开了,偶尔遇到什么必须要用 Linux 的需求才会突然想起来有这个虚拟机。所以发行版<strong>选择 Ubuntu 即可</strong>,毕竟人气最高。要是对着百度上面刚刚找到的教程一顿猛敲之后,发现发行版不一样,那 Linux 就又风评被害了。</p><p>在安装系统的时候,建议安装时统一使用 English,装好之后再换成中文或者干脆不换。</p><p>对某些很新的硬件,比如 13 代酷睿和 40 系 N 卡 (2023 年),在其他发行版出现兼容性问题的情况下,可以使用 Debian 或者 Arch Linux 等等靠近上游的发行版,他们通常支持得比较好。</p><h2 id="linux-how-to" tabindex="-1">Linux How to? <a class="header-anchor" href="#linux-how-to" aria-label="Permalink to "Linux How to?""></a></h2><h3 id="directory" tabindex="-1">Directory <a class="header-anchor" href="#directory" aria-label="Permalink to "Directory""></a></h3><p>在 Linux 中,文件目录结构与 Windows 完全不同。Windows 存在 C 盘、D 盘等盘符,而在 Linux 中不存在这些划分,最上层的目录是根目录,路径为 <code>/</code> ,并以一个树形结构从此向下一级一级区分。没有盘符,只有路径。虽然可以多分区,但是分区是挂载到某个路径的,而不是分配盘符。用 Windows 的思维去理解就是盘符没了,全部挂进文件夹里面了,从 / 开始是根分区,就像 C 盘,<code>/</code> 底下有 <code>usr</code> <code>home</code> <code>var</code> 等等文件夹,这些文件夹可以是普通文件夹,也可以让其他磁盘分区当这个文件夹。分区还可以挂载到 <code>/media/root/abcd</code> 。这样的好处很明显,就是在路径上面模糊了分区,分区的地位和普通文件夹差不多了,非常简单,对写程序很友好。</p><p>因为舍弃了盘符的概念,一般我们在 Linux 系统上仅仅使用一个挂载到 <code>/</code> 的分区 (简称 <code>/</code> 分区) 或者一个 <code>/</code> 分区和一个 <code>/home</code> 分区。这样分区可以得到充足的空间,所以不会出现 C 盘装满了或者 C 盘文件多导致开机慢的情况,也就没有必要支持自定义的安装目录。</p><p>对于 Linux 的树形文件结构,存在相对路径与绝对路径之分。绝对路径是代表从根路径 <code>/</code> 开始的完整路径,如 <code>/home/testuser/Download</code>。相对路径代表从当前目录,到目标目录的一个部分路径。比如当前你所在的目录为 <code>/home/testuser</code>,那么切换到绝对路径 <code>/home/testuser/Download</code> 的相对路径即为 <code>./Download</code>。其中 <code>./</code> 代表从当前目录,再向下寻找。另外,<code>..</code> 这种两个句点代表的是向上层寻找,比如你当前所在的路径为 <code>/home/testuser/Download</code>,向上寻找到 <code>/home/testuser/Desktop</code> 的相对路径即为 <code>../Desktop</code>。</p><p>当前用户的 home 文件夹简称为 <code>~/</code>,假设我们的用户名是 <code>user</code>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">user@computer:~$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">user@computer:~$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> pwd</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">/home/user</span></span></code></pre></div><h3 id="user" tabindex="-1">User <a class="header-anchor" href="#user" aria-label="Permalink to "User""></a></h3><p>Linux 在设计之初就是一个多用户操作系统,不像潜伏在多用户操作系统里面的纯正单用户操作系统 Windows。</p><p><img src="https://cdn.xyxsw.site/windows-single-user.jpeg" alt=""></p><p>因此,Linux 对于用户和权限的管理比较严格,可能经常要你输 root 密码。</p><p>简单来说,Linux 中存在两类用户。第一类用户即为 root 用户,也称为超级用户,它拥有系统中最高的权限。第二类用户就是除了 root 用户的普通用户,他们可以拥有不同等级的权限。使用 root 权限时需要十分小心。</p><p>一般情况下,我们使用的都是普通用户。但是要进行一些涉及较高权限的操作,比如安装软件和修改系统设置的的时候,我们就会使用 sudo 软件临时切换到 root 用户进行操作。</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 一些例子。</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 当你尝试安装 vim ,却忘记了 sudo</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vim</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">E:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Could</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> not</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> open</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> lock</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> file</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /var/lib/dpkg/lock-frontend</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> -</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> open</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (13: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">Permission</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> denied</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">E:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Unable</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> to</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> acquire</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> the</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> dpkg</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> frontend</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> lock</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (/var/lib/dpkg/lock-frontend), are you root</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 这样就可以安装了</span></span>
|
||
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> sudo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> apt</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vim</span></span></code></pre></div><p>切记,root 权限的使用要小心,不要随便粘贴指令!一条命令就可以干掉整个系统,比如 <code>sudo rm -rf /*</code>!</p><h3 id="本土化" tabindex="-1">本土化 <a class="header-anchor" href="#本土化" aria-label="Permalink to "本土化""></a></h3><p>想要正常使用系统,哈利波特是必须的。建议跟着<a href="https://arch.icekylin.online/guide/rookie/transparent.html" target="_blank" rel="noreferrer">这篇教程</a>走,但是 Debian 系没有这个软件,自己去 Github 上面找这个软件。</p><p>发行版会有一个全局的代理设置,但是有些软件就是不肯自己读取,点名 Firefox。不过好办,分别单独设置就行。</p><p>由于海外的服务器下载慢,我们会把软件源换成国内各个高校的镜像。这点参考镜像站给出的教程。</p><p>输入法一律推荐 fcitx5 搭配 fcitx5-chinese-addons,并打开云拼音。不推荐 rime,太老了。强烈不推荐搜狗,搜狗使用的是 fcitx4 框架,太老了。一般来说 Debian 系的发行版都有一个叫做 im-config 的软件包负责管理输入法,快捷方式名字通常是叫做 Input Method,在这里切换到 fcitx5 就行。Arch Linux 系则需要自己设置环境变量。</p><p>2024 年更新:rime-ice 也是个不错的输入法,并且支持 ibus, Ubuntu 用户也许可以选择,这样不需要动默认输入法设置,虽然我更推荐再装一个 fcitx5。</p><h3 id="如何寻求帮助" tabindex="-1">如何寻求帮助 <a class="header-anchor" href="#如何寻求帮助" aria-label="Permalink to "如何寻求帮助""></a></h3><p>首先阅读<a href="https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md" target="_blank" rel="noreferrer">提问的智慧</a>,这对提升个人素养很有帮助。也有助于和能够提供帮助的人有效交流。</p><p>一般来说,各个发行版都有自己的 Wiki,里面介绍了发行版本身的特点,常用的软件和各种问题的解法。但是有些发行版的 wiki 年久失修,可能会过时或者缺失内容导致无法解决问题。这时候可以其他发行版的 wiki,只要了解发行版之间的差异,自己适度发挥,也能解决问题。推荐的有 <a href="https://wiki.archlinux.org" target="_blank" rel="noreferrer">Arch Linux wiki</a> (神中神,非常推荐) 和 <a href="https://wiki.debian.org" target="_blank" rel="noreferrer">Debian wiki</a> (Debian 系可以看),他们的社区比较活跃,维护比较积极。</p><p>社区是 Linux 当中重要的组成部分。发行版通常有自己的论坛,邮件组和 IRC 频道。如果你确信你面对的是一个全新的问题,网上找不到已有的解决方案。或者你的能力不足以找到解决方案。可以尝试在这些地方求助。保持良好的态度,尽可能详细地描述问题,相信会有志愿者来解答的。</p><h3 id="推荐阅读" tabindex="-1">推荐阅读 <a class="header-anchor" href="#推荐阅读" aria-label="Permalink to "推荐阅读""></a></h3><ul><li><a href="https://arch.icekylin.online/" target="_blank" rel="noreferrer">archlinux 简明指南</a>: 虽然是 Arch Linux 的教程,但是写的很好,其他发行版也能参考。</li><li><a href="https://www.linuxprobe.com/docs/LinuxProbe.pdf" target="_blank" rel="noreferrer">Linux 就该这样学</a>: 不错的书,适合长期看。</li></ul>`,77),o=[t];function r(l,h,p,d,k,c){return e(),i("div",null,o)}const F=a(n,[["render",r]]);export{g as __pageData,F as default};
|