Merge branch 'master' of github.com:E1PsyCongroo/hdu-cs-wiki

This commit is contained in:
focused_xy
2023-11-05 20:22:04 +08:00
174 changed files with 2704 additions and 1483 deletions

View File

@@ -1,102 +1,11 @@
// import { defineConfig } from 'vitepress'
import { withMermaid } from "vitepress-plugin-mermaid-xyxsw";
import mathjax3 from 'markdown-it-mathjax3';
import { main_sidebar, chapter2, chapter3, chapter4, chapter5, chapter6, chapter7, chapter8, chapter9 } from './sidebar.js';
import { nav } from './nav.js';
import PanguPlugin from 'markdown-it-pangu'
import { fileURLToPath, URL } from 'node:url'
import VueMacros from 'unplugin-vue-macros/vite'
const customElements = [
'mjx-container',
'mjx-assistive-mml',
'math',
'maction',
'maligngroup',
'malignmark',
'menclose',
'merror',
'mfenced',
'mfrac',
'mi',
'mlongdiv',
'mmultiscripts',
'mn',
'mo',
'mover',
'mpadded',
'mphantom',
'mroot',
'mrow',
'ms',
'mscarries',
'mscarry',
'mscarries',
'msgroup',
'mstack',
'mlongdiv',
'msline',
'mstack',
'mspace',
'msqrt',
'msrow',
'mstack',
'mstack',
'mstyle',
'msub',
'msup',
'msubsup',
'mtable',
'mtd',
'mtext',
'mtr',
'munder',
'munderover',
'semantics',
'math',
'mi',
'mn',
'mo',
'ms',
'mspace',
'mtext',
'menclose',
'merror',
'mfenced',
'mfrac',
'mpadded',
'mphantom',
'mroot',
'mrow',
'msqrt',
'mstyle',
'mmultiscripts',
'mover',
'mprescripts',
'msub',
'msubsup',
'msup',
'munder',
'munderover',
'none',
'maligngroup',
'malignmark',
'mtable',
'mtd',
'mtr',
'mlongdiv',
'mscarries',
'mscarry',
'msgroup',
'msline',
'msrow',
'mstack',
'maction',
'semantics',
'annotation',
'annotation-xml',
];
// https://vitepress.dev/reference/site-config
export default withMermaid({
lang: 'zh-CN',
@@ -104,7 +13,28 @@ export default withMermaid({
description: "HDU 计算机科学讲义",
lastUpdated: true,
cleanUrls: true,
head: [['script', { async: "async", src: 'https://umami.hdu-cs.wiki/script.js', "data-website-id": "3f11687a-faae-463a-b863-6127a8c28301", "data-domains": "wiki.xyxsw.site,hdu-cs.wiki" }]],
head: [
['script', { async: "async", src: 'https://umami.hdu-cs.wiki/script.js', "data-website-id": "3f11687a-faae-463a-b863-6127a8c28301", "data-domains": "wiki.xyxsw.site,hdu-cs.wiki" }],
['link', { rel: 'icon', href: '/favicon.ico' }],
["meta", { "name": "description", "content": "HDU计算机科学讲义" }],
["meta", { "property": "og:url", "content": "https://hdu-cs.wiki/" }],
["meta", { "property": "og:type", "content": "website" }],
["meta", { "property": "og:title", "content": "HDU-CS-WIKI | HDU-CS-WIKI" }],
["meta", { "property": "og:description", "content": "HDU计算机科学讲义" }],
["meta", { "property": "og:image", "content": "https://cdn.xyxsw.site/og-img.png" }],
["meta", { "name": "twitter:card", "content": "summary_large_image" }],
["meta", { "property": "twitter:domain", "content": "hdu-cs.wiki" }],
["meta", { "property": "twitter:url", "content": "https://hdu-cs.wiki/" }],
["meta", { "name": "twitter:title", "content": "HDU-CS-WIKI | HDU-CS-WIKI" }],
["meta", { "name": "twitter:description", "content": "HDU计算机科学讲义" }],
["meta", { "name": "twitter:image", "content": "https://cdn.xyxsw.site/og-img.png" }],
["link", { "rel": "apple-touch-icon", "sizes": "180x180", "href": "/apple-touch-icon.png" }],
["link", { "rel": "icon", "type": "image/png", "sizes": "32x32", "href": "/favicon-32x32.png" }],
["link", { "rel": "icon", "type": "image/png", "sizes": "16x16", "href": "/favicon-16x16.png" }],
["link", { "rel": "manifest", "href": "/site.webmanifest" }],
["link", { "rel": "mask-icon", "href": "/safari-pinned-tab.svg", "color": "#5bbad5" }],
["meta", { "name": "msapplication-TileColor", "content": "#2b5797" }],
],
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
nav: nav(),
@@ -145,17 +75,9 @@ export default withMermaid({
markdown: {
lineNumbers: true,
config: (md) => {
md.use(mathjax3);
md.use(PanguPlugin);
},
},
vue: {
template: {
compilerOptions: {
isCustomElement: (tag) => customElements.includes(tag),
},
},
math: true
},
sitemap: {
hostname: 'https://hdu-cs.wiki'

View File

@@ -243,11 +243,13 @@ export function chapter3() {
collapsed: true,
items: [
{ text: '3.Y 附加模块Linux', link: '/3.编程思维体系构建/3.Y 附加模块Linux' },
{ text: '3.Y.1VMware的安装与安装Ubuntu22.04系统', link: '/3.编程思维体系构建/3.Y.1VMware的安装与安装Ubuntu22.04系统' },
{ text: '3.Y.2WSL的安装', link: '/3.编程思维体系构建/3.Y.2WSL的安装' },
{ text: '3.Y.3Linux初探索', link: '/3.编程思维体系构建/3.Y.3Linux初探索' },
{ text: '3.Y.4Vim初探索', link: '/3.编程思维体系构建/3.Y.4Vim初探索' },
{ text: '3.Y.5linux小任务', link: '/3.编程思维体系构建/3.Y.5linux小任务' },
{ text: '3.Y.1Linux概念普及', link: '/3.编程思维体系构建/3.Y.1Linux概念普及' },
{ text: '3.Y.2双系统安装和发行版推荐', link: '/3.编程思维体系构建/3.Y.2双系统安装和发行版推荐' },
{ text: '3.Y.3VMware的安装与安装Ubuntu22.04系统', link: '/3.编程思维体系构建/3.Y.3VMware的安装与安装Ubuntu22.04系统' },
{ text: '3.Y.4WSL的安装', link: '/3.编程思维体系构建/3.Y.4WSL的安装' },
{ text: '3.Y.5Linux初探索', link: '/3.编程思维体系构建/3.Y.5Linux初探索' },
{ text: '3.Y.6Vim初探索', link: '/3.编程思维体系构建/3.Y.6Vim初探索' },
{ text: '3.Y.7linux小任务', link: '/3.编程思维体系构建/3.Y.7linux小任务' },
]
}
]

View File

@@ -5,17 +5,7 @@
/**
* Colors
* -------------------------------------------------------------------------- */
@import url('https://fonts.loli.net/css2?family=Noto+Sans+Mono:wght@400&family=Noto+Sans+SC:wght@400;500;700&display=swap');
@font-face {
font-family: 'Noto Color Emoji';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://gstatic.loli.net/s/notocoloremoji/v25/Yq6P-KqIXTD0t4D9z1ESnKM3-HpFabsE4tq3luCC7p-aXxcn.9.woff2) format('woff2');
unicode-range: U+200d, U+261d, U+2620, U+2639-263a, U+2665, U+270a-270d, U+2728, U+2763-2764, U+2b50, U+fe0f, U+1f31a-1f31f, U+1f32b, U+1f383, U+1f389, U+1f3fb-1f3ff, U+1f440-1f450, U+1f463-1f465, U+1f479-1f47b, U+1f47d-1f480, U+1f485, U+1f48b-1f48c, U+1f493-1f49f, U+1f4a4-1f4a6, U+1f4a8-1f4ab, U+1f4af, U+1f525, U+1f573, U+1f590, U+1f595-1f596, U+1f5a4, U+1f5e3, U+1f600-1f644, U+1f648-1f64a, U+1f64c, U+1f64f, U+1f90c-1f925, U+1f927-1f92f, U+1f932-1f933, U+1f970-1f976, U+1f978-1f97a, U+1f9a0, U+1f9b4-1f9b7, U+1f9bb, U+1f9be-1f9bf, U+1f9d0, U+1f9e0-1f9e1, U+1fa75-1fa79, U+1fac0-1fac2, U+1fae0-1fae6, U+1fae8, U+1faf0-1faf8;
}
@import url('https://fonts.googleapis.com/css2?family=Noto+Color+Emoji&family=Noto+Sans+Mono:wght@400;600;700&family=Noto+Sans+SC:wght@400;600;700&display=swap');
.dark .vp-doc a,#loading, .dark .vp-doc a>code, .dark .VPNavBarMenuLink.VPNavBarMenuLink:hover, .dark .VPNavBarMenuLink.VPNavBarMenuLink.active, .dark .link.link:hover, .dark .link.link.active, .dark .edit-link-button.edit-link-button, .dark .pager-link .title {
color: var(--vp-c-brand-3);

View File

@@ -3,6 +3,7 @@
> author: ek1ng
>
> 本文编写自 2021.07.31,也许有些内容已经过时,请选择性参考。
## 选课原则
### 要选哪些课
@@ -23,6 +24,7 @@
:::
### 选什么课好
在杭电换客群或者与认识的室友、同学、朋友等等交流开展某课程的某老师教学情况,打听情报以选择合适的老师。此处的情报通常指老师的教学方式如何,采取怎样的签到方式等等。如果曾经上过某老师开展的 a 课程,那么通常对于他开展的 b 课程,签到情况和给分情况都仍然能够适用,但是教学情况则未必。
### 常见问题 Q&A
@@ -46,26 +48,26 @@ A3大一上选课的安排在最后时间段体育被默认选了太极拳
### 选课背景
2021年上学期的选课中杭电更换了正方全新的选课平台http://newjw.hdu.edu.cn 目前选课平台的特性为在选课时间内开放至公网ip可以访问可以并发请求~~并不会网页卡崩~~,抢课全靠手速。
2021 年上学期的选课中,杭电更换了正方全新的选课平台 <http://newjw.hdu.edu.cn>,目前选课平台的特性为,在选课时间内开放至公网 ip 可以访问,可以并发请求,~~并不会网页卡崩~~,抢课全靠手速。
:::tip
1. 鉴于杭电复杂的网络环境,在**内网**抢课甚至不如**公网**😅,所以建议在寝室里连上网线(公网)抢课。
鉴于杭电复杂的网络环境,在**内网**抢课甚至不如**公网**😅,所以建议在寝室里连上网线(公网)抢课。
2. **网页会卡崩**刚开始选课0~5分钟系统会未响应甚至将你踢出登录还会让你浏览器爆掉显示 *欧呦,崩溃啦* 之类的字样,一切听天由命。
1. **网页会卡崩**,刚开始选课 0~5 分钟系统会未响应甚至将你踢出登录,还会让你浏览器爆掉显示 *欧呦,崩溃啦* 之类的字样,一切听天由命。
:::
## 具体技巧
#### 系统开放前
### 系统开放前
通常系统开放前可以查询开课情况,那么可以根据开课情况自己提前规划安排想上的课程。
#### 系统开放时
### 系统开放时
##### 第一轮选课、第二轮选课开放系统时
#### 第一轮选课、第二轮选课开放系统时
提前在粘贴板中剪切/复制第一手要抢的课程,并且在选课平台开放时间前几秒,不停点击刷新,直至选课平台显示的内容不为非选课时间而是可以搜索,粘贴课程名并且点击抢课即可第一手抢到最想抢的课程,再依次抢接下来准备上的课。若课表上已经被系统默认选的课占了想要选的课的位置,那么就需要先退课再选课。
##### 假期以及开学前三周
#### 假期以及开学前三周
这时候会有同学因为不想选某门课程或者通过将课卡在其他人号上想在假期“转移”到自己号上,选课系统中的课程余量就会时不时出现波动,此时可以上去系统看看说不定能捡漏哦。签课以及扩学分在开学前三周进行,请关注学校通知并且通过签课选上自己没能选上的课程。

View File

@@ -20,7 +20,7 @@
- [uTools](https://www.u.tools/) :自由组合插件集(最好用的是 Alt+Space 搜索功能)非常强大,比如安装 fileshare 可以在局域网共享超大文件,而且是跨平台的。
- [PowerToys](https://github.com/microsoft/PowerToys) :微软官方出品,包含诸多功能,解决 windows 下一些小痛点。
- [Connect to Work or Games from Anywhere | Parsec](https://parsec.app/) :串流小工具,简单来说你就是可以在手机上玩电脑了,远程操作,极致体验~~(也可以玩游戏)~~
- [VMware workstation](../3.%E7%BC%96%E7%A8%8B%E6%80%9D%E7%BB%B4%E4%BD%93%E7%B3%BB%E6%9E%84%E5%BB%BA/3.Y.1VMware%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E5%AE%89%E8%A3%85Ubuntu22.04%E7%B3%BB%E7%BB%9F.md):虚拟机就用它!但是最好自己找找盗版,正版要钱。
- [VMware workstation](../3.%E7%BC%96%E7%A8%8B%E6%80%9D%E7%BB%B4%E4%BD%93%E7%B3%BB%E6%9E%84%E5%BB%BA/3.Y.3VMware%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E5%AE%89%E8%A3%85Ubuntu22.04%E7%B3%BB%E7%BB%9F.md):虚拟机就用它!但是最好自己找找盗版,正版要钱。
- [cloc](https://github.com/AlDanial/cloc): 统计代码行数(空白行,注释行,代码行)的小工具
- mv & cp 命令显示进度条在复制大文件的时候非常友好可以通过以下脚本安装Linux 系统)
@@ -58,7 +58,7 @@ rm coreutils-8.32 coreutils-8.32.tar.xz
- [MarkText](https://github.com/marktext/marktext) 免费的,平替 Typora。
- [MiaoYan](https://github.com/tw93/MiaoYan) 仅支持 apple界面挺清爽。
- [思源笔记](https://b3log.org/siyuan/) 一个国产开源的笔记/知识库软件,优势是 本地化、双链、Markdown 语法,与 Obsidian 定位相似,但 Geek 成分和自定义空间相对更高
- [Zotero](https://www.zotero.org/):协助文献阅读还有笔记,支持与平板同传(同时他是开源的,所以可以添加一些插件)
- [Zotero](https://www.zotero.org/):协助文献阅读还有记录笔记,支持与平板同传(同时他是开源的,所以可以添加一些插件)
![](https://cdn.xyxsw.site/boxcnO1PEsVd4KY7reeU64spShf.jpg)

View File

@@ -47,10 +47,10 @@ NJU-ICS-PA 南京大学计算机系统基础
## 我总觉得文章没写清楚
你毕业后进入公司/课题组, 不会再有讲义具体地告诉你应该做什么,总有一天你需要在脱离讲义的情况下完成任务。我们希望你现在就放弃"讲义和框架代码会把我应该做的一切细节清楚地告诉我"的幻想,为自己的成长负起责任:
你毕业后进入公司/课题组不会再有讲义具体地告诉你应该做什么,总有一天你需要在脱离讲义的情况下完成任务。我们希望你现在就放弃"讲义和框架代码会把我应该做的一切细节清楚地告诉我"的幻想,为自己的成长负起责任:
- 不知道在说什么,说明你对知识点的理解还不够清楚,这时候你应该去看书/看手册
- 不知道要做什么/怎么做, 说明你的系统观好是零碎的,理解不了系统中各个模块之间的联系,这时候你应该 RTFSC, 尽自己最大努力梳理并理解系统中的一切细节
- 不知道要做什么/怎么做说明你的系统观好是零碎的,理解不了系统中各个模块之间的联系,这时候你应该 RTFSC, 尽自己最大努力梳理并理解系统中的一切细节
- bug 调不出来,说明你不清楚程序正确的预期行为,你需要 RTFSC 理解程序应该如何运行; 此外也说明你不重视工具和方法的使用,你需要花时间去体验和总结它们
如果你发现自己有以上情况,你还是少抱怨,多吃苦吧。

View File

@@ -14,6 +14,10 @@
4.Web[CNote](https://github.com/coderit666/CNote)(例子密集,学习曲线平滑,覆盖面广且具有深度)
::: tip 📥
《C Primer Plus》第六版中文版216MB附件下载 <Download url="https://cdn.xyxsw.site/files/C%20Primer%20Plus%E7%AC%AC6%E7%89%88%20%E4%B8%AD%E6%96%87%E7%89%88.pdf"/>
:::
5.Book**教材替换用书——《C Primer Plus》**(基础且深入的恰到好处,有一定拓展,可能后面的章节有点难懂,是一本不可多得的好书,不要忽视课本习题及 Projects
6.MOOC[Introductory C Programming 专项课程](https://www.coursera.org/specializations/c-programming)**全英文**,好处是涉及到计算机思维,包含许多常用 tools 的教学例如 git、make、emacs、gdb视频讲解结合文档阅读对于 C 的重要核心知识讲解透彻,难度颇高,建议用作提升)

View File

@@ -9,9 +9,9 @@
所以,为了表示这个物品,我们可以使用如下[结构](http://en.wikipedia.org/wiki/Struct_(C_programming_language))
- **description: ****对物品的描述**
- **tag: ****物品的类型**
- **location: ****物品所在****的位置。这是****对应****上一章中定义的****物品****位置****的指针。**
- **\*description: 对物品的描述**
- **\*tag: 物品的类型**
- **\*location: 物品所在的位置。这是对应上一章中定义的物品位置的指针。**
```c
struct object {
@@ -104,9 +104,9 @@ for (obj = objs; obj < objs + 5; obj++)
但是,对象通常具有同样有效的其他特征:
- **Locations通过****道路****连接(将在后面介绍)。如果一个物体无法通过一条通道到达,那么它就不是一个位置。就是这么简单。**
- **Items玩家唯一可以捡起的物品;****可以给他们整一个重量的属性**
- **Actors玩家唯一可以与之交谈交易战斗的对象;当然,前提是他们还活着!****可以加一个 HP 属性**
- **Locations通过道路连接(将在后面介绍)。如果一个物体无法通过一条通道到达,那么它就不是一个位置。就是这么简单。**
- **Items玩家唯一可以捡起的物品;可以给他们整一个重量的属性**
- **Actors玩家唯一可以与之交谈交易战斗的对象;当然,前提是他们还活着!可以加一个 HP 属性**
我们还要向数组中添加一个对象:玩家自己。
@@ -163,7 +163,7 @@ OBJECT objs[] = {
};
```
**注意:**要编译此模块,编译器*必须*支持 Constant folding。这排除了一些更原始的编译器如 [Z88DK](http://en.wikipedia.org/wiki/Z88DK)。
<strong>注意:</strong>要编译此模块,编译器*必须*支持 Constant folding。这排除了一些更原始的编译器如 [Z88DK](http://en.wikipedia.org/wiki/Z88DK)。
以下模块将帮助我们找到与指定名词匹配的对象。

View File

@@ -32,7 +32,7 @@
如果你可以在不参考下面内容的情况下就写出基本内容会有很大收获的
:::
## **parsexec.c**
## parsexec.c
```c
#include <stdbool.h>
@@ -91,7 +91,7 @@ bool parseAndExecute(char *input)
新命令由以下模块实现。
## **inventory.h**
## inventory.h
```c
extern void executeGet(const char *noun);
@@ -101,7 +101,7 @@ extern void executeGive(const char *noun);
extern void executeInventory(void);
```
## **inventory.c**
## inventory.c
```c
#include <stdio.h>

View File

@@ -127,7 +127,7 @@ type为commit的类型
style: 代码格式修改
test: 测试用例修改
chore: 其他修改, 比如构建流程, 依赖管理.
pref: 性能提升的修改
perf: 性能提升的修改
build: 对项目构建或者依赖的改动
ci: CI 的修改ci是自动构建 感兴趣可以搜搜 github workflow
revert: revert 前一个 commit 撤销前一个commit
@@ -145,6 +145,8 @@ subject为commit概述
其中详细内容可以参照 [约定式提交](https://www.conventionalcommits.org/zh-hans/v1.0.0/)
附上 [语义化版本 2.0.0 规范](https://semver.org/lang/zh-CN/)
你可以使用 `git log` 查看存档记录,你应该能看到刚才编辑的注释。
### 读档(回溯到某一个 commit

View File

@@ -78,7 +78,7 @@ StopIteration
**Analogy**: An iterable is like a book (one can flip through the pages) and an iterator for a book would be a bookmark (saves the position and can locate the next page). Calling `iter` on a book gives you a new bookmark independent of other bookmarks, but calling `iter` on a bookmark gives you the bookmark itself, without changing its position at all. Calling `next` on the bookmark moves it to the next page, but does not change the pages in the book. Calling `next` on the book wouldn't make sense semantically. We can also have multiple bookmarks, all independent of each other.
## 生成器:懒人迭代器!
## 生成器:懒人迭代器
```python
def test_iterator():

View File

@@ -52,10 +52,12 @@
任务:装 Ubuntu22.04 或者 debian如果你想删了自己的系统可以试试 deepin当然也会有一些兼容性问题不过会支持一些中文软件
tip1推荐这个 [3.Y.1VMware 的安装与安装 ubuntu22.04 系统](3.Y.1VMware%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E5%AE%89%E8%A3%85Ubuntu22.04%E7%B3%BB%E7%BB%9F.md)
tip1推荐这个 [3.Y.3VMware 的安装与安装 ubuntu22.04 系统](3.Y.3VMware%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E5%AE%89%E8%A3%85Ubuntu22.04%E7%B3%BB%E7%BB%9F.md)
tip2可以使用 WSL[3.Y.2WSL 的安装](3.Y.2WSL%E7%9A%84%E5%AE%89%E8%A3%85.md)<del>但是我更建议实装到电脑上双系统之类的</del>,正好锻炼一下<del>装系统</del>倒腾的能力。大可不必删了 windows 换成 ubuntu。
tip2可以使用 WSL[3.Y.4WSL 的安装](3.Y.4WSL%E7%9A%84%E5%AE%89%E8%A3%85.md)<del>但是我更建议实装到电脑上双系统之类的</del>,正好锻炼一下<del>装系统</del>倒腾的能力。大可不必删了 windows 换成 ubuntu。
tip3前两个 tip 二选一
tip3前两个 tip 二选一
在开始之前,建议先阅读[3.Y.1Linux概念普及](3.Y.1Linux概念普及.md),了解一些基本概念,**免得把系统搞坏了**,尤其是 WSL 有可能把 Windows 也一块带走,**之前就有群友做到过**。
任务:阅读 GUI 与命令行之间对比的文章,尝试开始阅读英文文章

View File

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

View File

@@ -0,0 +1,613 @@
# Distro
这篇文章是关于双系统的发行版推荐,如果只是想尝试 Linux, 暂时没有长期使用的打算,可以直接跳过。
## 前言
我接触桌面版 Linux 有些年头了。
Linux 省了我不少时间,也花了我不少时间。也算用出点心得了,知道 Linux 有多必要,也知道有多坑。
曾经我试图寻找一个“最好的”版本向新人推荐,事实证明这样的想法是走了弯路。
现在我敢说没有一个发行版能完全做到“新手友好”,都或多或少存在一点坑。与其寻找一个“终极”发行版,不如列一个发行版选择清单,可以根据自己的需求选择。给常见坑摘要,提供修复方法,或者给出某个发行版出现致命问题时给出替代选择。争取让入门 Linux 难度降下来。
## Notice
::: warning
再次声明:这篇文章是关于双系统的发行版推荐,如果只是想尝试 Linux, 暂时没有长期使用的打算,可以直接跳过。
请仔细阅读本文,并按照步骤操作,否则可能会**导致系统无法使用甚至丢失数据**。建议提前**备份数据**,避免手误。
:::
双系统安装时,**关闭快速启动,关闭安全启动,关闭 Bitlocker**
已知快速启动开启时Windows 会锁定无线网卡和硬盘等硬件,导致 Linux 无法使用。关闭快速启动可以在主板或者 Windows 上面设置。建议在 Windows 上面设置。[如何关闭快速启动(知乎)](https://zhuanlan.zhihu.com/p/589927741)
大部分 Linux 发行版不支持安全启动,因为要给微软交保护费。事实上这个功能对安全性没有作用,只是阻止了没交保护费的系统的启动而已。请在主板的 BOIS 设置内关闭。
Bitlocker 可能会自杀最好关掉。如果你很确信自己有加密需求,建议提前备份所有重要数据,并准备 [WePE](https://www.wepe.com.cn/download.html) 和 [Windows 安装镜像](https://www.microsoft.com/en-us/software-download/windows10),随时准备修复。
我们始终建议使用包管理器。目前已知的除了 VSCode 需要手动安装,其他的都尽量使用系统自带和 Flatpak。
## USB-live
在开始之前,请准备一个空的 U 盘。
建议使用 [Ventoy](https://www.ventoy.net/cn/index.html) 这款工具制作可启动 U 盘,这样可以直接把 ISO 文件拖进 U 盘,在先后安装不同发行版的时候不需要反复烧录 U 盘。
但是这个方案无法使用某些 iso ,比如 Debian 的 DVD 镜像就会因为找不到挂载点而失败。这时候你可能需要使用 [rufus](https://rufus.ie/zh/) 对 U 盘进行烧录。
## Beginner
列出常见的开箱即用发行版,不一定推荐,但是总觉得得提两句,方便选择。
### Debian based
由于大部分 Debian 系发行版使用同样的安装程序,只有一些细微的差别,所以我只给出 Linux Mint 的详细安装教程,其他发行版提出一些要点即可举一反三。
这类发行版使用的都是 apt 包管理器,大多数软件都是互通的。
#### Linux Mint
就我个人认为,对新手来说 Linux Mint 是个不错的入门发行版。它基于 Ubuntu 软件生态好。Cinnamon 桌面可能不是很惊艳,但是简洁直观。
Mint 对很多需要打命令的操作都做了 GUI,这样新手更容易使用。这是我见过为数不多的把开箱即用和可定制结合的比较好的主流发行版。
首先去 Mint 官网 <https://linuxmint.com/download.php> 下载 Cinnamon 版本。如果你使用新硬件可以下载 Cinnamon Edge。
点击 Download 之后会跳转到下载页面,你可以下拉列表选择 China 源进行下载,速度会很快。
如果有 Windows 存在的情况下Mint 可以自动选择一个最大的分区,让你划出一定大小的空间用来安装。如果你分了很多盘,你可以在 Windows 下提前使用 Diskgenius 之类的分区软件整理你的分区,把剩余空间集中到一个盘上面,好让 Mint 自动缩小你想要缩小的盘,而不是手动指定。操作页面就像这样。
![mint windows size](https://cdn.xyxsw.site/mint-windows-size.png)
##### 安装
用手机打开这个教程,插上你的 U 盘,关机。我们就可以开始安装了。
首先要启动到 U 盘,这个请自行查阅你们的电脑的启动方法。如果成功,你就可以看到这个页面。按下回车,耐心等待,就可以进入安装页面了。在这个页面按下回车。
![boot](https://cdn.xyxsw.site/mint-install-1.png)
不久就进入这个页面。打开左上角的安装程序可以进行安装。如果使用 Ventoy 让你 umount 什么点确定就可以了。
![live](https://cdn.xyxsw.site/mint-install-2.png)
建议使用英文进行安装,以后自己手动设置中文,这样配置不容易出错。所以这里点击 Continue 就行
![language](https://cdn.xyxsw.site/mint-install-3.png)
continue
![keyboard](https://cdn.xyxsw.site/mint-install-4.png)
勾选,然后 continue. 这样 mp4 一类的格式就可以默认正常打开。
![multimedia](https://cdn.xyxsw.site/mint-install-5.png)
由于我这里是虚拟机,只有清空磁盘的选项。你们如果已经有 Windows 的机子可以选择 install alongside Windows。
![install type](https://cdn.xyxsw.site/mint-install-6.png)
在地图上找到中国,点击。
![location](https://cdn.xyxsw.site/mint-install-7.png)
输入你的用户名和密码。密码建议别太简单,以后如果要跑公网服务给打烂了就不好了。这里的密码就是反面教材,字典两分钟打爆的那种。
![user](https://cdn.xyxsw.site/mint-install-8.png)
等待安装。
![installing](https://cdn.xyxsw.site/mint-install-9.png)
你可以查看安装程序的输出。
![still installing](https://cdn.xyxsw.site/mint-install-10.png)
准备重启。
![install complete](https://cdn.xyxsw.site/mint-install-11.png)
##### 配置
第一次启动。可以看到画风还是很贴近 Windows 的。
![first boot](https://cdn.xyxsw.site/mint-install-12.png)
默认使用的软件源在国外,下载很慢,我们要换成国内源。
Linux Mint 的很多操作都是有对应的软件的的,非常方便。通过按 Win 键左下角的启动菜单,直接搜索名字就能打开相应的软件。很多人从 Windows 那里带来了放一桌面的快捷方式的习惯。Linux 的软件一般不放桌面快捷方式,而是通过菜单打开,这样更清爽高效。
在左下角搜索 software sources, 进入换源页面。其他软件也可以用这样的方式打开。
![software source](https://cdn.xyxsw.site/mint-install-13.png)
输入密码。
![opening](https://cdn.xyxsw.site/mint-install-14.png)
分别将 Main 和 Base 的源都换成国内源。我这里换成中科大的源,你们也可以换其他的。
![initial source](https://cdn.xyxsw.site/mint-install-15.png)
换源的页面长这样,可以点击选择,然后 右下角 Apply 即可
![select mirror](https://cdn.xyxsw.site/mint-install-16.png)
这里选 Main 的源。
![USTC](https://cdn.xyxsw.site/mint-install-17.png)
Base 的源。
![next mirror](https://cdn.xyxsw.site/mint-install-18.png)
可以看到源换好了,按下 OK 就可以保存更改。
![mirror](https://cdn.xyxsw.site/mint-install-19.png)
接下来就是安装输入法。打开 Synaptic 包管理器,这是一个 apt 的 GUI 页面,比较适合新手。点开 Search, 输入 fcitx5搜索。
![install fcitx5](https://cdn.xyxsw.site/mint-install-20.png)
勾选 fcitx5 在弹出的窗口点击确定。然后勾选 fcitx5-chinese-addons。因为 fcitx5 只是一个框架,输入法在 fcitx5-chinese-addons 里面,所以两个都要安装。
点击左上方的 Apply 就可以安装了。
![select fcitx5 and install](https://cdn.xyxsw.site/mint-install-21.png)
安装完成之后,打开 input method将输入法从 none 切换到 fcitx5, 保存。
![change input method](https://cdn.xyxsw.site/mint-install-22.png)
现在已经切换成功了。
![fcitx5](https://cdn.xyxsw.site/mint-install-23.png)
打开 Fcitx5 Configuration在右侧的可用输入法页面中搜索 Pinyin选中点击两个分页面中间的左箭头即可添加 pinyin 到 fcitx5. 然后点击下方 Apply 即可。
![add pinyin](https://cdn.xyxsw.site/mint-install-24.png)
可以点击 Global Options 的标签页来修改快捷键。
![global options](https://cdn.xyxsw.site/mint-install-25.png)
下一步,在 Language Settings 里面修改当前的语言为中文。
![langauge settings](https://cdn.xyxsw.site/mint-install-26.png)
如果你是 Nvidia 显卡,现在可以打开 Driver Manager 安装 Nvidia 的驱动。我因为是虚拟机截不到图。建议 40 系显卡使用 525 版本的驱动,而不是他的推荐的 535,亲测崩溃。
![setting up driver](https://cdn.xyxsw.site/mint-install-27.png)
这些都完成了就可以重启了。重启之后会问你要不要更新路径,选择保留就的名称(Keep Old Names).这很重要,如果你不想在 bash 中 cd 来 cd 去的时候切换输入法的话。
![next boot](https://cdn.xyxsw.site/mint-install-28.png)
![fcitx5 font size](https://cdn.xyxsw.site/mint-install-29.png)
![flatpak change mirror](https://cdn.xyxsw.site/mint-install-30.png)
![boot](https://cdn.xyxsw.site/mint-install-31.png)
剩下就是一些安装后常用的操作了。Mint 默认自带 Flatpak所以也不需要手动安装了。
#### Ubuntu
Ubuntu 可能是最热门的发行版,某些情况下提到 Linux 就是 Ubuntu。但是 Ubuntu 有时候会作出对开发者而言比较迷惑的操作。
wiki 已有安装教程,我就不自己写了。
那么如何配置?
##### 卸载 snap
首先卸载 Snap 。注意这样会直接干掉 Firefox所以确保你已经阅读下面所有内容再开始操作。可以先复制到文本编辑器当中。
打开 Software Update(软件与更新),修改 ppa`http://ppa.launchpad.net` 换成 `https://launchpad.proxy.ustclug.org`。这是为了后面安装 Firefox 做准备
![](https://cdn.xyxsw.site/ubuntu-ppa.png)
关闭这个窗口,打开终端,输入
```bash
sudo systemctl disable snapd.service
sudo systemctl disable snapd.socket
sudo systemctl disable snapd.seeded.service
sudo snap remove firefox
sudo snap remove snap-store
sudo snap remove gtk-common-themes
sudo snap remove gnome-3-38-2004
sudo snap remove core18
sudo snap remove snapd-desktop-integration
sudo rm -rf /var/cache/snapd/
sudo apt autoremove --purge snapd
rm -rf ~/snap
```
接着禁用 firefox 的 snap。
打开配置文件:
```bash
sudo nano /etc/apt/preferences.d/firefox-no-snap
```
在文件中粘贴以下内容,保存:
```text
Package: firefox*
Pin: release o=Ubuntu*
Pin-Priority: -1
```
把 Firefox 请回来
```bash
sudo add-apt-repository ppa:mozillateam/ppa
sudo apt update
sudo apt install firefox
```
##### 安装输入法
参考[Ubuntu22.04安装Fcitx5中文输入法知乎](https://zhuanlan.zhihu.com/p/508797663)。基本都可以照做,但是不要跟着他往 `~/.bash_profile``/etc/profile` 里面丢垃圾。环境变量要写到 `~/.pam_environment` 里面,内容如下,不要和他一样带 `export`
```text
XMODIFIERS=@im=fcitx
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
```
提示一下,`~/` 是当前用户文件夹的简称,假如用户名是 `user`,对应的路径就是 `/home/user/`
#### Pop! OS
这个不是很热门,感觉也一般,只是带了 N 卡的开箱支持,所以 N 卡用户不行可以试试看。
Pop! OS 的安装程序会直接无视 Windows建议先在 Windows 下面用 Diskgenius 之类的软件划出一个 1G 的 FAT32 分区和一个 200G 以上的 EXT4 分区,然后在安装选项里面选择高级选项,把 FAT32 分区作为 EFIEXT4 分区作为 `/`
#### Zorin OS
不得不吐槽这帮人把时间都用到魔改 Gnome 外观上面了。到现在还基于 Ubuntu focal, 都 2023 年了。连装个 fcitx5 都费劲。
自带 Wine 支持,听说不错,我反正“网络不好”没安装上。
#### MX Linux
distrowatch 上面排名挺高,但是结合发行版实际情况感觉很有刷榜嫌疑。没有很肯定的理由选择的话,还是用 Mint 吧。
### Arch based
因为 Arch Linux 太强势,这里系列主要用的比较多的就是 Manjaro所以先只写 Manjaro 。后面可能会继续添加。
#### Manjaro
基于 Arch Linux 的开箱即用的发行版,有 Arch Linux 的部分优点,而且对新手更加易用。
有过忘记更新证书的黑历史,不过这两年消停会了。
安装过程如图。
![](https://cdn.xyxsw.site/manjaro-1.png)
![](https://cdn.xyxsw.site/manjaro-2.png)
![](https://cdn.xyxsw.site/manjaro-3.png)
![](https://cdn.xyxsw.site/manjaro-4.png)
![](https://cdn.xyxsw.site/manjaro-5.png)
这里要留意一下
![](https://cdn.xyxsw.site/manjaro-6.png)
如果有 Windows 这么选
![](https://cdn.xyxsw.site/manjaro-install-alongside.png)
![](https://cdn.xyxsw.site/manjaro-7.png)
![](https://cdn.xyxsw.site/manjaro-8.png)
![](https://cdn.xyxsw.site/manjaro-9.png)
安装完成,重启。
输入法是没有安装的,自己安装。
```zsh
sudo pacman -S fcitx5 fcitx5-configtool fcitx5-qt fcitx5-gtk fcitx5-chinese-addons kcm-fcitx5 fcitx5-lua
kate ~/.pam_environment
```
kate 会打开 `~/.pam_environment`,接着把下面的环境变量写进去:
```text
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
```
### Others
#### Deepin
目前还是 Debian 系,鉴于他们官宣要脱离 Debian那我就放 Other 里面了。
Deepin 的本土化做的很不错,支持一些国内常用的软件。
但是总是让我感觉不够 Linux,手感比较奇怪。定位类似产品而不是工具。如果想要在国内替代 Windows 可以试试看。我之前使用的时候太不稳定,小 bug 一堆。现在不知道好点没有。我建议写程序还是少用,设计哲学不一样,容易把自己带偏。
#### UOS
反正不是给我们用的。毕竟 root 权限还要注册他们的账号登陆,没绷住。
![](https://cdn.xyxsw.site/uos-3.png)
![](https://cdn.xyxsw.site/uos-4.png)
顺便说下我至今没找到 UOS 的源码,只看到[一篇干巴巴的新闻](https://www.zgswcn.com/article/202212/202212211344581036.html)声称“开源了开源了真的在开源了”。也就欺负 Linux Foundation 不打跨国官司。本来不想挂人的,但是[如果 UOS 用户就这素质](https://bbs.chinauos.com/post/7543)我真忍不了:
![troll](https://cdn.xyxsw.site/uos-troll.png)
## Advanced(Debian, Arch Linux, etc.)
面向桌面用户的进阶发行版。Red Hat 根本看不上个人用户,所以我就不自找麻烦了。
### Debian
Debian 的招牌就是稳定。在服务端这个优点非常明显。虽然在桌面端有些软件拖后腿导致它没那么稳但是比起其他发行版还是更加稳定的。Debian 主要面向专业人士,桌面端不够开箱即用,需要很多额外的配置。祖传的安装界面对新手也不太友好。好在有 live 版本可以使用。
Debian 的兼容性非常优秀,在其他发行版挂掉的情况下面都能稳定跑。如果遇到兼容性问题那就直接上 Debian 吧,再怎么样也比 Arch Linux 容易安装一点。而且安装配置结束基本就不会再挂了。最近的 11 和 12 两个大版本一改老旧的形象,积极拥抱新事物,值得尝试。
不建议使用 Ventoy 启动 Debian 的镜像,因为 Ventoy 和 Debian 都很喜欢 hack两者加起来容易爆炸。老老实实用 Rufus 烧录空 U 盘吧。
官网下的 ISO 文件是真的多。我这里推荐下载 [Live 镜像](https://mirrors.ustc.edu.cn/debian-cd/current-live/amd64/iso-hybrid/)因为安装相对来说比较方便直观。。下载页面很传统而且可选的很多但是不要紧kde 和 gnome 二选一即可,老爷机就 lxqt。
如果你的 Live 镜像出了什么锅炸掉了,可以试试 [DVD 镜像](https://mirrors.ustc.edu.cn/debian-cd/current/amd64/iso-dvd/),祖传的安装页面很不友好,但有时候是唯一的选择。
#### Live 安装
这里以 Live KDE 为例子Gnome 也是一样的。
首先是祖传的选择系统。直接回车。
![](https://cdn.xyxsw.site/debian-live-1.png)
进来之后是不是很懵?哪里有 Install 呢?多半因为打包的志愿者忘了放快捷方式,自己左下角菜单点出来就好了。
![](https://cdn.xyxsw.site/debian-live-2.png)
这样点出来。
![](https://cdn.xyxsw.site/debian-live-3.png)
还要输入密码,密码也没告诉你。我去网上搜了一下,这个密码是 `live`
![](https://cdn.xyxsw.site/debian-live-4.png)
这样就打开了安装页面了。一路下一步吧。
![](https://cdn.xyxsw.site/debian-live-5.png)
![](https://cdn.xyxsw.site/debian-live-6.png)
![](https://cdn.xyxsw.site/debian-live-7.png)
到这里,我们需要选择安装方式。我这里是虚拟机,只能看到 Erase disk 这个选项。如果有是 Windows 会出现别的选项。
![](https://cdn.xyxsw.site/debian-live-8.png)
在已经有 Windows 安装好的情况下面是这样的。
![](https://cdn.xyxsw.site/debian-live-alongside.png)
用户名和密码
![](https://cdn.xyxsw.site/debian-live-9.png)
双系统的用户在这一页面检查一下,别把 Windows 干掉了。
![](https://cdn.xyxsw.site/debian-live-10.png)
重启吧。
![](https://cdn.xyxsw.site/debian-live-11.png)
#### 传统安装
有时候只能传统安装。思路和 Live 是差不多的,只是程序有点丑,然后有些不是很直观。看仔细点就行。一般很少用到。
#### 配置系统
##### 通用部分
打开 Konsole(KDE) 或者 Terminal(Gnome) 准备打命令。Gnome 用户按下 Win 键即可呼出搜索。
先[换源](https://mirrors.ustc.edu.cn/help/debian.html),再[安装输入法](https://wiki.debian.org/I18n/Fcitx5)和 [flatpak](https://flathub.org/setup/Debian),顺便换个 [flathub 源](https://mirror.sjtu.edu.cn/docs/flathub)。下面把这些教程整合起来。
依次输入这些命令,看清楚要求。
```bash
# 换源
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update && sudo apt upgrade
```
如果出现类似 `E: 仓库 "http://mirrors.ustc.edu.cn/debian/ bookworm-security Release" 没有 Release 文件` 的报错,请用 `sudo nano /ect/apt/sources.list` 打开,手动将 `http://mirrors.ustc.edu.cn/debian/ bookworm-security` 改成 `http://mirrors.ustc.edu.cn/debian-security/ bookworm-security`,并再次 `sudo apt update`
```bash
# 时间同步
sudo apt install systemd-timesyncd
# 安装输入法
sudo apt install --install-recommends fcitx5 fcitx5-chinese-addons
```
```bash
# flatpak
sudo apt install flatpak
# 下面两个命令二选一即可
sudo apt install plasma-discover-backend-flatpak # 对于 KDE 桌面
sudo apt install gnome-software-plugin-flatpak # 对 Gnome 桌面
# 添加仓库
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# 换源
flatpak remote-modify flathub --url=https://mirror.sjtu.edu.cn/flathub
```
对于 Nvidia 显卡,还要[安装驱动](https://wiki.debian.org/NvidiaGraphicsDrivers#Debian_12_.22Bookworm.22)。
我们需要把 `non-free contrib` 这两个仓库加上。可以在文件管理器中打开 `/etc/apt/` 这个目录, 双击 `sources.list` 文件。Gnome 的文件管理器按 Win+L 可以输入路径)
Gnome 会弹出一个窗口,全勾起来保存就行。
![sources.list](https://cdn.xyxsw.site/sources.png)
KDE 会用 Kate 打开它,每行都加上 `non-free contrib`保存Over.
![sources.list](https://cdn.xyxsw.site/debian-kde-source.png)
接下来打开命令行,执行:
```bash
sudo apt update
sudo apt install nvidia-driver firmware-misc-nonfree
```
结束之后重启。KDE 重启之后记得在登录页面把左下角桌面设置换成 X11。
##### KDE 部分
安装完大概是这样的。
![](https://cdn.xyxsw.site/debian-live-12.png)
打开 input method,修改输入法。注意不要开错了。
![](https://cdn.xyxsw.site/debian-live-13.png)
OK
![](https://cdn.xyxsw.site/debian-live-14.png)
YES
![](https://cdn.xyxsw.site/debian-live-15.png)
选中 fcitx5
![](https://cdn.xyxsw.site/debian-live-16.png)
OK
![](https://cdn.xyxsw.site/debian-live-17.png)
打开 Fcitx 5 的设置。
![](https://cdn.xyxsw.site/debian-live-18.png)
现在还没自动运行。平时也可以在这里启动设置。
![](https://cdn.xyxsw.site/debian-live-19.png)
点击右下角 Add Input Method
![](https://cdn.xyxsw.site/debian-live-20.png)
搜索 Pinyin选中Add。
![](https://cdn.xyxsw.site/debian-live-21.png)
默认的字体非常小,建议更改。点击 Configure addons因为 UI 属于 Addon。至于快捷键可以在另一个设置里面改。
![](https://cdn.xyxsw.site/debian-live-22.png)
设置 Classic User Interface
![](https://cdn.xyxsw.site/debian-live-23.png)
这里可以更改字体。
![](https://cdn.xyxsw.site/debian-live-24.png)
然后就能使用了。
![](https://cdn.xyxsw.site/debian-live-25.png)
可以更改 Language 为中文了。
![](https://cdn.xyxsw.site/debian-live-26.png)
Flathub 上面的软件可以通过 KDE 自带的 Discover 应用中心安装。
这里我们看到 flatpak 已经启用了。
![](https://cdn.xyxsw.site/debian-live-27.png)
##### Gnome
Gnome 开箱状态就是残废,本来应该是官方做的事情,结果 Gnome 摆 Debian 也摆,都丢给用户了。
Gnome 一上来就让你改语言,改中文就行,然后一路下一步。下次重启可能会问你是否更改文件名称,选择否。
![](https://cdn.xyxsw.site/debian-live-gnome1.png)
然后按下 Win 键进入菜单,呼出 Terminal, 安装一些插件。
![](https://cdn.xyxsw.site/debian-live-gnome2.png)
![](https://cdn.xyxsw.site/debian-live-gnome3.png)
```bash
sudo apt install gnome-shell-extension-dashtodock gnome-shell-extension-desktop-icons-ng gnome-shell-extension-kimpanel
```
我们之前已经装好 fcitx5, 所以这里启用就行。
![](https://cdn.xyxsw.site/debian-live-gnome4.png)
![](https://cdn.xyxsw.site/debian-live-gnome5.png)
一切完成,重启。
![](https://cdn.xyxsw.site/debian-live-gnome6.png)
打开 Extension启用任务栏桌面图标和输入法面板的拓展。
![](https://cdn.xyxsw.site/debian-live-gnome10.png)
![](https://cdn.xyxsw.site/debian-live-gnome7.png)
打开 tweaks, 启用最大化和最小化按钮。当然 2k 屏幕也可以改改缩放。
![](https://cdn.xyxsw.site/debian-live-gnome8.png)
![](https://cdn.xyxsw.site/debian-live-gnome9.png)
差不多能用了,剩下可以自己折腾。
#### Trouble shooting
##### 没有 sudo 权限
多半是打包的忘了加上去,自己加一下就好了。
```bash
su root
sudo usermod -a -G sudo <你的用户名>
```
### Arch Linux
邪教教主。好用是真的好用,邪教也是真的邪教。建议有事没事看那边的 wiki,写的是真的很好。
安装教程我就不再班门弄斧了,可以自己看。
### Fedora
以后写吧,不会比 Debian 难的。
### OpenSUSE
为数不多官方 KDE 的发行版,可能是因为他们总部都在德国。感觉 SUSE 中规中矩,这么多年都没搞出什么大新闻。

View File

@@ -1,6 +1,6 @@
# VMware 的安装与安装 Ubuntu22.04 系统
::: warning 💡
::: warning
一般与 wsl 安装二选一,因为都是虚拟系统,安装了 wsl 不用 VMware
文章撰写于 2022 年,可能其中的一些内容已过时。
@@ -36,7 +36,6 @@
这里推荐使用多线程下载器下载,比如 [IDM](../2.高效学习/2.2优雅的使用工具.md),如果直接用浏览器下载(线程少)可能会出现下载慢、下载失败的情况。
:::
下好回到 VMware
![](https://cdn.xyxsw.site/boxcnGHnjgZvtcBrm0XXitFl4Jg.png)

View File

@@ -100,7 +100,7 @@ cd Templates
可以完成目录的切换。注意在输入目录名时,`tab` 键可以提供联想。
#### ** 你感到键入困难吗?**
#### 你感到键入困难吗?
::: warning 💡 你可能会经常要在终端里输入类似于

View File

@@ -51,3 +51,7 @@ python 内容完成后,基本学习到如何使用 python 当一门工具使
[learn vim](https://github.com/wsdjeg/Learn-Vim_zh_cn)
Book教材替换用书——《C Primer Plus》
::: tip 📥
《C Primer Plus》第六版中文版216MB附件下载 <Download url="https://cdn.xyxsw.site/files/C%20Primer%20Plus%E7%AC%AC6%E7%89%88%20%E4%B8%AD%E6%96%87%E7%89%88.pdf"/>
:::

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 921 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Some files were not shown because too many files have changed in this diff Show More