apt-get 在集群上不一致,总是找不到包(libmysqlclient21)

apt-get 在集群上不一致,总是找不到包(libmysqlclient21)

我正在通过 Azure 上的 Databricks 集群安装软件包apt-get。每次启动集群时,我都需要重新安装软件包。(我之所以指定 Databricks,是因为有必要指出,这种情况不会每次都发生在同一台物理机器上 - 因此我的问题是如何检查运行之间可能发生的变化。)

有时某个特定的包可以成功安装;但有时却找不到它。

问题(三次尝试到达同一个地方)

  1. 运行之间可能发生了哪些变化从而导致这种情况?我该如何检查它们?
  2. 什么原因导致apt-get update无法指定最新版本?
  3. 当指定版本时,什么会阻止apt-get install找到最新版本?

语境

我最初的问题是我正在尝试安装 gdal:

sudo apt-get update -y
sudo apt-get install gdal -y
Err:1 http://security.ubuntu.com/ubuntu focal-updates/main amd64 libmysqlclient21 amd64 8.0.28-0ubuntu0.20.04.3
#   404  Not Found [IP: 91.189.91.39 80]
# ...
# Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/m/mysql-8.0/libmysqlclient21_8.0.28-0ubuntu0.20.04.3_amd64.deb  404  Not Found [IP: 91.189.91.39 80]

为了了解发生了什么,我尝试单独安装 libmysqlclient21,并查看 apt-get 在安装 libmysqlclient21 时尝试安装什么。

sudo apt-get update

Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
Hit:2 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease
Reading package lists...

