个人主页:董哥聊技术 我是董哥,嵌入式领域新星创作者 创作理念:专注分享高质量嵌入式文章,让大家读有所得!
文章目录
哈喽,老伙计们!
最近
EndeavourOS
也使用了一段时间,由于一些突发状况,不得不去重装系统。
登录上
DistroWatch
网站,发现
EndeavourOS
已经干掉了
Manjaro
,冲到了第二名;结合自己的使用体验,虽然也会遇到一些坑,但是无伤大雅,因此决定再次安装
EndeavourOS
。
1、ArchLinux
EndeavourOS
也属于
ArchLinux
的派生版。
ArchLinux
是一个独立开发的
x86-64
通用的
GNU/Linux
发行版,由加拿大程序设计师
Judd Vinet
从2001年早起开始开发,在2002年3月正式发行!
它致力于通过滚动发布来提供大多数软件的最新稳定版本。默认安装一个最小的基本系统,由用户配置添加有意需要的内容。
1.1 ArchLinux原则
ArchLinux
项目遵循简洁主义,其主要设计原则有:
- 简单:避免任何不必要的添加、修改
- 现代:尽全力保持处于最新的稳定版本,采用滚动升级策略,安装之后可以持续升级。
- 实用:仓库中既提供了开源、自由的软件,也提供了闭源软件。实用性大于意识形态。
- 用户中心性:该发行版旨在满足为其贡献者的需求,而不是试图吸引尽可能多的用户。它面向精通 GNU/Linux 的用户,或任何愿意阅读文档并解决自己问题的自己动手的态度的人。
- 多功能性:Arch Linux 是一个通用的发行版。安装时只提供命令行环境;用户无需删除不需要的包,而是可以通过在x86-64架构的官方软件仓库中提供的数千个高质量包中进行选择来构建自定义系统。
1.2 软件包管理
1.2.1 软件仓库
ArchLinux
现存在以下官方仓库:
core
:包含启动系统所必需的、链接互联网时可能需要的、编译软件包时需要的、检查、修复文件系统的工具、在安装过程中可能用到的软件包和它们的依赖。extra
:提供基本系统不需要的软件包,包括桌面环境和其他程序。community
:提供由社区构建和投票的软件包,包括因有足够投票而被“Trusted User”所收养的。multilib
:为x86_64用户提供的支持在64位环境下使用32位软件的集中化仓库。
1.2.2 包管理器
archlinux
平台,常用的包管理器是
pacman
和
aur
,我们一般使用这两个包管理器来安装需要的软件。
pacman
:ArchLinux
官方使用的软件包管理器,具有依赖处理和构建软件包的功能。AUR
:Arch
用户软件仓库(AUR:Arch User Repository)
,是一个面对广大Arch
用户,以社区为主导的软件仓库,由开发者贡献他们自己的软件包,AUR
社区对其进行投票,一旦某个软件包拥有足够多的票数,AUR
的受信用户就会将它加入到[community]
软件库,使得可以通过pacman来使用它们。
2、Pacman
2.1 pacman介绍
pacman
软件包管理器,是
ArchLinux
的一大亮点,其可以自动解决安装过程中的依赖问题, 自动下载并且安装所需要的软件包。
2.2 pacman常用命令
pacman -S <package>
:安装指定软件包pacman -R <package>
:移除指定软件包pacman -U <package>
:更新指定软件包pacman -Ss <package>
:查询指定软件包pacman -Syy
:同步软件包,让本地的包数据库与远程的软件仓库同步pacman -Syu
:同步远程软件库到本地,并保持系统到最新状态。
具体详细的命令可以参考
man pacman
,
2.3 pacman安装流程
虽然我们经常随心所欲的
pacman
,但是我们真的知道其行为背后的意义吗?
出问题的时候,我们能够准确定位到哪个环节的问题吗?
下面我们分析一下
pacman
背后的动作!
我们以
flameshot
为例,来看一下
pacman
安装流程
2.3.1 查询软件包
我们安装软件时,要确保远程
arch
软件仓库是否有对应的软件,以确保能够正常下载软件包。
查询方式有两种:
sudo pacman -Ss"flameshot"#可以根据关键词查找
- 第一种正如上面所写, 直接命令行查询!
- 第二种:进入官方
Arch
软件仓库网站,进行查询https://archlinux.org/packages/
2.3.2 安装软件包
查询到想要的软件包后,进行安装!
sudo pacman -S flameshot # 写上对应的包名
安装过程,我们也来详细分析一下!
sudo pacman -S flameshot # 写上对应的包名[sudo] donge 的密码:正在解析依赖关系...
正在查找软件包冲突...
软件包 (1) 新版本 净变化 下载大小
community/flameshot 12.1.0-1 2.78 MiB 0.58 MiB
下载大小: 0.58 MiB
全部安装大小: 2.78 MiB
:: 进行安装吗? [Y/n] y
:: 正在获取软件包......
flameshot-12.1.0-1-x86_64 593.3 KiB 721 KiB/s 00:01 [--------------------------------------------------------------------]100%
(1/1) 正在检查密钥环里的密钥 [--------------------------------------------------------------------]100%
(1/1) 正在检查软件包完整性 [--------------------------------------------------------------------]100%
(1/1) 正在加载软件包文件 [--------------------------------------------------------------------]100%
(1/1) 正在检查文件冲突 [--------------------------------------------------------------------]100%
:: 正在处理软件包的变化...
(1/1) 正在安装 flameshot [--------------------------------------------------------------------]100%
flameshot 的可选依赖 gnome-shell-extension-appindicator: for system tray icon if you are using Gnome
grim: for wlroots wayland support
xdg-desktop-portal: for wayland support, you will need the implementation for your wayland desktop environment
:: 正在运行事务后钩子函数...
(1/3) Arming ConditionNeedsUpdate...
(2/3) Updating icon theme caches...
(3/3) Updating the desktop file MIME type cache...
- 查找依赖关系,并解析依赖关系,如果有的话,会先安装依赖项!
- 查找软件包:在
Arch
软件管理中查询指定包,并进行下载。为了确保包的安全性,还要进行以下校验: 1. 密钥检查2. 完整性检查3. 下载软件包4. 检查文件冲突 - 运行事后钩子函数 1. 条件更新检查2. 图标主题更新3. 桌面文件更新
最终,我们可以在桌面上直接调用该程序。
Tip
:
我们通过
pacman
下载的软件,一般存储在
/var/cache/pacman/pkg/
路径下,其后缀为
tar.zst
的压缩文件,然后再进行的安装。
我们如果在网上下载其他的
tar.zst
后缀文件,我们可以通过
pacman -U xxx.tar.zst
命令直接安装!
3、AUR
3.1 AUR介绍
**
AUR:Arch User Repository
——Arch 用户软件仓库,是一个面对广大
Arch
用户、以社区为主导的软件仓库。**
AUR
的初衷是组织社区内分享
PKGBUILD
,
AUR
社区对它们进行投票或反对,一旦某个软件包拥有足够多的票数,
AUR
的受信用户就会将它加入到
[community]
软件库,使得可以通过
pacman
和
ABS
来使用它们。
谈到
AUR
,就不得不想到
Yay
!
yay——AUR Helper
Yay
是
Arch Linux
下基于
CLI
的最佳 AUR 助手,使用 Go 语言编写。我们能够使用
yay
快速安装
AUR
发布的软件包!
Tip
:
- 开发者一般提交的都是一个用包描述文件的集合(PKGBUILD)
- 通过
yay
对包文件(PKGBUILD)
的解析,能够用于创建压缩包(.pkg.tar.zst)。 - 最后生成的压缩包进行安装。
该描述文件为
PKGBUILD
可以被
yay
、
pamac
、
aurman
等工具自动构建或者
makepkg
手动构建,最后生成压缩包,用于安装软件。
AUR上的所有内容都是由普通用户上传的,很少对他们的内容进行检查,由您来验证内容是否可以安全使用
3.2 常用命令
yay -S <package_name>
:安装指定软件包yay -R <package_name>
:移除i指定软件包yay <package_name>
:查找指定安装包yay
:更新pacman
和aur
包
3.3 yay安装流程
**同样,我们使用
yay
来进行安装时,最好去弄明白其背后的原理!**
我们以
wexin
为例
3.3.1 查询软件包
我们安装软件时,要确保远程
AUR
软件仓库是否有对应的软件,以确保能够正常下载软件包。
查询方式有两种:
yay "weixin"#可以根据关键词查找
- 第一种正如上面所写, 直接命令行查询!
- 第二种:进入官方
AUR
软件仓库网站,进行查询https://aur.archlinux.org/packages 在网站 中寻找安装包,可以根据Version
、Votes
、Plpularlty
来选择合适的安装包!
3.3.2 安装软件包
查询到想要的软件包后,进行安装!
yay -S weixin # 写上对应的包名
安装过程,我们也来详细分析一下!
$ yay weixin
6 aur/deepin-wxwork 2.8.10.2010deepin0-2 (+3 0.00)(孤立)(过时的: 2021-12-13)
Tencent Weixin Work Client on Deepin Wine
5 aur/com.qq.weixin.work.deepin-x11 4.0.0.6007deepin10-1 (+3 1.44)
Deepin Wine Weixin Work on x11
4 aur/com.qq.weixin.work.deepin 3.1.12.6001deepin8-1 (+9 0.01)(孤立)(过时的: 2021-12-13)
Deepin Wine Weixin Work
3 aur/com.qq.weixin.deepin 3.2.1.154_14-2 (+12 0.57)
Deepin Wine WeChat
2 aur/com.qq.weixin.spark 3.7.6.44spark0-1 (+16 0.15)
Tencent WeChat Client from Spark Store
1 aur/deepin-wine-wechat 3.7.6.44-1 (+60 3.18)(过时的: 2022-11-14)
Tencent WeChat on Deepin Wine(com.qq.weixin.deepin) For Archlinux
==> 要安装的包 (示例: 123, 1-3 或 ^4)==>3
:: 正在检查冲突...
:: 正在检查内部冲突...
[Repo Make:55] libyuv-r2322+3aebf69d-1 libavif-0.11.1-1 libheif-1.14.0-1 gd-2.3.3-5 libgphoto2-2.5.30-1 libudev0-shim-1-4 vkd3d-1.5-1 libjpeg6-turbo-1.5.3-2 lib32-alsa-lib-1.2.8-1 lib32-alsa-plugins-1.2.7.1-1 lib32-libxtst-1.2.4-1 lib32-at-spi2-core-2.46.0-2 lib32-colord-1.4.6-1 lib32-gdk-pixbuf2-2.42.10-1 lib32-libogg-1.3.5-1
............
:: 安装后删除生成依赖? [y/N]
:: (1/4) 下载了 PKGBUILD: deepin-udis86
:: (2/4) 下载了 PKGBUILD: deepin-wine6-stable
:: (3/4) 下载了 PKGBUILD: deepin-wine-helper
:: (4/4) 下载了 PKGBUILD: com.qq.weixin.deepin
4 deepin-udis86 (构建文件已存在)3 deepin-wine6-stable (构建文件已存在)2 deepin-wine-helper (构建文件已存在)1 com.qq.weixin.deepin (构建文件已存在)==> 显示哪些差异?==>[N]没有 [A]全部 [Ab]中止 [I]已安装 [No]未安装 或 (123, 1-3, ^4)==>
:: (1/4) 正在解析 SRCINFO: deepin-udis86
:: (2/4) 正在解析 SRCINFO: deepin-wine6-stable
:: (3/4) 正在解析 SRCINFO: deepin-wine-helper
:: (4/4) 正在解析 SRCINFO: com.qq.weixin.deepin
正在解析依赖关系...
正在查找软件包冲突...
软件包 (55) 新版本 净变化 下载大小
extra/gd 2.3.3-5 0.67 MiB 0.15 MiB
multilib/lib32-alsa-lib 1.2.8-1 1.10 MiB 0.38 MiB
multilib/lib32-alsa-plugins 1.2.7.1-1 0.30 MiB 0.07 MiB
multilib/lib32-at-spi2-core 2.46.0-2 0.64 MiB 0.17 MiB
multilib/lib32-cairo 1.17.6-2 1.61 MiB 0.61 MiB
............
下载大小: 20.20 MiB
全部安装大小: 73.18 MiB
:: 进行安装吗? [Y/n]
:: 正在获取软件包......
lib32-gst-plugins-base-libs-1.20.4-1-x86_64 1548.6 KiB 633 KiB/s 00:02 [--------------------------------------------------------------------]100%
lib32-gtk3-1:3.24.35-2-x86_64 2.8 MiB 1097 KiB/s 00:03 [----------------------------
............
:: 正在运行事务后钩子函数...
(1/7) Updating udev hardware database...
(2/7) Reloading device manager configuration...
(3/7) Arming ConditionNeedsUpdate...
(4/7) Updating the MIME type database...
(5/7) Probing GDK-Pixbuf loader modules...
(6/7) Probing 32-bit GDK-Pixbuf loader modules...
(7/7) Probing 32-bit GTK3 input method modules...
==> 正在创建软件包:com.qq.weixin.deepin 3.2.1.154_14-2 (2022年11月26日 星期六 21时06分21秒)==> 获取源代码...
-> 正在下载 com.qq.weixin.deepin_3.2.1.154deepin14_i386.deb...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
00000000 --:--:-- --:--:-- -
............==> 正在验证 source 文件,使用md5sums...
udis86_1.72-4_i386.deb ... 通过100 670k 100 670k 00 394k 00:00:01 0:00:01 --:--:-- 394k 0 00 : 000::0002: 2-6- : -0-::0-0-: 010: 000::0002: 252 4236k89k
............==> 正在检查运行时依赖关系...
==> 正在检查编译时依赖关系==> 获取源代码...
-> 找到 udis86_1.72-4_i386.deb
==> 正在验证 source 文件,使用md5sums...
udis86_1.72-4_i386.deb ... 通过==> 正在删除现存的 $srcdir/ 目录...
==> 正在释放源码...
-> 正在解压缩 udis86_1.72-4_i386.deb,使用 bsdtar
==> 源代码已就绪。==> 正在创建软件包:deepin-udis86 1.72_4-2 (2022年11月26日 星期六 21时07分21秒)==> 正在检查运行时依赖关系...
==> 正在检查编译时依赖关系==> 警告: 使用现存的 $srcdir/ 树==> 正在进入 fakeroot 环境...
==> 正在开始 package()...
==> 正在清理安装...
-> 正在删除 libtool 文件...
-> 正在清除不打算要的文件...
-> 正在移除静态库文件...
-> 正在从二进制文件和库中清除不需要的系统符号...
-> 正在压缩 man 及 info 文档...
==> 正在检查打包问题...
==> 正在构建软件包"deepin-udis86"...
-> 正在生成 .PKGINFO 文件...
-> 正在生成 .BUILDINFO 文件...
-> 正在生成 .MTREE 文件...
-> 正在压缩软件包...
==> 正在离开 fakeroot 环境。==> 完成创建:deepin-udis86 1.72_4-2 (2022年11月26日 星期六 21时07分24秒)==> 清理中...
-> libgphoto2 未满足,正在刷新安装队列正在加载软件包...
正在解析依赖关系...
正在查找软件包冲突...
软件包 (1) 新版本 净变化
deepin-udis86 1.72_4-2 0.14 MiB
全部安装大小: 0.14 MiB
:: 进行安装吗? [Y/n](1/1) 正在检查密钥环里的密钥 [--------------------------------------------------------------------]100%
(1/1) 正在检查软件包完整性 [--------------------------------------------------------------------]100%
(1/1) 正在加载软件包文件 [--------------------------------------------------------------------]100%
(1/1) 正在检查文件冲突 [--------------------------------------------------------------------]100%
:: 正在处理软件包的变化...
(1/1) 正在安装 deepin-udis86 [--------------------------------------------------------------------]100%
:: 正在运行事务后钩子函数...
(1/1) Arming ConditionNeedsUpdate...
==> 正在创建软件包:deepin-wine6-stable 6.0.0.39-1 (2022年11月26日 星期六 21时07分25秒)==> 正在检查运行时依赖关系...
==> 正在检查编译时依赖关系==> 获取源代码...
-> 找到 deepin-wine6-stable_6.0.0.39-1_amd64.deb
==> 正在验证 source 文件,使用sha256sums...
deepin-wine6-stable_6.0.0.39-1_amd64.deb ... 通过==> 正在删除现存的 $srcdir/ 目录...
==> 正在释放源码...
==> 源代码已就绪。==> 正在创建软件包:deepin-wine6-stable 6.0.0.39-1 (2022年11月26日 星期六 21时07分28秒)==> 正在检查运行时依赖关系...
==> 正在检查编译时依赖关系==> 警告: 使用现存的 $srcdir/ 树==> 正在进入 fakeroot 环境...
==> 正在开始 package_deepin-wine6-stable()...
==> 正在清理安装...
-> 正在删除 libtool 文件...
-> 正在清除不打算要的文件...
-> 正在移除静态库文件...
-> 正在从二进制文件和库中清除不需要的系统符号...
-> 正在压缩 man 及 info 文档...
==> 正在检查打包问题...
==> 正在构建软件包"deepin-wine6-stable"...
-> 正在生成 .PKGINFO 文件...
-> 正在生成 .BUILDINFO 文件...
-> 正在生成 .MTREE 文件...
-> 正在压缩软件包...
==> 正在离开 fakeroot 环境。==> 完成创建:deepin-wine6-stable 6.0.0.39-1 (2022年11月26日 星期六 21时08分45秒)==> 清理中...
-> p7zip 未满足,正在刷新安装队列正在加载软件包...
............
:: 正在运行事务后钩子函数...
(1/3) Arming ConditionNeedsUpdate...
(2/3) Updating icon theme caches...
(3/3) Updating the desktop file MIME type cache...
- 查找软件包,选择对应软件包进行下载
- 检查并下载
PKGBUILD
构建文件,以确保安全性 - 通过
PKGBUILD
i来检查并解析依赖项,进行下载,以解决软件依赖关系 - 下载所需要的软件包,并进行校验
- 最后进行安装软件包
Tip
:
我们通过
yay
下载的
PKGBUILD
构建文件,一般存储在
~/.cache/yay/
路径下。
根据
PKGBUILD
构建文件,下载后缀为
tar.zst
的软件包,然后再进行的安装。
我们在网上直接下载的
PKGBUILD
文件,也可以通过以下命令安装
# 生成后缀.pkg.tar.xz的压缩文件
makepkg
# 使用pacman安装sudo pacman -U *.pkg.tar.xz
4、deb包安装
最后,我们来了解以下
Ubuntu/Debian
系统下的
deb
包如何安装!
大体思路如下:
- 将
deb
包转化为archlinux
所能直接安装的包,如tar.zst
- 然后利用
sudo pacman -U *.pkg.tar.zst
命令安装
通常,将
deb
包转换为
tar.zst
的工具使用用
debtap
。
Good Luck!
5、推荐文章
[1]:https://blog.csdn.net/maweizz/article/details/122113502
[2]:https://blog.csdn.net/weixin_53064820/article/details/127680536
点赞+关注,永远不迷路
版权归原作者 卍一十二画卍 所有, 如有侵权,请联系我们删除。