refactor: 重构文档目录

移除了所有数字标号

Log:
This commit is contained in:
xzl 2023-03-06 16:38:17 +08:00 committed by HarryLoong
parent 74927fabf8
commit 75e27661e0
31 changed files with 178 additions and 181 deletions

@ -1,8 +1,8 @@
# 1.1. hello
# hello
你好哇如果你看到这里证明你现在已经想要尝试一下deepin了那么让我们开始吧。
## 1.1.1. 什么是deepin
## 什么是deepin
> 深度操作系统是一个致力于为全球用户提供美观易用、安全可靠体验的 Linux 发行版。
> 它不仅仅对最优秀的开源产品进行集成和配置,还基于 Qt 技术开发了深度桌面环境和深度控制中心,并且开发了一系列面向日常使用的深度特色应用如深度商店、深度截图、深度音乐、深度影院等。
@ -16,7 +16,7 @@
如果你并不擅长于编程你仅仅将deepin当作windows的替代来使用也是可以的你也可以为deepin社区提供反馈帮助deepin变得更好。
## 1.1.2. 一些tips
## 一些tips
对于新手来说linux操作系统可能是陌生的也许你之前一直用的winodws也许你之前没有接触过电脑。
但是这都不是什么问题只要你愿意尝试deepin社区的用户以及研发团队都会尽力帮助你解决问题。

