如何从进一步需要依赖 AUR 包的 AUR 安装包

How to install a package from AUR which further need dependent AUR packages

所以。我正在使用 ArchLinux 和 i3 window 管理器(简而言之,没有合适的桌面环境)。我是 Arch 新手 Linux

我正在尝试安装这个名为 "shutter" 的软件包,它将帮助我进行屏幕截图。

现在,我尝试安装 "shutter"

sudo pacman -S shutter

不幸的是,shutter 在 pacman 存储库中不可用(或者不管它叫什么,抱歉) 我知道它不可用,但我只是想尝试并继续尝试。

我之所以知道它不可用是因为它被列在 AUR 中。现在 AUR 中的包是主存储库中不存在的包。美好的。我从它的git下载了这个包并尝试了"making"它。

git clone aur.blah.blah.shutter.git
cd shutter
makepkg -s

这就是我遇到的错误。

[pc@PC shutter]$ makepkg -s
==> Making package: shutter 0.93.1-11 (Thu May 18 19:05:21 UTC 2017)
==> Checking runtime dependencies...
==> Installing missing dependencies...
[sudo] password for pc:
error: target not found: gnome-perl
error: target not found: perl-gnome2-wnck
error: target not found: perl-gtk2-imageview
error: target not found: perl-gtk2-unique
warning: skipping target: perl-xml-simple
==> ERROR: 'pacman' failed to install missing dependencies.

现在,我仔细看了这个列表,意识到这些依赖包,例如 gnome-perl 等,它们本身在 pacman 的主仓库中不可用,但存在于AUR。所以 pacman 无法定位目标是有道理的。

验证我试过:

[pc@PC shutter]$ sudo pacman -S gnome-perl
error: target not found: gnome-perl

所以是的,这个 "gnome-perl" 和其他依赖项也是 AUR 的一部分,因此当 "makepkg" 告诉 pacman 安装它时,pacman 简单失败。

那么,我应该如何从 AUR 安装此类软件包,这些软件包进一步严重依赖于其他 AUR 软件包?

提前谢谢你。 如果我的概念是错误的。请指导。再次感谢。

PS :我执行了 sudo pacman -Syyu,但不是运气,毕竟这些包不是主仓库的一部分并且在 AUR 中所以更新 pacman 镜像列表和系统更新应该不会修复它。

您可能会发现一些有用的 AUR 包管理器。

我个人使用yaourt,很简单,自动解决依赖。

安装非常简单,只需按照说明操作即可:

Yaourt Official Website

安装包(及其所有依赖项)运行:

yaourt -S shutter

您可以使用 Yaourt。

您可以通过将存储库添加到 pacman.conf

来安装它
sudo nano /etc/pacman.conf

将此添加到 'the REPOSITORIES' 部分:

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

更新pacman数据库并安装yaourt

sudo pacman -Sy yaourt

现在你可以安装你的包了:yaourt shutter

如果对您有用,这是一个简单的 bash 函数,它会尝试下载并安装软件包列表。当然它不做依赖解析,所以你需要在依赖它们的包之前安装依赖。

aur_manual_install() {
    [[ ! -d aur_packages ]] && mkdir aur_packages
    pushd aur_packages
    for PKG in "$@" ; do
        curl -o ${PKG}.tar.gz https://aur.archlinux.org/cgit/aur.git/snapshot/${PKG}.tar.gz
        tar zxvf ${PKG}.tar.gz
        rm ${PKG}.tar.gz
        pushd ${PKG}
        makepkg -csi --noconfirm
        popd
    done
    popd
    #rm -rf aur_packages # Uncomment if you want to clean up after install
}

使用示例(参数是按顺序安装的包列表):

aur_manual_install cower-git pacaur

也许你想添加set -e以防出现错误等

编辑 1:我发布的原始代码存在一些问题,因为它是从一个更大的脚本中提取的。

编辑 2:我在尝试安装该软件包时取得了一些进展:

aur_manual_install \
gnome-perl gnome-vfs gnome-vfs-nosmb gnome-vfs-perl gnomecanvas-perl libbonobo libbonoboui libgnome libgnome-data libgnomeui orbit2 perl-gnome2-wnck perl-gtk2-imageview perl-gtk2-unique shutter

(可能已经安装了其他软件包)。

编辑 3:我必须手动安装 gnome-vfs-nosmb,因为它与 gnome-vfs 冲突。

编辑 4:终于!填写完所有剩余的包裹后,我开始工作了。但要求开发人员更新到 GTK3 或类似版本可能是个好主意;哎呀,显然该项目最后一次更新是在 2014 年...

你可以通过指定下载选项 -d 两次来告诉 Cower 递归下载 AUR 包的 AUR 依赖项 -dd, [=12] =] 或 --download --download

来自 man cower : OPERATIONS -d, --download Download target. Pass this option twice to fetch uninstalled dependencies (done recursively).

如果插入 AUR 会更清楚:传递此选项两次以获取已卸载的 AUR 依赖项(递归完成)。但公平地说,Cower 只处理 AUR。 ;)

(当然,makepkg 命令已经在水下处理了主 Arch Repo 依赖项(非 AUR)。)

安装时最好将所有 AUR 包下载到一个专用文件夹并将它们留在那里。 Cower 跟踪包的下载和安装位置。 (我的 AUR 包都下载到 /home/myUsername/AUR-packages 因为我是唯一的用户。)不过这完全取决于你的情况。

您首先必须 运行 makepkg -sic (或任何选项)在每个 AUR 依赖项的文件夹中。然后在主 AUR 包的文件夹中。

更新中:

轻松检查是否有已安装 AUR 包的更新:

  • cower -u

  • 然后将 -u-dd 结合起来检查并递归下载所有 AUR 依赖项:cower -udd(或立即执行此操作)

  • 然后首先 cd 进入每个 AUR dependency 和 运行 makepkg -sic 的文件夹(或任何选项你通常使用)

  • 然后进入每个 top/main AUR 包的文件夹(非依赖性 你实际安装并想要使用的那个)和运行 makepkg -sic(或您通常使用的任何选项)。

不要忘记还有一个详细选项 -v,它还可以让您看到所有其他已检查更新的包。不只是有更新的。

您安装的 AUR 包越多,您就会意识到这需要一个或多个脚本来实现自动化。