Skip to content

Commit ed8bfb0

Browse files
committed
ops/package: Promote apt over dpkg
1 parent c4e46a9 commit ed8bfb0

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

docs/ops/package.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,50 +26,52 @@ Debian 下还有很多包管理软件,如 Synaptics、Aptitude,这里不一
2626

2727
#### 安装软件包
2828

29-
如果我们需要安装一个名称为 name 的包
29+
如果我们需要安装一个 `package.deb` 软件包:
3030

31-
在手动下载 .deb 包后,使用 dpkg 直接安装 .deb 包
31+
在手动下载 .deb 包后,使用 apt 安装软件包
3232

3333
```shell
34-
dpkg -i <name_version.deb>
34+
apt install <path/to/package.deb>
3535
```
3636

37-
使用 apt 安装软件包
37+
对于没有额外依赖的软件,也可以使用 dpkg 直接安装
3838

3939
```shell
40-
apt install <name>
40+
dpkg -i <path/to/package.deb>
4141
```
4242

43-
如果 name 有未在系统上安装的依赖的话,那么第一个命令会失败(除非使用 `--force` 选项),第二个命令会下载对应的安装包及其依赖,并且进行安装
43+
如果该软件包有未在系统上安装的依赖的话,那么 `dpkg` 命令会失败(除非使用 `--force` 选项),因此**在绝大多数情况下,我们不推荐直接操作 `dpkg` 等底层命令**
4444

4545
#### 卸载软件包
4646

47-
使用 dpkg 直接卸载
47+
使用 apt 卸载
4848

4949
```shell
50-
dpkg -r <name>
50+
apt remove package_name
5151
```
5252

53-
使用 apt 卸载
53+
使用 dpkg 直接卸载
5454

5555
```shell
56-
apt remove name
56+
dpkg -r <package_name>
5757
```
5858

59+
与安装时的情况类似,如果 package_name 被其他软件包依赖,apt 会尝试将被依赖的软件包一并卸载(**请一定要看清楚 apt 列出的清单再确认**),而 `dpkg` 会失败。
60+
5961
那么现在产生了一个问题:要是我安装了一个有很多依赖的包,那么我们卸载它时依赖不会同时被卸载。这样依赖会一直占据我们电脑里面的空间。而手动卸载依赖并不直观,还可能破坏其他包的依赖。
6062

6163
因此,在使用 APT 安装一个包时,我们将其标记为 manual,在安装依赖时,我们将其标记为 automatic,
6264
那么我们知道**所有没有被 manual 直接或者间接依赖的 automatic 包**都是不必要的。
6365

64-
这样,我们可以使用`apt autoremove`来卸载不必要的包以释放存储空间。
66+
这样,我们可以使用 `apt autoremove` 来卸载不必要的包以释放存储空间。
6567

6668
#### 推荐与建议
6769

6870
安装软件包时,APT 在默认配置下会安装推荐(Recommended)的包。还会提示你可以安装建议(Suggested)的包以拓展原包的功能。
6971

7072
比如:apt 包的推荐有 ca-certificates,建议包有 aptitude、synaptic、gnupg、powermgmt-base 和 dpkg-dev
7173

72-
那么安装这个包时,会默认安装 ca-certificates,结束后会给出后面的包的提示
74+
那么安装这个包时,会默认安装 ca-certificates,并给出后面的包的提示
7375

7476
为了精简安装的软件包,可以使用 `--no-install-recommends` 的选项,以跳过推荐的软件包。
7577

0 commit comments

Comments
 (0)