git bash 下 pacman 环境配置

如果不是为了跟着经历一遍(折腾自己),直接跳到最后使用 msys2 的最优的方法。

git bash 下 pacman 环境配置

安装 pacman

下载 pacman,解压到 git 的安装目录(D:\Program Files\Git,一定要是 git 的安装根目录,这样解压出来的目录结构和安装 git 时的层次保持一致)。

tar xvf pacman-5.2.2-4-x86_64.pkg.tar.xz

此时在 git bash 里运行 pacman 会提示没有软件源相关的配置文件。

error: config file /etc/pacman.d/mirrorlist.mingw32 could not be read: No such file or directory

安装软件源 mirrors

下载源配置包mirrors,一样的,要放到 git 安装的根目录下解压。

tar -xvf pacman-mirrors-20201208-1-any.pkg.tar.xz

修改相关的配置,使用清华的软件源,重启 git bash,再次运行,提示没有数据库。

pacman

warning: database file for ‘mingw32’ does not exist (use ‘-Sy’ to download)
warning: database file for ‘mingw64’ does not exist (use ‘-Sy’ to download)
warning: database file for ‘msys’ does not exist (use ‘-Sy’ to download)
error: no operation specified (use -h for help)

pacman -Sy

提示

:: Synchronizing package databases…

mingw32 760.3 KiB 2.40 MiB/s 00:00 [###################################################################################] 100%

mingw32.sig 438.0 B 428 KiB/s 00:00 [###################################################################################] 100%

warning: Public keyring not found; have you run ‘pacman-key --init’?

error: mingw32: key “4A6129F4E4B84AE46ED7F635628F528CF3053E04” is unknown
error: keyring is not writable
error: failed to update mingw32 (invalid or corrupted database (PGP signature))
mingw64 761.9 KiB 2.21 MiB/s 00:00 [###################################################################################] 100%

mingw64.sig 438.0 B 0.00 B/s 00:00 [###################################################################################] 100%
error: mingw64: key “4A6129F4E4B84AE46ED7F635628F528CF3053E04” is unknown
error: keyring is not writable
error: failed to update mingw64 (invalid or corrupted database (PGP signature))

msys 273.5 KiB 1581 KiB/s 00:00 [###################################################################################] 100%

msys.sig 438.0 B 428 KiB/s 00:00 [###################################################################################] 100%

error: msys: key “4A6129F4E4B84AE46ED7F635628F528CF3053E04” is unknown

error: keyring is not writable

error: failed to update msys (invalid or corrupted database (PGP signature))

error: failed to synchronize all databases

按提示,先进行初始化。

pacman-key --init

再次更新:

pacman -Sy

会卡主:

error: mingw32: key “4A6129F4E4B84AE46ED7F635628F528CF3053E04” is unknown

:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] y

ctrl + c 终止之后,使用 pacman-key 更新 key.

pacman-key --populate msys2

提示:

==> 错误: 密匙环文件 /usr/share/pacman/keyrings/msys2.gpg 不存在

安装 keyring

下载keyring数据库包,同样的解压。

tar -xvf msys2-keyring-1~20201002-1-any.pkg.tar.xz

再次

pacman-key --populate msys2

最后

pacman -Sy

成功。

:: 正在同步软件包数据库…
mingw32 已经是最新版本
mingw64 已经是最新版本
msys 已经是最新版本

如果上述方法还不行,可尝试更新 pacman 所有包的数据库。

pacman -S --dbonly pacman 

pacman has a record of only some of the contents of the pacman package.
Try the following to fix the databse entry for the pacman package.

工具软件安装

tmux

pacman -S tmux

报错:

error: failed to commit transaction (conflicting files) 错误:无法提交处理 (有冲突的文件)

看来是依赖的文件已经存在,所以冲突了。

pacman 的 --force 选项已经丢弃,使用 --overwrite 选项来代替。

pacman -S --overwrite="*" tmux

如果出现以下提示,关闭 git bash,重新打开即可。

dofork: child -1 - forked process 17448 died unexpectedly,

netcat

pacman -S openbsd-netcat

最简单直接的方法

直接使用 msys2git bash 相当于最小化的 msys2。

git bash安装提示

因为 msys2 内置 pacman。可以安装完毕 msys2 之后,然后在 msys2 里通过 pacman 安装 git. 这样这一整套环境都通过 pacman 来管理。

pacman -S git

msys2 继承windows环境变量

msys2 没法直接使用已经加入 windows 环境变量 path 中的程序,会提示命名找不到。需要创建一个MSYS2_PATH_TYPE=inherit 的环境变量。

继承windows环境变量

msys2 中 ipython 交互环境

ipython 是安装 anaconda 里带的,直接在 msys2 里使用,会有终端交互的问题,没有高亮,没有补全。

解决办法是在 msys2 里安装 winpty

pacman -S winpty

winpty 安装完毕之后,使用winpty 来启动 ipython

winpty ipython

为了方便,可以在使用别名机制,将 ipython 定义为 winpty ipython 的别名,并且持久化到 /etc/bash.bashrc 文件当中。

# 使用 winpty 来启动 ipython

alias ipython=“winpty ipython”

鼠标右键添加 msys2

关于鼠标右键点击文件夹空白处添加快捷方式参见我之前的博客, 默认从 windows 菜单启动 msys2 时,msys2 中的 shell 环境的当前目录是用户目录,如果想要像 git bash 在鼠标右键中启动,shell 环境是当前文件夹的目录,command 项的值是 D:\msys64\msys2_shell.cmd -here, 即通过 msys2_shell.cmd 脚本来间接启动 msys2.exe.

icon

右键启动命令

鼠标右键小图标

当所有的这些都完成之后,就能愉快的使用 pacman 包管理器了,再也不用单独去这里 下载 git 了。

用户目录的小坑

msys2 会自带 home 目录,在安装目录下的用户 home目录: D:\msys64\home,而不像 git bash 使用的 home 目录,是共用 windows 的 home目录,在系统盘下C:\Users\administrator, 所以之前在 git bash 的用户目录下.ssh目录中的 configauthorized_keys 文件,都需要从 C:\Users\Administrator\.ssh 迁移到D:\msys64\home\Administrator\.ssh 下。

Guess you like

Origin blog.csdn.net/zhouguoqionghai/article/details/111143869