Arch 中安装软件的问题 (因为EAF,初试linux)

一直很想尝试EAF,但是个人主力OS是mac,一来迁移到linux有许多应用需要找替代方案,二来想着同是unix系,EAF支持Mac应该不算困难,因此一直没有折腾。

然而,EAF支持了Windows也没有支持Mac,加之最近正好有点时间,于是尝试在Parallels安装Arch Linux,使用Emacs+EAF。

在详尽的文档帮助下,Arch安装还算顺利。为了使用Parallels Tool,内核切换到linuxlts419。现在的问题是,用pacman或yay安装软件,经常找不到软件 target not found,或者无法解决依赖 cannot resolve xxx a dependency of yyy。怀疑是源的配置问题,但是找不到原因。目前的配置文件:

/etc/pacman.conf

 [core]
 Include= /etc/pacman.d/mirrorlist

 [archlinuxcn]
 # The Chinese Arch Linux communities packages.
 # SigLevel = Optional TrustedOnly
 SigLevel = Optional TrustAll
 Server = http://mirrors.163.com/archlinux-cn/$arch

/etc/pacman.d/mirrorlist

## China
Server = http://mirrors.163.com/archlinux/$repo/os/$arch
Server = http://mirrors.bfsu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.bfsu.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.cqu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.cqu.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.dgut.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.dgut.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.hit.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.hit.edu.cn/archlinux/$repo/os/$arch
Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.neusoft.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.neusoft.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.nju.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.nju.edu.cn/archlinux/$repo/os/$arch
Server = http://mirror.redrock.team/archlinux/$repo/os/$arch
Server = https://mirror.redrock.team/archlinux/$repo/os/$arch
Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.xjtu.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.zju.edu.cn/archlinux/$repo/os/$arch

yay

yay --aururl "https://aur.tuna.tsinghua.edu.cn" --save

安装了 archlinuxcn-keyring,执行了 pacman -Syy 和 yay -Syy 之后,还是会有找不到和无法解决依赖的问题。总不会是kernel是lts419的问题吧?

恳请指点,不胜感激。

你的mirrorlist应该只用保留一个Server就可以了。 比如我的 /etc/pacman.d/mirrorlist 内容:

Server = https://mirrors.aliyun.com/manjaro/stable/$repo/$arch

我的 /etc/pacman.conf 内容:

[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

不要 SigLevel

你再更新一下?

Mac基于BSD,从原理上,Linux和Unix相比较应该比Windows更好移植。

但是基于Mac的封闭特性(也可能是我Mac API不熟悉的原因),主要有两个原因:

  1. 基于Mac窗口的 Reparent API, 解决跨进程窗口粘贴的问题
  2. Mac上的QtGraphics混合机制有问题,不知道是Mac的原因还是Qt在Mac平台支持的原因

如果这两个问题解决了,EAF应该可以立即支持Mac平台,因为像IPC这种最复杂的部分已经跨平台了。

哇,非常非常感谢懒猫的帮助。然而问题似乎不是多个server的问题。

官方文档 Mirrors (简体中文) - ArchWiki 中也启用了多个镜像。

在我的理解中,在arch中安装应用主要是两种方式:

  1. 通过pacman安装官方repo的应用
  2. 通过aur helper(例如yay)安装aur中的应用

私以为,设置好repo和aur的地址,pacman和aur helper会自动解决依赖、打包等工作。然而现在的情况……不太清楚应该从哪里排查问题。

/etc/pacman.conf

# GENERAL OPTIONS
[options]
HoldPkg     = pacman glibc
Architecture = auto

# Misc options
Color
CheckSpace

SigLevel    = Required DatabaseOptional
LocalFileSigLevel = Optional

[core]
Include = /etc/pacman.d/mirrorlist

[archlinuxcn]
Server = http://mirrors.ustc.edu.cn/archlinuxcn/$arch

/etc/pacman.d/mirrorlist (您提供的似乎是Manjaro的镜像,我随机选的arch的一个镜像)

## China
Server = http://mirrors.163.com/archlinux/$repo/os/$arch

你设这个源以后更新过一次吗?

怎么只有core和archlinuxcn两个repo,应该还有extra和community啊

3赞

我觉得jimx是对的,问题出在你的pacman.conf上。你的官方仓库没加全,这样当然会有很多包装不上。

你不是基于官方pacman.conf改的?一般只需要在官方配置的基础上加上archlinuxcn仓库就够了。

太感谢啦,加回extra和community就正常啦。

把这两个注释掉是因为用yay的时候,出现了“Database already registered” 错误,根据 Database already registered · Issue #1414 · Jguer/yay,把extra和community注释掉之后不再出现此错误。我本来觉得extra和community与core的值都是一样的,所以注释掉也无所谓 :joy: 不过现在从yay换到yay-git,貌似也不会报错了。

十分感谢大家的帮助!

你的yay配置有问题。不用换成yay-git。