@ -1,11 +1,11 @@
# 2.1.安装deepin
# 安装deepin
## 2.1.1.介绍
## 介绍
* 关于深度操作系统的安装的过程,具体请参考官方社区网站介绍:[如何安装](https://www.deepin.org/installation/)以及[深度安装器](https://www.deepin.org/original/deepin-installer/)项目。
* 虚拟机安装客户机类型选linux Debian11 x64
## 2.1.2.下载
## 下载
**官方镜像**
@ -19,7 +19,7 @@ deepin v23 目前处于测试阶段,不建议您在生产环境中使用,也
其他架构的安装方法请在deepin-wiki的HOTO页面查看。
:::
## 2.1.3.MD5校验
## MD5校验
* 下载深度操作系统镜像完成后,需要对其进行校验,非官方或不完整的镜像将不能用于深度操作系统的安装:
@ -35,7 +35,7 @@ deepin v23 目前处于测试阶段,不建议您在生产环境中使用,也
> 说明deepin-15.6-amd64.iso即为下载的系统镜像文件名可使用 Tab 键自动补全文件名。
## 2.1.4.制作启动盘
## 制作启动盘
**下载制作工具**
@ -51,7 +51,7 @@ deepin v23 目前处于测试阶段,不建议您在生产环境中使用,也
4. 若需制作支持 BIOS+UEFIdeepin_Recovery+Win PE 的多功能启动盘,参考[deepin安装U盘制作,支持 BIOS+UEFIdeepin_Recovery+Win PE](https://bbs.deepin.org/forum.php?mod=viewthread&tid=149708&extra=)
## 2.1.5.注意事项
## 注意事项
* 制作前请提前转移U盘中重要数据制作时可能会清除U盘所有数据。
* 制作前建议将U盘格式化为 FAT32 格式,以提高识别率。
@ -59,7 +59,7 @@ deepin v23 目前处于测试阶段,不建议您在生产环境中使用,也
* U盘容量大小不得小于 2 G否则无法成功制作启动盘。
* 制作过程中请不要触碰U盘以免因为写入不全导致制作失败。
## 2.1.6.安装过程
## 安装过程
* 如果您的电脑主板为 UEFI 模式,请在主板设置中关闭[安全启动](http://www.yxswz.com/x64bug.html)然后重新启动计算机并在BIOS/UEFI界面下特定键按住"改变启动顺序"键。
@ -73,13 +73,13 @@ deepin v23 目前处于测试阶段,不建议您在生产环境中使用,也
* 深度操作系统的安装的过程具体请参见[如何安装](https://www.deepin.org/installation/)。
## 2.1.7.安装完成
## 安装完成
* 根据深度安装器的界面提示,输入和选择对应的信息后,系统会在自动安装过程中,通过幻灯片了解当前系统的特性,直至安装过程完毕。待安装过程完毕,根据提示重启电脑即可进入深度操作系统。
> 注意:如果安装失败,会出现安装失败相关信息,通过手机端扫描失败的二维码,会自动将失败日志反馈到服务器。
## 2.1.8.常见问题
## 常见问题
### 多硬盘时安装 deepin 出现的无法引导的问题

@ -1,6 +1,6 @@
# 1.1. 控制台基础
# 控制台基础
## 1.1.1. shell 提示符
## shell 提示符
启动系统后当你看到登陆界面时按Ctrl+Alt+F2就可以切换到tty2进行登陆假设你的主机名为`foo`那么登录提示符将如下所示。如果是非标准键盘用户可能需要同时按下fn键
@ -44,7 +44,7 @@ Welcome to Deepin V23 GNU/Linux
约定GUI表示图形界面
## 1.1.2. GUI 下的 shell 提示符
## GUI 下的 shell 提示符
deepin预装了GUI环境并且提供终端模拟器deepin-terminal,你可以按Ctrl+Alt+T打开它或者通过开始菜单打开它如下
@ -52,7 +52,7 @@ deepin预装了GUI环境并且提供终端模拟器deepin-terminal,你可
关于终端的其他介绍见deepin wiki ,此处不再赘述。
## 1.1.3. root 账户
## root 账户
root 账户也被称作超级用户或特权用户。用这个账户,你能够履行下面的系统管理任务。
@ -72,7 +72,7 @@ root 账户也被称作超级用户或特权用户。用这个账户,你能够
一个文件(包括硬件设备,如 CD-ROM 等,这些对 Linux 系统来说都只是一个文件)的权限可能会导致非 root 用户无法使用或访问它 。虽然在这种情况下,使用 root 帐户是一个快速的方法,但正确的解决方法应该是对文件权限和用户组的成员进行合适的设置(参见第[1.2.3 节 “文件系统权限](./1.2.%E7%B1%BBUnix%E7%B3%BB%E7%BB%9F.md))”)。
## 1.1.4. root shell 提示符
## root shell 提示符
这里有一些基本的方法可以让你在输入 root 密码后获得 root的 shell 提示符。
@ -88,7 +88,7 @@ root 账户也被称作超级用户或特权用户。用这个账户,你能够
注意任何情况都不建议使用root用户直接登陆而是使用sudo+命令方式
## 1.1.5. 虚拟控制台
## 虚拟控制台
在默认的 deepin系统中有6个可切换的类VT100字符控制台可以直接在 Linux 主机上启动 shell。GUI界面占据tty1。
@ -102,7 +102,7 @@ root 账户也被称作超级用户或特权用户。用这个账户,你能够
sudo chvt 3
```
## 1.1.6. 雷神终端
## 雷神终端
这是deepin的特有功能在GUI界面下按Alt+F2唤出和普通终端一致。快捷键可以在控制中心修改。
@ -112,13 +112,13 @@ sudo chvt 3
这是一种快捷调出终端的方式并且调出的终端一直存在于后台直到你显式退出exit
## 1.1.7. 怎样退出命令行提示符
## 怎样退出命令行提示符
同时按下`左侧Ctrl键``D键`,即可关闭 shell 活动。如果你正处于字符控制台,你将会返回到登录提示行。你也可以键入 ”`exit`" 退出命令行。
如果你位于`x终端模拟器`中,你可以使用这个关闭`x 终端模拟器`窗口。
## 1.1.8. 怎样关闭系统
## 怎样关闭系统
就像任何其他的现代操作系统一样deepin 会通过内存中的[缓存数据](https://zh.wikipedia.org/wiki/%E7%BC%93%E5%AD%98)进行文件操作以提高性能,因此在电源被安全地关闭前需要适当的关机过程,通过将内存中的数据强制写入硬盘来维持文件的完整性。如果软件的电源控制可用,那么关机过程中会自动关闭系统电源。(否则,你可能需要在关机过程之后按电源键几秒钟:相当于强制关机)
@ -136,11 +136,11 @@ sudo poweroff -i -f
参见[第 6.3.8 节 “怎样通过 SSH 关闭远程系统”](https://www.debian.org/doc/manuals/debian-reference/ch06.zh-cn.html#_how_to_shutdown_the_remote_system_on_ssh)。
## 1.1.9. 恢复一个正常的控制台
## 恢复一个正常的控制台
当做了一些滑稽的事(例如“`cat二进制文件`屏幕会发狂你可以按Ctrl+C来取消当前命令。你也可以输入“`clear`”来清屏。
## 1.1.10. 建议新手安装的额外软件包
## 建议新手安装的额外软件包
deepin作为一个开箱即用的系统已经预装了许多软件包但是依然有些软件包是值得被推荐的
@ -156,7 +156,7 @@ deepin作为一个开箱即用的系统已经预装了许多软件包
sudo apt-get install <package_name>
```
## 1.1.11. 额外用户账号
## 额外用户账号
如果你不想用你自己的主用户账户来进行下面的练习操作,你可以使用下面的方式创建一个练习用户账户,比如说,创建一个用户名为 `fish` 的账号。
@ -172,7 +172,7 @@ sudo adduser fish
sudo deluser --remove-home fish
```
## 1.1.12. sudo 配置
## sudo 配置
对于典型的单用户工作站,例如运行在笔记本电脑上的桌面 deepin 系统,通常简单地配置 `sudo`(8) 来使为非特权用户(例如用户 `penguin`)只需输入用户密码而非 root 密码就能获得管理员权限。
@ -198,7 +198,7 @@ sudo echo "penguin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
随着越来越细致周密的配置sudo(8) 可以授予一个共享系统上的其它用户有限的管理权限而不共享 root 密码。这可以帮助对有多个管理员的主机进行责任追究,你可以了解到是谁做什么。另一方面,你可能不想任何人有这样的权限。
## 1.1.13. 动手时间
## 动手时间
现在你已经准备好在 deepin 系统上开工了,只要你使用非特权用户账号就不会有风险。

@ -1,5 +1,4 @@
# 1.2. 类 Unix 文件系统
# 类 Unix 文件系统
在GNU/Linux和其他[类Unix](https://zh.wikipedia.org/wiki/Unix-like)操作系统中,[文件](https://zh.wikipedia.org/wiki/Computer_file)被组织到[目录](https://zh.wikipedia.org/wiki/Directory_(file_systems))中。所有的文件和目录排放在以“`/`”为根的巨大的树里。叫它树是因为如果你画出文件系统,它看起来就像一棵树,但是它是颠倒过来的。
@ -16,7 +15,7 @@ tree -L 3
Unix系统上叫做**目录**,某些其他系统上叫做**文件夹**。请同样留意在任何Unix系统上没有的**驱动器**的概念,例如“`A:`”。这只有一个文件系统,并且所有东西都包含在内。这相对于 Windows 来说是一个巨大的优点。
## 1.2.1. Unix 文件基础
## Unix 文件基础
下面是一些 Unix 文件基础。
@ -58,7 +57,7 @@ Unix系统上叫做**目录**,某些其他系统上叫做**文件夹**。请
|/dev|硬件以文件形式存储|
|/dev|用户临时挂载其他文件系统|
## 1.2.2. 文件系统深入解析
## 文件系统深入解析
按照**UNIX系统的传统**deepin GNU / Linux 的[文件系统](https://zh.wikipedia.org/wiki/File_system)是在物理数据存储设备诸如磁盘或其他存储设备上,与硬件设备的交互,如控制台和远程串口终端都是以统一的方式呈现在 “`/dev/`” 下面。
@ -68,7 +67,7 @@ Unix系统上叫做**目录**,某些其他系统上叫做**文件夹**。请
如果您需要识别文件树和物理实体之间的对应关系,请尝试不带参数运行`mount`
## 1.2.3. 文件系统权限
## 文件系统权限
类Unix系统的文件系统权限被定义给三类受影响的用户。
@ -196,7 +195,7 @@ ls -l foo bar
如果你需要在 shell 脚本中访问“`ls -l`”显示的信息,你需要使用相关命令,如`test`(1)`stat`(1)和`readlink`(1)。shell 内置命令,如“[”或“test”可能也会用到。
## 1.2.4. 控制新建文件的权限umask
## 控制新建文件的权限umask
什么权限将应用到新建文件受 shell 内置命令 `umask` 的限制。参见`dash`(1)`bash`(1),和`内建命令`(7)。
@ -211,7 +210,7 @@ ls -l foo bar
deepin 默认使用用户私人组UPG。每当一个新用户添加到系统的时候都会创建一个UPG。UPG 的名字和创建它的用户相同这个用户是这个UPG的唯一成员。自从每个用户都有自己的私人组之后把umask设置成`0002`变得更安全了。(在某些 Unix 变体中,把所有普通用户设置到一个叫**`users`**的组是非常常见的做法在这种情况下出于安全考虑把umask设为`0022`是一个好主意)
## 1.2.5. 一组用户的权限(组)
## 一组用户的权限(组)
为了使组权限应用到一个特定用户,这个用户需要通过使用 “`sudo vigr`
编辑 `/etc/group` 以及使用 “`sudo vigr -s`” 编辑 `/etc/gshadow` 成为该
@ -258,7 +257,7 @@ share/doc/base-passwd/users-and-groups.html`中,当前版本的“用户和
用户和组系统的管理命令参见passwd(5)group(5)shadow(5)
newgrp(1)vipw(8)vigr(8)以及pam_group(8)。
## 1.2.6. 时间戳
## 时间戳
GNU/Linux 文件有三种类型的时间戳。
@ -296,12 +295,12 @@ $ LANG=C ls -l foo
$ LANG=en_US.UTF-8 ls -l foo
-rw-rw-r-- 1 penguin penguin 0 Oct 16 21:35 foo
$ LANG=fr_FR.UTF-8 ls -l foo
-rw-rw-r-- 1 penguin penguin 0 oct. 16 21:35 foo
-rw-rw-r-- 1 penguin penguin 16 21:35 foo
```
参考第 9.3.4 节 “定制时间和日期的显示” 自定义 “ls -l” 输出 。
## 1.2.7. 链接
## 链接
有两种方法把一个文件 “`foo`” 链接到一个不同的文件名 “`bar`”。
@ -356,7 +355,7 @@ New Content
如果你刚从 Windows 迁移到Linux你很快将清楚 Unix 的文件名链接相较于 Windows 最相近的“快捷方式”是多么精心设计的。由于它是在文件系统中实现的,应用无法看到链接文件跟原始文件之间的区别。在硬链接这种情况,这真的是毫无差别。
## 1.2.8. 命名管道(先进先出)
## 命名管道(先进先出)
[命名管道](https://zh.wikipedia.org/wiki/Named_pipe)是一个像管道一样的文件。你把内容放进了文件它从另一端出来。因此它被称为FIFO即先进先出你从管道这端先放进去的东西会从另一端先出来。
@ -378,13 +377,13 @@ mypipe
$ rm mypipe
```
## 1.2.9. 套接字
## 套接字
套接字被广泛应用于所有的互联网通信数据库和操作系统本身。它类似于命名管道FIFO并且允许进程之间甚至不同计算机之间进行信息交换。对于套接字这些进程不需要在同一时间运行也不需要是同一个父进程的子进程。它是[进程间通信IPC](https://zh.wikipedia.org/wiki/Inter-process_communication)的一个节点。信息的交换可能会通过网络发生在不同主机之间。最常见的两种是 [互联网套接字](https://zh.wikipedia.org/wiki/Internet_socket) 和 [UNIX域套接字](https://zh.wikipedia.org/wiki/Unix_domain_socket) 。
通过 "`netstat -an`" 命令可以很方便的查看系统已经打开了哪些套接字。
## 1.2.10. 设备文件
## 设备文件
[设备文件](https://zh.wikipedia.org/wiki/Device_file)包括系统的物理设备和虚拟设备,如硬盘、显卡、显示屏、键盘。虚拟设备的一个例子是控制台,用“`/dev/console`”来描述。
@ -430,7 +429,7 @@ crw-rw-rw- 1 root root 1, 5 Oct 16 20:57 /dev/zero
在现代Linux系统中处在"`/dev`"之下的文件系统会自动被`udev`()机制填充。
## 1.2.11. 特殊设备文件
## 特殊设备文件
还有一些特殊的设备文件。
@ -445,7 +444,7 @@ crw-rw-rw- 1 root root 1, 5 Oct 16 20:57 /dev/zero
这些特别设备文件经常和 shell 数据重定向联合使用(参考[第 1.5.8 节 “典型的顺序命令和 shell 重定向”](https://www.debian.org/doc/manuals/debian-reference/ch01.zh-cn.html#_typical_command_sequences_and_shell_redirection))。
## 1.2.12. procfs 和 sysfs
## procfs 和 sysfs
[procfs](https://zh.wikipedia.org/wiki/Procfs)和[sysfs](https://zh.wikipedia.org/wiki/Sysfs)两个伪文件系统,分别加载于"`/proc`"和"`/sys`"之上,将内核中的数据结构暴露给用户空间。或者说,这些条目是虚拟的,他们打开了深入了解操作系统运行的方便之门。
@ -459,7 +458,7 @@ crw-rw-rw- 1 root root 1, 5 Oct 16 20:57 /dev/zero
参考"`proc.txt(.gz)`""`sysfs.txt(.gz)`"以及其他相关的Linux内核文档"`/usr/share/doc/linux-doc-*/Documentation/filesystems/*`"),这些文件由`linux-doc-*`软件包提供。
## 1.2.13. tmpfs
## tmpfs
[tmpfs](https://zh.wikipedia.org/wiki/Tmpfs#Linux)是一个临时文件系统,它的文件都保存在[虚拟内存](https://zh.wikipedia.org/wiki/Virtual_memory)中。必要时,位于内存[页缓存](https://zh.wikipedia.org/wiki/Page_cache)的tmpfs数据可能被交换到硬盘中的[交换分区](https://zh.wikipedia.org/wiki/Paging)。

@ -1,9 +1,8 @@
# 1.4. 类 Unix 工作环境基础
# 类 Unix 工作环境基础
虽然 MC 差不多可以让你做任何事情,但学会从 shell 提示下使用命令行工具也是非常重要的,可以让你变得熟悉类 Unix 工作环境。
## 1.4.1. 登录 shell
## 登录 shell
因登录 shell 可以被一些系统初始化程序使用,请谨慎的把登录 shell 保持为 `bash`或者其他POSIX shell 例如zsh ,并避免把它转换为 `chsh`
@ -26,7 +25,7 @@
在本教程中,交互式的 shell 总是指 `bash`.
## 1.4.2. 定制 bash
## 定制 bash
你可以通过“`~/.bashrc`”来定制`bash`(1)的行为。
@ -64,7 +63,7 @@ export EDITOR
bash-completion 软件包能够让 bash 进行命令补全.
## 1.4.3. ZSH
## ZSH
zsh是我个人更为推荐的shell,在安装插件之后能实现自动补全,自动记忆以及高亮命令。
@ -72,7 +71,7 @@ zsh几乎100%兼容bash的操作
具体教程不在这里赘述,请移步-→
## 1.4.4. 特殊按键
## 特殊按键
在 [类Unix](https://zh.wikipedia.org/wiki/Unix-like) 环境有一些具有特殊含义的按键。请注意普通的Linux字符控制台只有左手边的 `Ctrl``Alt` 键可以正常工作。其中有几个值得记住的按键。
@ -92,7 +91,7 @@ zsh几乎100%兼容bash的操作
|Tab|在 bash 命令行中补全文件名|
|Ctrl-V Tab|在 bash 命令行中输入 Tab 而不是进行补全|
## 1.4.5. 鼠标操作
## 鼠标操作
[Debian 系统针对文本的鼠标操作混合 2 种风格](https://specifications.freedesktop.org/clipboards-spec/clipboards-latest.txt),外加一些新的方法:
@ -129,11 +128,11 @@ zsh几乎100%兼容bash的操作
为了在 Linux 字符控制台中使用鼠标,您需要让 `gpm`(8) 作为后台守护进程daemon运行。
## 1.4.6. 分页程序
## 分页程序
`less`(1) 命令是一个增强版的分页程序(文件内容查看器)。它按照指定的命令参数或标准输出来读取文件。在用 `less` 命令查看的时候如果需要帮助可以按 “`h`”。它的功能比 `more`(1) 命令更丰富,通过在脚本的开头执行 "`eval $(lesspipe)`" 或 "`eval $(lessfile)`" 它的功能还能变得更加强大。详细请参考 "`/usr/share/doc/less/LESSOPEN`"。 "`-R`" 选项可以实现原始的字符输出还可以启用 ANSI 颜色转义序列。详细请参考 `less`(1)。
## 1.4.7. 文本编辑器
## 文本编辑器
在使用类 Unix 系统过程中, 各种类似于[Vim](https://zh.wikipedia.org/wiki/Vim_(text_editor)) 或 [Emacs](https://zh.wikipedia.org/wiki/Emacs)的工具,你应该精通其中的一个。
@ -152,7 +151,7 @@ zsh几乎100%兼容bash的操作
GUI文本编辑器deepin内置了deepin-editor,是非常好用的还有宇宙第一ide——装了插件的vscode见vscode的词条
## 1.4.8. 设置默认文本编辑器
## 设置默认文本编辑器
Debian 有许多不同的编辑器。我们建议安装上面提到的 `vim` 软件包。
@ -164,7 +163,7 @@ sudo update-alternatives --config editor
对于新手,我建议使用“`/usr/bin/vim.basic`”代替“`/usr/bin/vim.tiny`”,因为它支持格式高亮。
## 1.4.9.使用
##使用
使用vim我个人认为是很难在这一点页面说完的所以本着不重复造轮子的思想在这放出基本命令和优质中文教程
@ -194,7 +193,7 @@ sudo update-alternatives --config editor
`vim` 程序基于 **模式** 输入的按键来改变它的行为。在 `插入`-模式和 `替代`-模式下,输入的按键大部分进入了缓冲区。移动光标大部分在 `普通`-模式下完成。交互选择在 `可视`-模式下完成。在`普通`-模式下输入 "`:`" ,改变它的 **模式** 进入到 `Ex`-模式。 `Ex`-接受命令。
## 1.4.10. 记录 shell 活动
## 记录 shell 活动
shell 命令的输出有可能滚动出了屏幕并可能导致你无法再查看到它。将shell活动记录到文件中再来回顾它是个不错的主意。当你执行任何系统管理任务时这种记录是必不可少的。
@ -215,7 +214,7 @@ Script started, file is typescript
vim typescript
```
## 1.4.11. 基本的 Unix 命令
## 基本的 Unix 命令
让我们来学习基本的 Unix 命令。在这里我指的是一般意义上的“UNIX”。任何 UNIX 克隆系统通常都会提供等价的命令。deepin 系统也不例外。如果有一些命令不像你想的那样起作用,请不要担心。如果 shell 中使用了别名,其对应的命令输出会不同。这些例子并不意味着要以这个顺序来执行。

@ -1,5 +1,4 @@
# 1.5. 简单 shell 命令
# 简单 shell 命令
现在,你对如何使用 deepin 系统已经有一些感觉了。让我们更深入了解 deepin 系统的命令执行机制。在这里,我将为新手做一般的讲解。精确的解释参见`bash`(1)。
@ -15,7 +14,7 @@
- 控制操作(可选:`&&` `||` 换行符 , `;` , `&` , `(` , `)`
## 1.5.1. 命令执行和环境变量
## 命令执行和环境变量
一些[环境变量](https://zh.wikipedia.org/wiki/Environment_variable)的值会改变部分 Unix 命令的行为。
@ -27,7 +26,7 @@
- 用户特有的程序初始化时,可以重新设置在 "`~/.profile`"、"`~/.bash_profile`" 和 "`~/.bashrc`" 中设置的环境变量。
## 1.5.2. `$LANG`”变量
## “`$LANG`”变量
默认的语言环境是在 "`$LANG`" 环境变量中定义,它在安装的时候配置为 "`LANG=xx_YY.UTF-8`",或者在接下来的 GUI图形用户界面中配置例如在 GNOME 中是,"设置" → "区域 & 语言" → "语言" / "格式"。
@ -86,7 +85,7 @@ mer. 19 mai 2021 15:19:24 UTC
对于语言环境配置的细节,参见 [第 8.1 节 “语言环境”](https://www.debian.org/doc/manuals/debian-reference/ch08.zh-cn.html#_the_locale)
## 1.5.3. "`$PATH`" 变量
## "`$PATH`" 变量
当你在 Shell 里输入命令的时候Shell 会在 "`$PATH`" 变量所包含的目录列表里进行搜索,"`$PATH`" 变量的值也叫作 Shell 的搜索路径。
@ -94,7 +93,7 @@ mer. 19 mai 2021 15:19:24 UTC
在zsh中为`~/.zshrc`
## 1.5.4. "`$HOME`" 变量
## "`$HOME`" 变量
很多命令在用户目录中都存放了用户指定的配置,然后通过配置的内容来改变它的执行方式,用户目录通常用 "`$HOME`" 变量来指定。
@ -109,7 +108,7 @@ mer. 19 mai 2021 15:19:24 UTC
Shell 扩展 "~/" 为转入当前用户的主目录,也就是"$HOME/"。Shell 扩展 "~foo/" 为foo 的目录,也就是 "/home/foo/"。
## 1.5.5. 命令行选项
## 命令行选项
一些命令附带参数。这些参数以 "`-`" 或 "`--`" 开头,通常称之为选项,用来控制命令的执行方式。
@ -122,7 +121,7 @@ Thu, 20 May 2021 01:08:12 +0900
这里的命令参数 "`-R`" 改变 `date`(1) 命令输出为 [RFC2822](http://tools.ietf.org/html/rfc2822) 标准的日期字符格式。
## 1.5.6. Shell 通配符
## Shell 通配符
经常有这种情况你期望命令成串自动执行而不需要挨个输入,将文件名扩展为 **glob**(有时候被称为 **通配符**),以此来满足这方面的需求。
@ -138,11 +137,11 @@ Thu, 20 May 2021 01:08:12 +0900
尝试下列例子
```Shell
$ mkdir junk; cd junk; touch 1.txt 2.txt 3.c 4.h .5.txt ..6.txt
$ mkdir junk; cd junk; touch 1.txt 2.txth .5.txt ..6.txt
$ echo *.txt
1.txt 2.txt
$ echo *
1.txt 2.txt 3.c 4.h
1.txt 2.txth
$ echo *.[hc]
3.c 4.h
$ echo .*
@ -160,7 +159,7 @@ $ cd ..; rm -rf junk
BASH 可以使用内置的 shopt 选项如 " `dotglob` "" `noglob` "," `nocaseglob` "," `nullglob` "," `extglob` "定制全局行为,使用 `bash` ( 1 )查看详细说明。
## 1.5.7. 命令的返回值
## 命令的返回值
每个命令都会返回它的退出状态(变量:“`$?`”)作为返回值。
@ -178,7 +177,7 @@ $ [ 1 = 2 ] ; echo $?
1
```
## 1.5.8. 典型的顺序命令和 shell 重定向
## 典型的顺序命令和 shell 重定向
让我们试着记住下面 Shell 命令里部分命令行所使用的命令习语。
@ -240,7 +239,7 @@ Hello
|stdout|标准输出|1|
|stderr|标准错误|2|
## 1.5.9. 命令别名
## 命令别名
你可以为经常使用的命令设置一个别名。

@ -1,8 +1,8 @@
# 1.6. 类 Unix 的文本处理
# 类 Unix 的文本处理
在类 Unix 的工作环境中,文本处理是通过使用管道组成的标准文本处理工具链完成的。这是另一个重要的 Unix 创新。
## 1.6.1. Unix 文本工具
## Unix 文本工具
这里有一些在类 Unix 系统中经常使用到的标准文本处理工具。

@ -1,4 +1,4 @@
# 10.1. 共享, 拷贝和存档
# 共享, 拷贝和存档
数据的安全和它的受控共享有如下几个方面。
@ -21,7 +21,7 @@
- 版本控制系统工具
- 哈希算法和加密工具
## 10.1.1. 存档和压缩工具
## 存档和压缩工具
| 软件包 | 扩展名 | 命令 | 描述 |
|------------|-------|------------------------|-----------------------------------------------------------------------------|
@ -59,7 +59,7 @@ deepin也提供图形化的归档管理器在系统中预装
- 事实上跨平台支持最好的存档工具是 zip。按照“zip -rX”的方式调用可以获得最大的兼容性。如果最大文件大小需要纳入考虑范围请同时配合“-s”选项使用。
:::
## 10.1.2. 复制和同步工具
## 复制和同步工具
| 软件包 | 工具 | 功能 |
|----------------|--------|----------------------------|
@ -79,7 +79,7 @@ deepin也提供图形化的归档管理器在系统中预装
deepin的文件管理器也提供了webdav的支持可以通过webdav协议访问远程文件使用webdav同步文件也是一种不错的选择。
TODO待补充
## 10.1.3. 归档(压缩)语法
## 归档(压缩)语法
以下是用不同的工具压缩和解压缩整个 "./source" 目录中的内容。
@ -104,7 +104,7 @@ zcat archive.cpio.xz | cpio -i
```
其余工具使用见wiki
## 10.1.4. 复制和同步语法
## 复制和同步语法
如下是用不同的工具复制整个 "./source" 目录中的内容。
@ -163,7 +163,7 @@ cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest
rsync(8) 和 GNU cp(1) 可以用 "-u" 选项来忽略接受端上更新的文件。
:::
## 10.1.5. 查找文件的语法
## 查找文件的语法
find(1) 被用作从归档中筛选文件也被用作拷贝命令 (参见第 10.1.3 节 “归档语法”和第 10.1.4 节 “复制语法”) 或者用于 xargs(1) (参见第 9.4.9 节 “使用文件循环来重复一个命令”)。通过 find 的命令行参数能够使其功能得到加强。
@ -202,7 +202,7 @@ find /path/to \
请留心以上例子中的 "-prune -o" 排除文件的习惯用法。
## 10.1.6. 归档媒体
## 归档媒体
数据无价,所以你应该把它们存储在安全的地方。当你在寻找存储设备时,你应该注意它们的局限性。对于小型的个人数据备份,我使用品牌公司的 CD-R 和 DVD-R 然后把它放在阴凉、干燥、清洁的地方。(专业的一般使用磁带存档介质)
@ -237,7 +237,7 @@ find /path/to \
如果你在使用一个可重复写入的介质作为你的备份介质,使用支持只读快照的 btrfs 或 zfs 文件系统,也许是一个好注意。
:::
## 10.1.7. 可移动存储设备
## 可移动存储设备
可移动存储设备可能是以下的任何一种。
@ -284,7 +284,7 @@ umount(8) 在自动挂载设备的时候可能会带有 "uhelper=" 参数。
在图形界面菜单上移除文件系统,可能会移除它的动态设备节点例如 "/dev/sdc"。如果你想要保留它的设备节点,你应该在命令行提示符上输入 umount(8) 命令来卸载它。
:::
## 10.1.8. 选择用于数据分享的文件系统
## 选择用于数据分享的文件系统
在你的文件系统中,你应该选择一个用于数据分享的文件系统。这个文件系统应该支持以下的特性。
@ -338,7 +338,7 @@ FAT 文件系统被绝大多数的现代操作系统支持,它对于通过可
有关文件系统和访问文件系统的更多信息,请参考 "Filesystems HOWTO"。
:::
::: 10.1.9. 网络上的数据分享
::: 网络上的数据分享
当使用网络来分享数据的时候,你应该使用通用的服务。这里有一些提示。
| 网络服务 | 典型使用场景描述 |

@ -1,4 +1,4 @@
# 10.2. 备份和恢复
# 备份和恢复
我们都熟知计算机有时会出问题,或者由于人为的错误导致系统和数据损坏。备份和恢复操作是成功的系统管理中非常重要的一部分。可能有一天你的电脑就会出问题
@ -6,7 +6,7 @@
保持你的备份系统简洁并且经常备份你的系统,有备份数据比你采用的备份方法的技术先进要重要的多
:::
## 10.2.1. 备份和恢复策略
## 备份和恢复策略
有3个关键的因素决定实际的备份和恢复策略。
@ -49,10 +49,10 @@
当备份数据的时候,你可能希望停止一些应用程序的守护进程例如 MTA参见第 6.2.4 节 “邮件传输代理 (MTA)”)。
:::
## 10.2.2. 实用备份套件
## 实用备份套件
## 10.2.3. 原子更新
## 原子更新
原子更新是指在更新过程中,如果更新失败,系统能够自动回滚到更新前的状态。这样就能够保证系统的稳定性。

@ -1,4 +1,4 @@
# 10.3. 数据安全基础
# 数据安全基础
数据安全基础设施是数据加密,讯息摘要和签名工具的集合。它们提供了一种安全的方式来保护数据,以防止数据被篡改或泄露。数据安全基础设施的目标是确保数据的完整性和机密性。
@ -14,9 +14,9 @@
| libsecret-tools | secret-tool(1) | 存储和取回密码 (CLI) |
| seahorse | seahorse(1) | 密钥管理工具(GNOME) |
参见 第 9.9 节 “数据加密提示” 的 dm-crypt 和 fscrypt它们通过 Linux 内核模块实现了自动数据加密架构
参见 “数据加密提示” 的 dm-crypt 和 fscrypt它们通过 Linux 内核模块实现了自动数据加密架构
## 10.3.1. GnuPG
## GnuPG
GnuPG 是一个开放源代码的加密工具它可以用来加密和签名文件以及对其进行验证。它支持对称加密和非对称加密。对称加密使用同一个密钥来加密和解密数据。非对称加密使用一对密钥一个用于加密另一个用于解密。非对称加密的安全性取决于密钥对的生成方式。GnuPG 支持多种密钥对生成方式,包括 RSA、DSA 和 ElGamal。GnuPG 也支持 OpenPGP 的标准,因此可以与其他 OpenPGP 实现进行交互。
@ -70,7 +70,7 @@ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\
有一个错误在 OpenPGP 公钥服务器 (先前的版本 0.9.6),会将键中断为 2 个以上的子键。新的 gnupg (>1.2.1-2) 软件包能够处理这些中断的子键。参见 gpg(1) 下的 "--repair-pks-subkey-bug" 选项.
## 10.3.2. 在文件上使用 GnuPG
## 在文件上使用 GnuPG
| 命令 | 说明 |
|-------------------------------------------------------|-------------------------------------------|
@ -93,7 +93,7 @@ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\
| gpg -o file --decrypt crypt_file.gpg | 同上 |
## 10.3.3. 在Mutt上使用 GnuPG
## 在Mutt上使用 GnuPG
增加下面内容到 "~/.muttrc",在自动启动时,避免一个慢的 GnuPG在索引菜单中按 "S" 来允许它使用。
@ -102,7 +102,7 @@ macro index S ":toggle pgp_verify_sig\n"
set pgp_verify_sig=no
```
## 10.3.4. 在 Vim 中使用 GnuPG
## 在 Vim 中使用 GnuPG
gnupg 插件可以让你对扩展名为 ".gpg", ".asc", 和 ".ppg"的文件可靠的运行 GnuPG。[6]
@ -111,7 +111,7 @@ sudo aptitude install vim-scripts
echo "packadd! gnupg" >> ~/.vim/vimrc
```
## 10.3.5. MD5 校验和
## MD5 校验和
md5sum(1) 提供了制作摘要文件的一个工具,它使用 rfc1321 里的方式制作摘要文件.
@ -130,7 +130,7 @@ bar: OK
MD5 校验和的 CPU 计算强度是比 GNU Privacy Guard (GnuPG) 加密签名要少的.在通常情况下,只有顶级的摘要文件才需要加密签名来确保数据完整性.
:::
## 10.3.6. 密码密钥环
## 密码密钥环
在 deepin 系统提供了GUI图形用户界面工具 seahorse(1) 由GNOME开发管理密码安全的在密钥环 ~/.local/share/keyrings/* 里面保存它们。

@ -1,4 +1,4 @@
# 10.4. Git
# Git
Git 是一个分布式版本控制系统它的目标是速度数据完整性和可扩展性。Git 是免费软件,遵循 GNU 通用公共许可证版本 2或更高版本发布
@ -16,7 +16,7 @@ Git 是一个分布式版本控制系统,它的目标是速度,数据完整
| git-doc | N/A | Git 官方文档 |
| gitmagic | N/A | "Git 魔术",易于理解的 Git 手册 |
## 10.4.1. 配置 Git 客户端
## 配置 Git 客户端
你可以在 "`~/.gitconfig`" 里面设置几个Git接下来需要使用的全局配置比如说你的名字和电子邮件地址。
@ -48,7 +48,7 @@ git config --global --list
当然你也可以为每个项目单独设置配置,这样的话,你就可以在不同的项目中使用不同的用户名和电子邮件地址了,只需要在项目的根目录下运行上面的命令(去掉--global即可。
## 10.4.2. 基本的 Git 命令
## 基本的 Git 命令
Git 操作涉及几个数据。
@ -85,7 +85,7 @@ Git 操作涉及几个数据。
| git diff treeish1 treeish2 | 显示 treeish1 提交和 treeish2 提交的不同 |
| gitk | VCS 存储库分支历史树的图形界面显示 |
## 10.4.3. Git技巧
## Git技巧
| Git 命令行 | 功能 |
|----------------------------------------------------------------------------|-------------------------------------------------------|
@ -130,7 +130,7 @@ Git 操作涉及几个数据。
如果有一个可执行文件 git-foo 在路径环境变量 $PATH 里面,在命令行输入没有中划线的 "git foo",则将调用 git-foo.这是 git 命令的一个特性。
:::
## 10.4.4. Git参考资料
## Git参考资料
[Git - 简明指南](https://rogerdudler.github.io/git-guide/index.zh.html) 「推荐」
@ -140,7 +140,7 @@ Git 操作涉及几个数据。
[廖雪峰老师博客](https://www.liaoxuefeng.com/wiki/896043488029600) 「推荐」
## 10.4.5. GitHub
## GitHub
[GitHub - 官方网站](github.com)

@ -1,6 +1,6 @@
# 11.1.C/C++编程环境搭建
# C/C++编程环境搭建
## 11.1.1. 基础环境
## 基础环境
### 编译器
@ -88,7 +88,7 @@ sudo apt install meson # meson构建工具
sudo apt install ninja-build # ninja构建工具
```
## 11.1.2. 文本编辑器
## 文本编辑器
其实当上方的软件包都安装了之后你就可以开始编写C/C++程序了但是你还需要一个文本编辑器这个文本编辑器可以是任意的比如gedit、vim、emacs等。
这里作为推荐,我推荐几款文本编辑器
@ -120,7 +120,7 @@ vscode是微软出品的一款文本编辑器它的功能非常强大
notepad--是一个开源跨平台的文本编辑器其gitee项目地址为: [https://gitee.com/cxasm/notepad--](https://gitee.com/cxasm/notepad--)
## 11.1.3. IDE
## IDE
IDE是一款集成开发环境它可以帮助我们快速开发程序比如编译、调试、运行、格式化、检查、压缩等。

@ -1,4 +1,4 @@
# 11.2. golang编程环境搭建
# golang编程环境搭建
Go也称 Golang是由 Google 开发的一门编程语言于2009年首次公开发布。它是一门静态类型、编译型语言具有内存安全、垃圾回收、并发支持和高效的编译等特性因此被广泛用于构建高性能、高并发、可靠性强的后端服务。
@ -12,7 +12,7 @@ Go也称 Golang是由 Google 开发的一门编程语言于2009年首
目前Go 语言已经广泛应用于云计算、大数据、网络编程、分布式系统、微服务等领域,成为一个非常流行的编程语言。
## 11.2.1. 软件包
## 软件包
### golang
@ -44,7 +44,7 @@ goland是一款非常强大的golang开发工由jetbrains公司开发
是的vscode也可以用来开发golang它的安装和使用非常简单你只需要安装一个插件就可以了。
在vscode中的插件市场中搜索golang然后安装即可这是一个聚合包会自动下载其他的插件。
## 11.2.2. 资源指南
## 资源指南
### 官方文档

@ -1,4 +1,4 @@
# 11.3. dotnet编程环境搭建
# dotnet编程环境搭建
目前 dotnet sdk (非 framework) 对于 GNU/Linux 几个主流发行版都具有较好的支持, 现给出微软官方文档链接, 以 Debian 发行版作为 deepin 目前的操作指南
更多测试在进行中, 若有需要特殊操作, 将会记录在本文档中方便 dotnet 开发者参考

@ -1,4 +1,4 @@
# 11.4. rust编程环境搭建
# rust编程环境搭建
Rust是Mozilla基金会在2015年发布的编程语言最开始目的是为了实现一个全新的浏览器内核[Servo](https://github.com/servo/servo),可惜夭折了(先帝创业未半而中道崩殂), Servo 现在交给了linux基金会可惜也没有什么维护了。但是Rust语言之后独立于Mozilla基金会成立了自己的基金会之后在各种领域大放光彩。(Servo 在天之灵会开心吧)。
@ -8,7 +8,7 @@ Rust语言有很多特点当然这些也并不是它的特点都是从函
如果从没有写过函数式等语言的话你可能会对Rust干掉了继承的行为很困惑觉得举步维艰。不过对于现代语言来说推崇的行为是组合大于继承所以Rust提供了trait当然显然这个概念也并非Rust第一个发明的。另外库可以使用如`#derive[default]`等语法糖来减少你使用trait时候需要写的代码所以不要怕。
## 11.4.1. 安装
## 安装
请参考[rust](https://www.rust-lang.org/learn/get-started)官网的推荐。

@ -1,10 +1,10 @@
# 11.5.DTK编程环境开发
# DTK编程环境开发
## 11.5.1. 介绍
## 介绍
DTK是deepin和UOS使用的一套开发框架它是基于Qt开发的所以在你需要先安装Qt的开发环境。
## 11.5.2. 安装
## 安装
### C++
@ -24,15 +24,15 @@ sudo apt install qt5-default qtbase5-dev qtcreator
sudo apt install dtkwidget-dev
```
## 11.5.3. 文本编辑器
## 文本编辑器
DTK是基于Qt开发的所以你可以使用任意的文本编辑器比如vim、emacs、vscode等。 和C++一样
## 11.5.4. IDE
## IDE
这里推荐使用QtCreator因为它是Qt官方出品的IDE当然如果你想使用其他支持C++的IDE也是可以的。
## 11.5.5. 文档资料
## 文档资料
- [DTK官方文档](https://docs.deepin.org/info/%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8/%E5%9F%BA%E7%A1%80%E7%8E%AF%E5%A2%83/DTK/%E5%BC%80%E5%8F%91)
- [Qt官方文档](https://doc.qt.io/qt-5/index.html)

@ -1,10 +1,10 @@
# 11.6. nodejs编程环境搭建
# nodejs编程环境搭建
Node.js发布于2009年5月由Ryan Dahl开发是一个基于Chrome V8引擎的JavaScript运行环境使用了一个事件驱动、非阻塞式I/O模型让JavaScript 运行在服务端的开发平台它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。
在几年的时间里Node.JS逐渐发展成一个成熟的开发平台吸引了许多开发者。有许多大型高流量网站都采用Node.JS进行开发此外开发人员还可以使用它来开发一些快速移动Web框架。除了Web应用外Node.JS也被应用在许多方面本文盘点了Node.JS在其它方面所开发的十大令人神奇的项目这些项目涉及到应用程序监控、媒体流、远程控制、桌面和移动应用等等。
## 11.6.1. 基础环境
## 基础环境
### 解释器
@ -53,7 +53,7 @@ npm全称是performant npm ,意味“高性能的 npm”。pnpm由npm/yarn衍
nvm全英文叫node.js version management是一个Nodejs的版本管理工具。nvm和npm都是Node.js版本管理工具为了解决Node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的Node.js。
## 11.6.2. 开发工具
## 开发工具
### vscode
@ -76,7 +76,7 @@ vscode作为一个轻量的编辑器安装nodejs相关插件可以进行nodej
WebStorm是作为JS开发IDE存在的并且支持流行的Node.js以及JQuery等js框架。对JS的支持是非常强大的有智能提示、断点调试、查看源码等等功能。但是非常占内存如果是开发小型项目推荐使用vscode。
## 11.6.3. 资源指南
## 资源指南
### 官方文档

@ -1,6 +1,6 @@
# 2.1.Debian软件包管理前提
# Debian软件包管理前提
## 2.1.1. 软件包配置
## 软件包配置
下面是 Debian 系统软件包配置的一些要点。
@ -16,7 +16,7 @@
- 高深的配置可以由系统管理员手动启用。这可能会对用于系统配置的通用流行帮助程序造成干
## 2.1.2. 基本的注意事项
## 基本的注意事项
::: warning
不要从任何的混合源中安装软件包。它可能会打破软件包的一致性,这需要你要深厚的系统管理知识,例如 ABI 编译器、库版本和解释器特性等等。
@ -45,7 +45,7 @@ deepin 系统默认只会提供软件的 stable 版本,除非你加入了测
负责有关键任务的服务器的严谨的 deepin 系统系统管理员,应该使用额外的预防措施。
## 2.1.3. 持续升级的生活
## 持续升级的生活
::: tip
如果你不了解软件包更新机制建议只使用deepin自带的系统更新。
@ -59,7 +59,7 @@ deepin 系统默认只会提供软件的 stable 版本,除非你加入了测
建议你这么做的同时准备好一个live CD的启动盘以便于在deepin无法正常工作的时候挽救你的系统。
## 2.1.4.deepin源
##deepin源
deepin源的指定在`/etc/apt/sources.list`文件下例如现在的v23 beige系统
@ -82,7 +82,7 @@ https://community-packages.deepin.com/beige/ beige main commercial community
如果只是用 aptitude它不访问源代码相关的元数据“deb-src”那行可以安全地删掉或者在文件开头添加 “#” 来将它注释掉。这可以加速档案库元数据的更新。URL 可以是“<http://>” 、“<ftp://>” 、 “file://” ……
## 2.1.5.软件包依赖关系
##软件包依赖关系
Debian 系统通过其控制文件字段中的版本化二进制依赖声明机制来提供一致的二进制软件包集合。下面有一些它们的简单定义。
@ -124,7 +124,7 @@ Debian 系统通过其控制文件字段中的版本化二进制依赖声明机
包含源代码依赖关系的官方定义位于 [the Policy Manual: Chapter 7 - Declaring relationships between packages](https://www.debian.org/doc/debian-policy/ch-relationships)。
## 2.4.5.APT包管理的事件流
##APT包管理的事件流
这是 APT 提供的软件包管理的简单事件流摘要。

@ -1,10 +1,10 @@
# 2.2.基础软件包管理操作
# 基础软件包管理操作
在 deepin 系统中有许多基于 APT 的软件包管理工具可以在 Debian 系统上进行基于仓库的软件包管理操作。在这里,我们将介绍 3 种基本的软件包管理工具apt,apt-get / apt-cache 和 aptitude以及一个包文件查询工具apt-file 。
对于涉及软件包安装或更新软件包元数据的软件包管理操作,你必须有 root 权限。
## 2.2.1. `apt` vs. `apt-get` / `apt-cache` vs. `aptitude`
## `apt` vs. `apt-get` / `apt-cache` vs. `aptitude`
尽管 `aptitude` 是作者主要使用的一个非常好的可互动工具,但不建议使用其进行跨版本升级。
@ -44,7 +44,7 @@ aptitude 命令是最通用的基于 APT 的软件包管理工具。
- aptitude 可以管理软件包的多个版本,并且不使用 /etc/apt/preferences这会十分直观。
## 2.2.2. 命令行中的基础软件包管理操作
## 命令行中的基础软件包管理操作
下面是使用 `apt`(8), `aptitude`(8) 和 `apt-get`(8) / `apt-cache`(8) 的命令行基本软件包管理操作。
@ -83,7 +83,7 @@ aptitude 命令是最通用的基于 APT 的软件包管理工具。
更多内容参见 `aptitude`(8) 和位于 “`/usr/share/doc/aptitude/README`” 的 “aptitude 用户手册”。
## 2.2.3. aptitude 的交互式使用
## aptitude 的交互式使用
此处不会详细解释其使用方式详见deepin wiki 以及 Debian对其介绍

@ -1,6 +1,6 @@
# 2.4.高级软件包管理操作
# 高级软件包管理操作
## 2.4.1. 命令行中的高级软件包管理操作
## 命令行中的高级软件包管理操作
下面列出一些高级的软件包管理操作,这些操作需要你对软件包管理有一定的了解。
约定:尖括号内容为你需要替换的内容。
@ -58,14 +58,14 @@ dpkg 的命令行选项 “--force-all” 和类似的选项(参见 dpkg(1)
make-kpkg 命令需要 kernel-package 软件包(参见 第 9.10 节 “内核”)。
通用打包参见 第 12.9 节 “制作 Debian 包”.
## 2.4.2. 验证安装的软件包文件
## 验证安装的软件包文件
已经安装 debsums 软件包的,能使用 debsums(1) 命令通过 "`/var/lib/dpkg/info/*.md5sums`" 文件中的 MD5sum 值,验证已安装的文件。参见第 10.3.5 节 “MD5 校验和”来获得 MD5sum 是怎样工作的信息。
::: warning 注意
因为 MD5sum 数据库可能被侵入者篡改debsums(1) 作为安全工具使用有限。这种工具用于校验管理者造成的本地修改或媒体错误造成的损坏是很不错的
:::
## 2.4.3. 预防软件包故障与故障处理
## 预防软件包故障与故障处理
如果你已经加入deepin内测计划那么我们可能会向你推送不稳定的软件包这些软件包可能会导致系统崩溃或者其他问题。如果你不想接收这些软件包可以在控制中心退出内测计划。
你需要关注内测SIG群以便及时了解内测软件包的情况。

@ -1,8 +1,8 @@
# 2.5.Debian软件包内部管理
# Debian软件包内部管理
deepin 采用了 Debian 的软件包管理机制,所以在 deepin 中,软件包的管理和 Debian 中的软件包管理是一样的。本节将介绍 Debian 中的软件包内部管理机制。
## 2.5.1. 档案库元数据
## 档案库元数据
每个发行版的元数据文件都保存在 deepin 镜像站的 “dist/codename” 下面,例如 “[https://community-packages.deepin.com/beige/](https://community-packages.deepin.com/beige/)”。档案库的结构可以通过网络浏览器来浏览。其中有 6 种关键的元数据。
@ -17,7 +17,7 @@ deepin 采用了 Debian 的软件包管理机制,所以在 deepin 中,软件
为了减少网络流量,在最近的档案库中,这些元数据存储为压缩了的差分文件。
## 2.5.2. 顶层“Release”文件及真实性
## 顶层“Release”文件及真实性
::: tip
顶层“Release”文件用于签署 secure APT 系统下的归档文件。
@ -61,7 +61,7 @@ MD5Sum:
因加密签名验证比计算 MD5sum 值消耗更多的 CPU使用 MD5sum 值来验证每一个软件包,使用加密签名来验证顶层的 "Release" 文件,这种方式提供[较好安全性的同时,也有比较好的性能](http://www.infodrom.org/~joey/Writing/Linux-Journal/secure-apt/) (参见 第 10.3 节 “数据安全基础”).
## 2.5.3. 档案库层的“Release”文件
## 档案库层的“Release”文件
::: tip
档案库层的“Release”文件将用作 apt_preferences(5) 的规则。
@ -91,7 +91,7 @@ Architecture: amd64
请注意,普通的档案库没有 "NotAutomatic: yes", 默认的 Pin-Priority 值是 500, 而对于有 "NotAutomatic: yes"的特殊档案库, 默认的 Pin-Priority 值是 1 (参见 apt_preferences(5) 和 第 2.7.3 节 “调整候选版本”).
## 2.5.4. 获取用于软件包的元数据
## 获取用于软件包的元数据
当使用 APT 工具时,如 aptitude, apt-get, synaptic, apt-file, auto-apt我们需要更新包含 Debian 档案库信息元数据的本地拷贝。这些本地拷贝的文件名称,和在 "/etc/apt/sources.list" 文件里面的 distribution, area, architecture 相应名称一致。 (参见 第 2.1.4 节 “Debian 档案库基础”).
@ -109,21 +109,21 @@ Architecture: amd64
"Contents-architecture"元数据的本地拷贝,能够被"apt-file update"更新,它的位置和其它 4 个不同。参见 apt-file(1). (auto-apt 的 "Contents-architecture.gz"文件的本地拷贝默认也使用不同的位置。)
## 2.5.5. APT 的软件包状态
## APT 的软件包状态
除了远程获取元数据lenny 之后的 APT 工具还会将它在本地产生的安装状态信息保存在 “/var/lib/apt/extended_states” 中APT 会使用它们来追踪自动安装的所有软件包。
## 2.5.6. aptitude 的软件包状态
## aptitude 的软件包状态
除了远程获取元数据aptitude 命令还会将它在本地产生的安装状态信息保存在 “/var/lib/aptitude/pkgstates” 中,这些信息只能被 aptitude 使用。
## 2.5.7. 获取的软件包的本地副本
## 获取的软件包的本地副本
所有通过 APT 机制远程获取的软件包都被保存在 “/var/cache/apt/archives” 中,直到它们被清除。
aptitude 的这个缓存文件清理策略,能够在"Options" → "Preferences"下设置,也可以通过它的菜单,"Actions"下的"Clean package cache" 或 "Clean obsolete files" 来执行强制清理。
## 2.5.8. deepin 软件包文件名称
## deepin 软件包文件名称
deepin 软件包名称和Debian 软件包名称类似,但是有一些不同。
@ -149,7 +149,7 @@ deepin.revision 的格式为:
3. 若需要集成native软件包到deepin则应改为quilt格式 遵循条例2
4. CI自动构建版本号 `x.y.z-${ver1}deepin${ver2}+u001+rb1`001为距离上一次修改changelog的commit次数rb1为rebuild次数依次累加
## 2.5.9. dpkg 命令
## dpkg 命令
dpkg(1) 是 Debian 软件包管理中最底层的工具。它非常强大,必须小心使用。

@ -1,4 +1,4 @@
# 2.6.从损坏的系统中恢复
# 从损坏的系统中恢复
当运行 测试版 或 不稳定版 系统,系统管理员会遇到从错误的软件包管理进行恢复的情形
@ -6,7 +6,7 @@
下面的一些方法具有很高的风险,可能会导致系统无法启动,或者导致数据丢失。请谨慎操作。
:::
## 2.6.1. 缺少依赖导致的安装失败
## 缺少依赖导致的安装失败
如果你通过"sudo dpkg -i ..."强制安装一个软件包到系统,而不安装它所依赖的所有软件包,这个软件包将作为“部分安装”而失败。
@ -21,19 +21,19 @@ dpkg --configure -a
最好参照[2.3节](2.3.为deepin添加来自debian或ubuntu的软件包.md)的内容进行解决。
:::
## 2.6.2. 软件包数据缓存错误
## 软件包数据缓存错误
软件包数据缓存错误,能够造成奇怪的错误,比如 APT 的 "GPG error: ... invalid: BADSIG ..."。
你应该通过 "`sudo rm -rf /var/lib/apt/*`" 删除所有缓存的数据,然后重新尝试。(如果使用了`apt-cacher-ng`,你还应运行"`sudo rm -rf /var/cache/apt-cacher-ng/*`"。)
## 2.6.3. 不兼容旧的用户配置
## 不兼容旧的用户配置
如果一个桌面 GUI 程序在重要的上游版本升级后变得不稳定,你应该怀疑这是旧的本地配置文件(由它创建的)所导致的。如果它在新建的用户账号下运行稳定,那么这个假设就得到了证实。(这是一个打包的 bug 并且打包者通常会避免它。)
为了恢复稳定,你应该移除相应的本地配置文件并重新启动 GUI 程序。你可能需要阅读旧的配置文件内容以便之后恢复配置信息。(别将它们删得太快了。)
## 2.6.4. 具有相同文件的不同软件包
## 具有相同文件的不同软件包
文档级的软件包管理系统,比如说 aptitude(8) 或 apt-get(1), 使用软件包依赖,当出现相同文件时,不会尝试去安装软件包。(参见 第 2.1.6 节 “软件包依赖关系”).
@ -48,7 +48,7 @@ dpkg --configure -a
sudo dpkg -P <old-package>
```
## 2.6.5. 修复损坏的软件包脚本
## 修复损坏的软件包脚本
当软件包脚本中的一个命令由于某些原因返回错误,脚本也将由于错误而退出,软件包管理系统忽略它们的行为,并导致部分安装的软件包。当一个软件包在它的删除脚本中有错误时,该软件包将会成为不可能删除的软件包,处理这些问题,都会变得相当棘手。
@ -64,7 +64,7 @@ sudo dpkg -P <old-package>
- 在行首添加 “#” 可以禁用出错的行
- 在出错行的行尾添加 “|| true” 可以强制返回成功
## 2.6.6. 使用 dpkg 命令进行救援
## 使用 dpkg 命令进行救援
因为 dpkg 是非常底层的软件包工具,它可以在很糟糕的情况下进行工作,例如无法启动系统且没有网络连接。让我们假定 foo 软件包损坏了,并且需要更换。
@ -108,7 +108,7 @@ sudo dpkg --root /target -i /path/to/foo_old_version_arch.deb
如果你无视之前的提醒义无反顾的使用混源方式安装软件包导致系统损坏建议直接备份数据在保留home目录的情况下重新安装系统。
:::
## 2.6.7. 恢复软件包选择数据
## 恢复软件包选择数据
如果 “`/var/lib/dpkg/status`” 因为某种原因出现错误Debian 系统会丢失软件包选择数据并受到严重影响。寻找位于 “`/var/lib/dpkg/status-old`” 或 “`/var/backups/dpkg.status.*`” 中旧的 “`/var/lib/dpkg/status”`" 文件。
@ -135,6 +135,6 @@ sort ls1.txt | uniq | less
然后你就可以根据软件包名称来进行安装了。(可能会有一些非软件包名称,例如 “texmf”。
## 2.6.8deepin软件包损坏以及修复方式
## deepin软件包损坏以及修复方式
如果和桌面环境相关的软件包损坏可以尝试安装deepin-desktop-base进行修复

@ -1,6 +1,6 @@
# 2.7. 软件包管理技巧
# 软件包管理技巧
## 2.7.1. 如何挑选合适的deepin 软件包
## 如何挑选合适的deepin 软件包
你可以根据 aptitude 这个包管理工具中的软件包描述或者是任务面板下的列表信息,来查找你所需要的软件包。
@ -18,7 +18,7 @@
更新日志维护者经常的更新可以在deepin-community仓库中查看
## 2.7.2. 混合源档案库中的软件包
## 混合源档案库中的软件包
::: warning 小心
从混合源档案库中安装软件包是不被 deepin 官方发行版所支持的,除了一些特殊情况,比如某个软件的安装方式指定需要你添加软件源
@ -56,7 +56,7 @@ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
为避免短期出现坏的软件包,从非官方支持的档案库安装二进制软件包通常是一个坏注意。即使你在使用 apt-pinning 情况下,也是这样的。(参见 第 2.7.3 节 “调整候选版本”).你应当考虑使用 chroot 或类似技术(参见 第 9.11 节 “虚拟化系统”)来运行不同档案库的程序。
:::
## 2.7.3. 调整候选版本
## 调整候选版本
::: danger 警告
⚠️新手用 apt-pinning 命令会造成比较大的问题。你必须避免使用这个命令除非确实需要它。
@ -125,14 +125,14 @@ NotAutomatic 和 ButAutomaticUpgrades 的档案是由档案库服务器上档案
- 档案库 (在 "/etc/apt/preferences" 文件作为"Package: *"定义) 的 Pin-Priority 值,列在所有档案库路径的左边,
例如,"100 <http://deb.debian.org/debian/> bullseye-backports/main Packages".
## 2.7.4. 更新和向后移植
## 更新和向后移植
::: warning 注意
deepin 不建议使用换源的方式进行大版本的更新,因为这样会导致系统的不稳定,建议使用 deepin 官方提供的升级工具进行升级。
或者按照后续补充文档教程进行更新
:::
## 2.7.5. 阻止推荐的软件包的安装
## 阻止推荐的软件包的安装
::: danger 警告
⚠️新手用 apt-pinning 命令会造成比较大的问题。你必须避免使用这个命令除非确实需要它。
@ -150,7 +150,7 @@ Pin: version *
Pin-Priority: -1
```
## 2.7.6. 使用testing档案库
## 使用testing档案库
deepin使用testing档案库的方法如下
控制中心申请加入内测。然后更新你的软件包即可
@ -159,7 +159,7 @@ deepin使用testing档案库的方法如下
内测更新后,不支持降级到稳定版本,如果你想要降级到稳定版本,可以使用备份还原的方式,或者退出内测后等待稳定版本发布。
:::
## 2.7.7. 自动下载和升级软件包
## 自动下载和升级软件包
::: danger 警告
⚠️新手用 apt-pinning 命令会造成比较大的问题。你必须避免使用这个命令除非确实需要它。
@ -183,7 +183,7 @@ APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "0";
```
## 2.7.8. 限制 APT 的下载带宽
## 限制 APT 的下载带宽
如果你想限制 APT 的下载带宽到 800Kib/sec=100KiB/sec你应该像下面那样设置 APT 的配置参数。
@ -191,7 +191,7 @@ APT::Periodic::Unattended-Upgrade "0";
APT::Acquire::http::Dl-Limit "800";
```
## 2.7.9. 上传软件包的是谁?
## 上传软件包的是谁?
尽管 “/var/lib/dpkg/available” 和 “/usr/share/doc/package_name/changelog” 中列出的维护者姓名提供了关于“软件包运作的幕后者是谁”这一问题的一些信息,
但软件包的实际上传者依旧不明。devscripts 软件包中的 who-uploads(1) 可以识别 deepin 源软件包的实际上传者。

@ -1,10 +1,10 @@
# 3.1. 启动过程概述
# 启动过程概述
你一定好奇从计算机开机到进入桌面,到底发生了什么?这篇文章将会带你了解一下启动过程。
计算机启动就像一个多级火箭发射的过程,每一级都有自己的任务,上一级完成任务后,下一级才能开始工作。这里我们将会从最底层的硬件开始,一步步的了解启动过程。
## 3.1.1. 第一级BIOSBasic Input/Output System
## 第一级BIOSBasic Input/Output System
BIOS是计算机的基本输入输出系统它是计算机的第一级启动程序它的主要功能是检测计算机的硬件配置然后将控制权交给操作系统。
@ -12,7 +12,7 @@ BIOS是计算机的基本输入输出系统它是计算机的第一级启动
还有一种启动程序叫做uboot它和UEFI类似但是不常见于我们日常使用的计算机中,主要存在于国产计算机和部分基于ARM的单板机中。
## 3.1.2. 第二级:引导加载程序
## 第二级:引导加载程序
引导加载程序是计算机的第二级启动程序,它的主要功能是加载操作系统内核,然后将控制权交给操作系统内核。
@ -62,13 +62,13 @@ menuentry 'deepin GNU/Linux' ... {
参见 “info grub” 及 grub-install(8)。
## 3.1.3. 第三级:内核
## 第三级:内核
内核是计算机的第三级启动程序,它的主要功能是加载操作系统的驱动程序,然后将控制权交给操作系统的第一个进程。
在我们deepin系统中内核是linux内核由上一级grub2加载。内核加载驱动程序所以你可以在内核启动参数中指定加载哪些驱动程序比如我们可以通过内核启动参数来指定加载nvidia显卡驱动。
## 3.1.4. 第四级:第一个进程
## 第四级:第一个进程
第一个进程是操作系统的第一个进程,它的主要功能是加载操作系统的其他进程,然后将控制权交给操作系统的第一个用户进程。

@ -1,14 +1,14 @@
# 3.2. Systemd初始化
# Systemd初始化
本节描述系统是怎样通过 PID=1 的 systemd(1) 程序来启动(即初始化进程)。
## 3.2.1. 什么是systemd
## 什么是systemd
systemd是Linux系统的一个守护进程它的作用是管理系统中的所有进程比如启动、停止、重启、查看状态等。
你可以使用`systemctl` 命令来管理systemd进程。详见[Systemd](https://wiki.deepin.org/zh/Systemd)
## 3.2.2. systemd的初始化
## systemd的初始化
systemd 初始化进程基于单元配置文件 (参见 systemd.unit(5)) 来并行派生进程,这些单元配置文件使用声明样式来书写,代替之前的类 SysV 的过程样式。这些单元配置文件从下面的一系列路径来加载 (参见 systemd-system.conf(5))
@ -46,13 +46,13 @@ systemd 提供向后兼容的功能。在 "/etc/init.d/rc[0123456S].d/[KS]name"
模拟的运行级别 2 到 4 全部被符号链接到了相同的“multi-user.target”。
:::
## 3.2.3. 主机名
## 主机名
内核维护系统主机名。在启动的时候,通过 systemd-hostnamed.service 启动的系统单位设置系统的主机名,此主机名保存在 "/etc/hostname"。这个文件应该只包含系统主机名,而不是全称域名。
不带参数运行 hostname(1) 命令可以打印出当前的主机名。
## 3.2.4. 文件系统
## 文件系统
硬盘和网络文件系统的挂载选项可以在 "/etc/fstab" 中设置,参见 fstab(5) 和 第 9.6.7 节 “通过挂载选项优化文件系统”。
@ -64,7 +64,7 @@ systemd 提供向后兼容的功能。在 "/etc/init.d/rc[0123456S].d/[KS]name"
每次启动的时候,在挂载了所有文件系统以后,"/tmp", "/var/lock", 和 "/var/run" 中的临时文件会被清空。
:::
## 3.2.5. 网络接口初始化
## 网络接口初始化
对于deepin网络接口通常由两个服务进行初始化lo 接口通常在“networking.service”处理而其它接口则由“NetworkManager.service”处理。

@ -1,4 +1,4 @@
# 3.3. 内核消息
# 内核消息
内核消息是内核向用户空间发送的消息,它们可以是错误、警告、信息等。

@ -1,4 +1,4 @@
# 3.4. 系统消息
# 系统消息
在 systemd 下, 内核和系统的信息都通过日志服务 systemd-journald.service (又名 journald)来记录,放在"/var/log/journal"下的不变的二进制数据,或放在"/run/log/journal/"下的变化的二进制数据.这些二进制日志数据,可以通过 journalctl(1) 命令来访问。例如,你可以显示从最后一次启动以来的日志,按如下所示:
```

@ -1,4 +1,4 @@
# 3.5. 系统管理
# 系统管理
systemd 不仅仅提供系统初始化,还用 systemctl(1) 命令提供通用的系统管理操作

@ -1,4 +1,4 @@
# 3.6. 其他系统监控
# 其他系统监控
这里是 systemd 下其它零星的监控命令列表。请阅读包括 cgroups(7) 在内的相关的 man 手册页
| 操作 | 命令片段 |

@ -1,6 +1,6 @@
# 3.7. 定制Systemd
# 定制Systemd
## 3.7.1. 套接字激活
## 套接字激活
套接字激活是指当一个服务需要监听一个端口时它不会直接监听而是由systemd来监听然后将连接转发给服务。这样做的好处是当服务不需要监听端口时systemd就不会监听从而节省了资源。

@ -1,4 +1,4 @@
# 3.8. udev系统
# udev系统
udev是一个用于管理设备节点的守护进程它会根据设备的属性来创建设备节点udev的配置文件位于/etc/udev/目录下
@ -12,7 +12,7 @@ udev是一个用于管理设备节点的守护进程它会根据设备的属
由于 udev 系统是一个正在变化的事物,我在其它文档进行了详细描述,在这里只提供了最少的信息。
## 3.8.1. 内核模块初始化
## 内核模块初始化
通过 modprobe(8) 程序添加和删除内核模块,使我们能够从用户进程来配置正在运行的 Linux 内核。udev 系统(参见 第 3.8 节 “udev 系统”)自动化它的调用来帮助内核模块初始化。