通过 Ubuntu docker 安装 google-chrome-stable 的依赖问题

AJw*_*Jwr 22 linux ubuntu apt google-chrome docker

我有一个 Dockerfile,它尝试在 Ubuntu(我认为是 v16 Xenial)中的其他软件包中安装该软件包google-chrome-stable,作为 Gitlab 管道步骤的一部分。直到最近我才遇到任何问题,当该步骤开始因此问题而失败时:

\n
Some packages could not be installed. This may mean that you have\nrequested an impossible situation or if you are using the unstable\ndistribution that some required packages have not yet been created\nor been moved out of Incoming.\nThe following information may help to resolve the situation:\nThe following packages have unmet dependencies:\n google-chrome-stable : Depends: libu2f-udev but it is not installable\nE: Unable to correct problems, you have held broken packages.\n
Run Code Online (Sandbox Code Playgroud)\n

看起来libu2f-udev最近已经变成了 adepends而不是recommends\xe2\x80\x93 但我不知道如何解决这个问题。这是有问题的 Dockerfile 的部分:

\n
FROM -.dkr.ecr.us-east-1.amazonaws.com/ubuntu:xenial\n\nEXPOSE 9222\n\n# Install ubuntu dependencies\nRUN apt-get update && \\\n  apt-get -y upgrade && \\\n  apt-get install -yq curl libgconf-2-4\n\n# Install Google Chrome Stable\nRUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \\\n  apt-get install -y wget gnupg && \\\n  echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb stable main' >> /etc/apt/sources.list.d/google-chrome.list && \\\n  apt-get update && \\\n  apt-get install -y  --no-install-recommends \\\n  google-chrome-stable \\\n  fonts-ipafont-gothic \\\n  fonts-wqy-zenhei \\\n  fonts-thai-tlwg \\\n  fonts-kacst ttf-freefont && \\\n  rm -fr /var/lib/apt/lists/* && \\\n  apt-get purge --auto-remove -y curl && \\\n  rm -fr /src/*.deb\n
Run Code Online (Sandbox Code Playgroud)\n

我认为apt-get update安装之前可以解决这个问题,但事实并非如此。任何帮助表示赞赏,谢谢!

\n

编辑:另外,我知道 Ubuntu 16 不再接受标准支持(这是我正在使用的一项相当旧的服务)。如果升级到 v18 或更高版本有帮助,那也很高兴知道

\n

小智 16

wget http://archive.ubuntu.com/ubuntu/pool/main/libu/libu2f-host/libu2f-udev_1.1.4-1_all.deb
dpkg -i libu2f-udev_1.1.4-1_all.deb
Run Code Online (Sandbox Code Playgroud)

并重试更新 chrome


Chr*_*sto 12

创建一个提供 libu2f-udev 的虚拟包可以修复该问题。我按照 Ubuntu 16.04 的以下步骤操作。安装equivs包

sudo apt install equivs
equivs-control libu2f-udev
Run Code Online (Sandbox Code Playgroud)

这将创建一个文件 libu2f-udev。编辑此文件并将 libu2f-udev 作为“Package”和“Provides”键的值。然后执行

equivs-build libu2f-udev
Run Code Online (Sandbox Code Playgroud)

这将创建虚拟包 libu2f-udev_1.0_all.deb。安装它

sudo dpkg -i libu2f-udev_1.0_all.deb
Run Code Online (Sandbox Code Playgroud)

可以了,好了。