Skip to content

Commit

Permalink
doc: update docs/pacman.md (#357)
Browse files Browse the repository at this point in the history
  • Loading branch information
jaywcjlove committed Apr 25, 2023
1 parent ac217e7 commit fa15c32
Showing 1 changed file with 109 additions and 79 deletions.
188 changes: 109 additions & 79 deletions docs/pacman.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
PACMAN 备忘清单
Pacman 备忘清单
===

这个 PACMAN 快速参考备忘单显示了它的常用命令使用清单。
这个是 Arch Linux 软件包管理器 Pacman 快速参考备忘单显示了它的常用命令使用清单。

PACMAN 清单查询
---

### 介绍
<!--rehype:wrap-class=row-span-2-->
Pacman软件包管理器是 Arch Linux 的一大亮点。它将一个简单的二进制包格式和易用的构建系统结合了起来。Pacman的目标是简化对软件包的管理,无论软件包是来自官方软件仓库还是用户自己创建的软件包。

Pacman 通过和主服务器同步软件包列表来保持系统是最新的。这种服务器/客户端模式可使得用户使用简单的命令,就能下载或安装软件包,并包含其所有必需的依赖包。
Pacman 是 Arch Linux 软件包管理器。帮助您在 Arch Linux 上使用 Pacman 软件包管理器进行软件包的安装、升级、搜索和删除等操作

---

命令语法格式

Expand Down Expand Up @@ -38,13 +39,16 @@ $ pacman
$ man pacman
```

----
请注意,使用 Pacman 命令时,需要管理员权限 `sudo`

---

相关参考文献

- [Archlinux Wiki 官方文档](https://wiki.archlinuxcn.org/wiki/Pacman)

### 示例
<!--rehype:wrap-class=row-span-2-->

Option | Function
:-- | --
Expand All @@ -57,7 +61,13 @@ Option | Function
`pacman -F, --files` | 查询文件数据库。
`pacman -V, --version` | 显示版本
`pacman -h, --help` | 显示帮助信息
<!--rehype:className=code-nowrap-->
<!--rehype:className=style-list-arrow-->

升级所有已安装的软件包

```bash
$ sudo pacman -Syu
```

### 安装

Expand Down Expand Up @@ -91,193 +101,213 @@ $ pacman -S plasma-{desktop,mediacenter,nm}
$ pacman -S plasma-{workspace{,-wallpapers},pa}
```

### 清理软件包缓存

pacman 将下载的软件包保存在 /var/cache/pacman/pkg/ 并且不会自动移除旧的和未安装版本的软件包
### 安装包组

要删除目前没有安装的所有缓存的包,和没有被使用的同步数据库
一些包属于一个可以同时安装的软件包组

```bash
$ pacman -Sc
$ pacman -S gnome
```

要删除缓存中的全部文件
想要查看哪些包属于 gnome 组

```bash
$ pacman -Scc
$ pacman -Sg gnome
```

### 安装包组
### 查询包数据库
<!--rehype:wrap-class=row-span-3-->

一些包属于一个可以同时安装的软件包组
pacman 使用 -Q 参数查询本地软件包数据库, -S 查询同步数据库,以及 -F查询文件数据库

pacman 可以在包数据库中查询软件包,查询位置包含了软件包的名字和描述

```bash
$ pacman -S gnome
$ pacman -Ss string1 string2 ...
```

想要查看哪些包属于 gnome 组
使用正则

```bash
$ pacman -Sg gnome
$ pacman -Ss '^vim-'
```

### 删除软件包

删除单个软件包,保留其全部已经安装的依赖关系
要查询已安装的软件包:

```bash
$ pacman -R package_name
$ pacman -Qs string1 string2 ...
```

删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系
按文件名查找软件库

```bash
# ⚠️删除类似 gnome 这样的软件包组时,将会忽略组中软件包的安装原因,因为实际操作上执行的是逐一删除软件组的每一个软件,依赖软件包的安装原因不会被忽略。
$ pacman -Rs package_name
$ pacman -F string1 string2 ...
```

<!--rehype:className=wrap-text -->

要删除软件包和所有依赖这个软件包的程序:
显示软件包的详尽的信息:

```bash
# ⚠️此操作是递归的,请小心检查,可能会一次删除大量的软件包。
$ pacman -Rsc package_name
$ pacman -Si package_name
```

要删除一个被其他软件包依赖的软件包,但是不删除依赖这个软件包的其他软件包
查询本地安装包的详细信息:

```bash
# ⚠️ 此操作有破坏系统的能力,应该尽量避免使用
$ pacman -Rdd package_name
$ pacman -Qi package_name
```

### 其它命令

升级系统时安装其他软件包:
同时显示备份文件和修改状态:

```bash
$ pacman -Syu package_name1 package_name2 ...
$ pacman -Qii package_name
```

下载包而不安装它
要获取已安装软件包所包含文件的列表

```bash
$ pacman -Sw package_name
$ pacman -Ql package_name
```

安装一个本地包(不从源里下载)
查询远程库中软件包包含的文件:

```bash
$ pacman -U /path/to/package/package_name-version.pkg.tar.zst
$ pacman -Fl package_name
```

要将本地包保存至缓存
查软件包安装的文件是否都存在:

```bash
$ pacman -U file:///path/to/package/package_name-version.pkg.tar.zst
$ pacman -Qk package_name
```

安装一个远程包(不在 pacman 配置的源里面):
查询数据库获取某个文件属于哪个软件包

```bash
$ pacman -U http://www.example.com/repo/example.pkg.tar.zst
$ pacman -Qo /path/to/file_name
```

### 查询包数据库
查询文件属于远程数据库中的哪个软件包:

pacman 使用 -Q 参数查询本地软件包数据库, -S 查询同步数据库,以及 -F查询文件数据库
```bash
$ pacman -F /path/to/file_name
```

pacman 可以在包数据库中查询软件包,查询位置包含了软件包的名字和描述
查询所有不再作为依赖的软件包(孤立orphans):

```bash
$ pacman -Ss string1 string2 ...
$ pacman -Qdt
```

使用正则
查询所有明确安装而且不被其它包依赖的软件包:

```bash
$ pacman -Ss '^vim-'
$ pacman -Qet
```

要查询已安装的软件包:
### 清理软件包缓存

pacman 将下载的软件包保存在 /var/cache/pacman/pkg/ 并且不会自动移除旧的和未安装版本的软件包

要删除目前没有安装的所有缓存的包,和没有被使用的同步数据库

```bash
$ pacman -Qs string1 string2 ...
$ pacman -Sc
```

按文件名查找软件库:
要删除缓存中的全部文件

```bash
$ pacman -F string1 string2 ...
$ pacman -Scc
```

显示软件包的详尽的信息:
#### Pactree

> 注意: pactree 不再是pacman包的一部分。它现在在pacman-contrib包中。
要显示软件包的依赖树:

```bash
$ pacman -Si package_name
$ pactree package_name
```

查询本地安装包的详细信息:
### 删除软件包

删除单个软件包,保留其全部已经安装的依赖关系

```bash
$ pacman -Qi package_name
$ pacman -R package_name
```

同时显示备份文件和修改状态
删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系

```bash
$ pacman -Qii package_name
# ⚠️删除类似 gnome 这样的软件包组时,将会忽略组中软件包的安装原因,因为实际操作上执行的是逐一删除软件组的每一个软件,依赖软件包的安装原因不会被忽略。
$ pacman -Rs package_name
```

要获取已安装软件包所包含文件的列表:
<!--rehype:className=wrap-text -->

要删除软件包和所有依赖这个软件包的程序:

```bash
$ pacman -Ql package_name
# ⚠️此操作是递归的,请小心检查,可能会一次删除大量的软件包。
$ pacman -Rsc package_name
```

查询远程库中软件包包含的文件:
要删除一个被其他软件包依赖的软件包,但是不删除依赖这个软件包的其他软件包

```bash
$ pacman -Fl package_name
# ⚠️ 此操作有破坏系统的能力,应该尽量避免使用
$ pacman -Rdd package_name
```

查软件包安装的文件是否都存在:
### 查询一个包含具体文件的包名

同步文件数据库:

```bash
$ pacman -Qk package_name
$ pacman -Fy
```

查询数据库获取某个文件属于哪个软件包
查询包含某个文件的包名,比如:

```bash
$ pacman -Qo /path/to/file_name
$ pacman -F pacman
core/pacman 5.0.1-4
usr/bin/pacman
usr/share/bash-completion/completions/pacman
extra/xscreensaver 5.36-1
usr/lib/xscreensaver/pacman
```

查询文件属于远程数据库中的哪个软件包:
### 其它命令

升级系统时安装其他软件包:

```bash
$ pacman -F /path/to/file_name
$ pacman -Syu package_name1 package_name2 ...
```

查询所有不再作为依赖的软件包(孤立orphans)
下载包而不安装它

```bash
$ pacman -Qdt
$ pacman -Sw package_name
```

查询所有明确安装而且不被其它包依赖的软件包:
安装一个本地包(不从源里下载)

```bash
$ pacman -Qet
$ pacman -U /path/to/package/package_name-version.pkg.tar.zst
```

#### Pactree
要将本地包保存至缓存

> 注意: pactree 不再是pacman包的一部分。它现在在pacman-contrib包中。
```bash
$ pacman -U file:///path/to/package/package_name-version.pkg.tar.zst
```

要显示软件包的依赖树
安装一个远程包(不在 pacman 配置的源里面)

```bash
$ pactree package_name
$ pacman -U http://www.example.com/repo/example.pkg.tar.zst
```

1 comment on commit fa15c32

@Darkiiiiiice
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感谢修正,我正在尝试学习相关的排版和样式🙏

Please sign in to comment.