sudo apt-get install -y libmysqlclient21

Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  libmysqlclient21
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,292 kB of archives.
After this operation, 7,652 kB of additional disk space will be used.
Ign:1 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libmysqlclient21 amd64 8.0.28-0ubuntu0.20.04.3
Err:1 http://security.ubuntu.com/ubuntu focal-updates/main amd64 libmysqlclient21 amd64 8.0.28-0ubuntu0.20.04.3
  404  Not Found [IP: 91.189.91.39 80]
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/m/mysql-8.0/libmysqlclient21_8.0.28-0ubuntu0.20.04.3_amd64.deb  404  Not Found [IP: 91.189.91.39 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

(运行apt-get update--fix-missing没有改变输出。)

如果安装成功,版本为 8.0.29-0ubuntu0.20.04.3

apt-cache policy libmysqlclient21

libmysqlclient21:
  Installed: (none)
  Candidate: 8.0.29-0ubuntu0.20.04.3
  Version table:
     8.0.29-0ubuntu0.20.04.3 500
        500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
     8.0.19-0ubuntu5 500
        500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages

失败的时候是8.0.28-0ubuntu0.20.04.3

apt-cache policy libmysqlclient21


libmysqlclient21:
  Installed: (none)
  Candidate: 8.0.28-0ubuntu0.20.04.3
  Version table:
     8.0.28-0ubuntu0.20.04.3 500
        500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
     8.0.19-0ubuntu5 500
        500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages

如果我进入 Ubuntu 存储库(我想这就是这个?),我发现 8.0.29 版本存在,但 8.0.28 版本不存在。(security.ubuntu.com/ubuntu/pool/main/m/mysql-8.0/

偶尔我指定安装8.0.29版本时,即使候选版本是8.0.28,安装也会成功,但通常不是:

sudo apt-get update -y
sudo​ apt-get install -y libmysqlclient21=8.0.29-0ubuntu0.20.04.3
# E: Version '8.0.29-0ubuntu0.20.04.3' for 'libmysqlclient21' was not found

有一次,apt-get clean在更新和安装之前使用也有效。我还没有能够重现这种情况。

sudo apt-get clean
sudo apt-get update -y
sudo apt-get install libmysqlclient21

特定于 Databricks,与网站相关性值得怀疑 最后,我在交互式 Databricks 集群和作业 Databricks 集群上运行了此程序。所有成功都发生在交互式集群上;作业集群始终无法安装该包。我之所以包括这一点,只是因为它有助于理解。

其他 SE 问题 我读过很多关于 apt-get 的其他 stackexchange 问题,包括这些:

编辑

我不认为这是为什么 Ubuntu 存储库没有最新版本的软件?因为我指定的是较新的版本在 ubuntu 存储库中。

另外,我应该强调的是,我没有承诺任何特定的软件包版本。我只需要安装 gdal,但它失败了,因为apt-get找不到libmysqlclient21

当我进入 ubuntu 存储库时,我看到版本 8.0.29-0ubuntu0.20.04.3 存在,但没有版本 8.0.28-0ubuntu0.20.04.3。我还注意到,当下面的候选版本apt-cache policy libmysqlclient21是 8.0.29… 时,它可以成功安装,而当它是 8.0.28… 时,它没有成功安装。

答案1

我遇到了完全相同的问题。输入:

sudo apt-get update -y --fix-missing;
sudo apt-get install -y libmysqlclient21=8.0.29-0ubuntu0.20.04.3;

我的剧本一开始就为我工作。

我使用标准模式下运行时间为 10.5 ML 的作业集群。

答案2

来自另一个帖子,https://stackoverflow.com/questions/69767441/issues-installing-gdal-bin-libmysqlclient21-dependency-on-20-04-3-databricks,我也遇到了同样的问题。

这个问题变得不常见,并且再也没有出现过。当时 9.1 LTS 已经加入进来,而 libmysqlclient21 的新版本也刚刚出现。因此,感觉问题与运行时可用的版本有关,而 ubuntu 存储库中可用的版本已被移动(不可用,因此出现未找到 IP 的问题)。

我们还遇到了 DNS 问题,导致超时延长,因此这可能造成了更新和安装错误。

我建议尝试回滚到较旧的运行时(例如 9.1 LTS)并查看您如何尝试使用(下面)安装库,因为我们继续取得成功。

# check
apt-cache policy gdal-bin
apt-cache rdepends gdal-bin

# install
sudo apt-get --fix-missing -y update
sudo apt-get install -y gdal-bin

# check
gdalinfo --version

我还将尝试使用相同的代码 10.5 和 10.4 LTS,看看会发生什么。

== 编辑 == 有趣的是,我创建了 5 个作业(9.1 LTS 作业集群、10.4 LTS 作业集群、10.4 LTS 计算集群、10.5 作业集群、10.5 计算集群)

所有作业都失败了,原因相同,未能找到 8.0.29 的更新,然后无法安装 libmysqlclient21_8.0.28

sh sudo apt-get --fix-missing -y update
Hit:1 hXttp://security.ubuntu.com/ubuntu focal-security InRelease
Hit:2 hXttps://repos.azul.com/zulu/deb stable InRelease
Hit:3 hXttp://archive.ubuntu.com/ubuntu focal InRelease
Hit:4 hXttp://archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:5 hXttp://archive.ubuntu.com/ubuntu focal-backports InRelease
Reading package lists...

Get:36 ...//archive.ubuntu.com/ubuntu focal/universe amd64 libgdal26 amd64 3.0.4+dfsg-1build3 [6,156 kB]

Err:27 ...//security.ubuntu.com/ubuntu focal-updates/main amd64 libmysqlclient21 amd64 8.0.28-0ubuntu0.20.04.3
  404  Not Found [IP: 91.189.91.39 80]
Get:37 ...//archive.ubuntu.com/ubuntu focal/universe amd64 python3-gdal amd64 3.0.4+dfsg-1build3 [527 kB]
Get:38 ...//archive.ubuntu.com/ubuntu focal/universe amd64 gdal-bin amd64 3.0.4+dfsg-1build3 [256 kB]
Get:39 ...//archive.ubuntu.com/ubuntu focal/universe amd64 proj-bin amd64 6.3.1-1 [88.8 kB]
Fetched 27.8 MB in 5s (5,886 kB/s)
E: Failed to fetch hXttp://security.ubuntu.com/ubuntu/pool/main/m/mysql-8.0/libmysqlclient21_8.0.28-0ubuntu0.20.04.3_amd64.deb  404  Not Found [IP: 91.189.91.39 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

这促使我们调查我们自己的生产,发现错误自 5 月 5 日以来一直发生,与安全补丁的发布一致:

mysql-8.0 (8.0.29-0ubuntu0.20.04.3) focal-security; urgency=medium

* SECURITY REGRESSION: 8.0.29 breaks existing charm configurations
(LP: #1971565)
- debian/patches/lp1971565.patch: add "name" to the supported global
  options list so existing configurations keep working.

-- Marc Deslauriers <[email protected]>  Wed, 04 May 2022 08:36:15 -0400

幸运的是,你现在并不孤单!尽管我们处于同样的困境,却没有解决办法

答案3

我成功地

sudo apt clean && sudo apt update --fix-missing -y && sudo apt install -y libmysqlclient21

在尝试安装 gdal 之前,它现在似乎正在工作......

根据评论修改:

sudo rm -r /var/lib/apt/lists/* 
sudo apt clean && 
   sudo apt update --fix-missing -y &&
   sudo apt install -y  libmysqlclient21
sudo apt install -y gdal-bin

首先运行这些命令似乎很重要。在流程的稍后阶段运行它们可能不会成功。

(这使用apt-get而不是最初注释的 apt,因为apt-get它更面向脚本;但是,两者都有效。)

答案4

我最终再次遇到了一些问题,但我用以下方法解决了它:

wget http://archive.ubuntu.com/ubuntu/pool/main/m/mysql-8.0/libmysqlclient21_8.0.19-0ubuntu5_amd64.deb;
sudo dpkg -i libmysqlclient21_8.0.19-0ubuntu5_amd64.deb;

相关内容