晚上好 世界

晚上好 世界

早安

  1. 转到 统一身份认证服务 IAM,添加两个用户组,

一个 用户组 代表使用 docker 将镜像推送至 容器服务 的开发者们(需要推送至镜像服务的权限),我这里是 orreos
另外一个 用户组 代表需要从 容器服务 下载镜像的服务器集群们(只需要从镜像服务拉取的权限),我这里是 servers

统一身份认证服务 IAM / 用户组

  1. 点右边授权,分别为这两个用户组添加必要的权限。

服务器集群组给一个 SWR ReadOnlyAccess 容器镜像仓库只读权限
开发者组给一个 SWR FullAccess 容器镜像仓库所有权限

  1. 转到 用户 ,添加对应的 开发者、服务器 实体(我这里 orreo 用户是开发者,orreo-server 用户是服务器集群)

统一身份认证服务 IAM / 用户

添加的时候不要忘记下载访问密钥,稍等会有用!

  1. 转到 容器镜像服务控制台,点右上角登录指令

2025-04-20T13:13:47.png

在这里导入刚才的访问密钥,点生成指令即可获取到密钥!


使用示例:

cd $HOME

mkdir dotfiles #这个文件夹存放你的配置文件

mv .bashrc .bash_profile dotfiles #将这两个配置文件移入dotfiles中

cd dotfiles
stow .

看看效果:

cd $HOME
ll .bashrc .bash_profile
lrwxrwxrwx orreo orreo 22 B Sun Apr 13 15:00:37 2025  .bash_profile ⇒ dotfiles/.bash_profile
lrwxrwxrwx orreo orreo 16 B Sun Apr 13 15:00:37 2025  .bashrc ⇒ dotfiles/.bashrc

迁移系统时,只需要备份dotfiles即可。
在新系统上把 dotfiles 放到 $HOME 下,然后

cd dotfiles
stow .

即可“还原”配置文件

stow . 的作用是将当前目录(.)下的软件包(指一组按照特定目录结构组织的文件)通过符号链接(symlink)的方式安装到目标目录(通常是系统的 /usr/local~/.local),从而方便管理用户或系统级的软件安装。

具体作用:

  1. 组织文件结构
    Stow 假设当前目录(比如 ./package-name)下的文件结构是目标目录(如 /usr/local)的镜像。例如:

    ./package-name/
    ├── bin/
    │   └── myapp
    ├── lib/
    │   └── libmylib.so
    └── share/
        └── doc/
            └── README

    运行 stow package-name 后,这些文件会通过符号链接映射到 /usr/local/bin/myapp/usr/local/lib/libmylib.so 等位置。

  2. 避免直接复制文件
    Stow 使用符号链接而非直接复制文件,便于后续更新或卸载(只需修改链接,无需删除实际文件)。
  3. 适用于当前目录(.
    如果直接运行 stow .,Stow 会处理当前目录下的所有子目录(每个子目录视为一个独立的软件包)。例如:

    ./
    ├── pkg1/
    ├── pkg2/
    └── pkg3/

    stow . 会同时处理 pkg1pkg2pkg3,将它们链接到目标目录。

常用选项:

  • -d DIR:指定 Stow 的根目录(默认为当前目录)。
  • -t TARGET:指定目标目录(默认为上级目录,比如 /usr/local~/.local)。
  • -n:模拟运行(不实际操作,仅显示将要执行的动作)。
  • -v: verbose 模式(显示详细操作)。

示例:

# 假设当前目录是 ~/stow-packages,包含一个子目录 myapp/
cd ~/stow-packages
stow -t /usr/local .  # 将当前目录下所有包(如 myapp)链接到 /usr/local

注意事项:

  • 需要确保目标目录(如 /usr/local)有写入权限。
  • 卸载时用 stow -D . 删除所有符号链接。
  • 如果文件冲突(目标路径已存在非链接文件),Stow 会报错,需通过 --override 或手动解决冲突。

了解更多:https://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html


[root@CT102 ~]# pacman -S sudo
resolving dependencies...
looking for conflicting packages...

Packages (1) sudo-1.9.16.p2-2

Total Installed Size:  7.76 MiB

:: Proceed with installation? [Y/n] Y
(1/1) checking keys in keyring                                                                               [################################################################] 100%
warning: Public keyring not found; have you run 'pacman-key --init'?
downloading required keys...
error: keyring is not writable
error: required key missing from keyring
error: failed to commit transaction (could not find or read file)
Errors occurred, no packages were upgraded.

上面提示我们运行 pacman-key --init,运行个看看

[root@CT102 ~]# pacman-key --init
gpg: starting migration from earlier GnuPG versions
gpg: porting secret keys from '/etc/pacman.d/gnupg/secring.gpg' to gpg-agent
gpg: migration succeeded
==> Generating pacman master key. This may take some time.
gpg: Generating pacman keyring master key...
gpg: directory '/etc/pacman.d/gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/etc/pacman.d/gnupg/openpgp-revocs.d/53F21CFED766961EE6CC5B23078548EEE0862396.rev'
gpg: Done
==> Updating trust database...
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
[root@CT102 ~]# pacman -S sudo
resolving dependencies...
looking for conflicting packages...

Packages (1) sudo-1.9.16.p2-2

Total Installed Size:  7.76 MiB

:: Proceed with installation? [Y/n] Y
(1/1) checking keys in keyring                                                                               [################################################################] 100%
downloading required keys...
:: Import PGP key C06086337C50773E, "Jelle van der Waa <jelle@archlinux.org>"? [Y/n] Y
(1/1) checking package integrity                                                                             [################################################################] 100%
error: sudo: signature from "Jelle van der Waa <jelle@archlinux.org>" is unknown trust
:: File /var/cache/pacman/pkg/sudo-1.9.16.p2-2-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
Do you want to delete it? [Y/n] Y
error: failed to commit transaction (invalid or corrupted package (PGP signature))
Errors occurred, no packages were upgraded.

这个时候我们 pacman-key --populate 即可。

[root@CT102 ~]# pacman-key --populate
==> Appending keys from archlinux.gpg...
==> Locally signing trusted keys in keyring...
  -> Locally signed 5 keys.
==> Importing owner trust values...
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: inserting ownertrust of 4
gpg: setting ownertrust to 4
==> Disabling revoked keys in keyring...
  -> Disabled 45 keys.
==> Updating trust database...
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   5  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:   5  signed:  96  trust: 0-, 0q, 0n, 5m, 0f, 0u
gpg: Note: third-party key signatures using the SHA1 algorithm are rejected
gpg: (use option "--allow-weak-key-signatures" to override)
gpg: depth: 2  valid:  73  signed:  20  trust: 73-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2025-06-16
[root@CT102 ~]# pacman -S sudo
resolving dependencies...
looking for conflicting packages...

Packages (1) sudo-1.9.16.p2-2

Total Download Size:   1.88 MiB
Total Installed Size:  7.76 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
 sudo-1.9.16.p2-2-x86_64                                                        1923.0 KiB  2.05 MiB/s 00:01 [################################################################] 100%
(1/1) checking keys in keyring                                                                               [################################################################] 100%
(1/1) checking package integrity                                                                             [################################################################] 100%
(1/1) loading package files                                                                                  [################################################################] 100%
(1/1) checking for file conflicts                                                                            [################################################################] 100%
(1/1) checking available disk space                                                                          [################################################################] 100%
:: Processing package changes...
(1/1) installing sudo                                                                                        [################################################################] 100%
:: Running post-transaction hooks...
(1/3) Reloading system manager configuration...
(2/3) Creating temporary files...
(3/3) Arming ConditionNeedsUpdate...

最后不要忘了 pacman -Sy --needed archlinux-keyring 更新密钥环

相关文档:https://wiki.archlinux.org/title/Pacman/Package_signing


如图

截图 2025-03-21 13-09-26.png

官网: https://carapace.sh


当然,我很乐意用中文解释 RxJS 中 mergeMapmap 的区别。

More...