将包更新到早期版本后云 VM 实例损坏包
cloud VM instance broken packages after updating packages to earlier version
我进行了 apt-get 升级,因为我们生产服务器的加载时间约为 40 秒。我没有升级前后的快照。(虽然有六个月前的快照)加载时间改进到 15 秒左右,但我们的 erizo 服务停止工作。 Erizo 也在那个实例上 运行ning。重新启动服务没有帮助,所以我尝试将软件包升级到以前的版本(https://askubuntu.com/questions/138284/how-to-downgrade-a-package-via-apt-get),就像以前一样,但几乎每个软件包都出现错误:以前的软件包版本不存在。(这是奇怪,因为我复制了 dpkg -l)
的输出
只有少数几个被成功降级,但我在将 e1fslibs 升级到它以前的版本时遇到了一个严重的错误。:以下包有未满足的依赖项:
e2fsprogs: PreDepends: e2fslibs
不知何故弄乱了 initramfs and/or initramfs-tools 现在实例是 运行ning 但我无法进入它。
- 正在连接到google云平台中的实例:正在连接...
无法连接,正在重试 (1/3)。
- google 云 shell 无法 gcloud 计算 ssh:权限被拒绝(public密钥)。
- 在本地使用 gcloud 也显示权限被拒绝(public密钥)。
我检查了以下内容:
- 已定义项目 public 个键;没有定义任何实例 public 键或任何其他元数据 ( Google Cloud SSH Keys )
- 在google云平台>>计算引擎>>VM实例>>权限>>我看到'compute'被禁用
- 通过导航到串行控制台输出页面并查找以 accounts-from-metadata: 字符串为前缀的输出行,验证守护进程是否 运行ning。如果您使用的是标准图像,但在串行控制台输出中没有看到这些输出前缀,则守护程序可能已停止--> 我没有看到这个,所以我希望它不是 运行ning.
- 检查防火墙规则:(gcloud compute firewall-rules list)
default-allow-ssh default 0.0.0.0/0 tcp:22 //规则存在
升级了以下软件包:
- 适合
- apt-transport-https
- apt-utils
- binutils
- 云初始化
- cloud-initramfs-growroot
- cloud-initramfs-rescuevol
- comerr-dev
- dosfstools
- e2fslibs
- e2fsprogs
- gce-cloud-config
- gce-daemon
- gce-imagebundle
- gce-启动脚本
- google-cloud-sdk
- 横向客户端
- 横向-普通 l
- ibapt-inst1.4 libapt-pkg4.12
- libcomerr2
- libss2
- libudev0 安装
- nginx
- nginx-common
- nginx-full
- ntp
- ntpdate
- procps
- python-贴切
- python-apt-common
- python-lazr.restfulclient
- udev
- 无人值守升级
- 更新管理器核心
- 暴发户
- 哎呀
- x11-utils
这是从串行输出中获取的::
- mountall:事件失败
- landscape-client 未配置,请 运行 landscape-config.
下一步做什么?
将启动脚本应用于 运行ning 实例(在此 https://cloud.google.com/compute/docs/startupscript 之后)并尝试执行 Apt-get 升级 ?
尝试在 google 云 shell 中(再次)创建一个新的 public 密钥来访问实例?
- 在google cloud shell中第一次输入gcloud compute --project "enduring-palace-762" ssh --zone "europe-west1-c" "tta-media-test-2"后生成这个文件
警告:Google Compute Engine 的 SSH 私钥文件没有 exist.WARNING:您没有 Google Compute Engine.WARNING 的 SSH 密钥:[/usr/bin/ssh-keygen]将被执行以生成密钥。此工具需要创建目录 /home/developer/.ssh
- 生成的 public 密钥存储在 /home/developer/.ssh /google_compute_engine.pub 我复制了一份,在用户名前面添加了 public 键到计算引擎 >> 元数据 >> ssh 键。 *密钥已被接受,但用户名不会像显示所有其他用户名 - 密钥对那样显示
我在使用 gcloud compute ssh tta-media-test-2 --zone europe-west1-c
时收到 Permission denied (publickey) 错误
当我像这样提供 ssh 密钥文件时
gcloud compute ssh tta-media-test-2 --zone europe-west1-c --ssh-key-file=my-ssh-keys_copy.pub (密码在密钥文件所在的文件夹内)
警告:Google Compute Engine 的 public SSH 密钥文件不存在。
警告:您没有 Google Compute Engine 的 SSH 密钥。
警告:[/usr/bin/ssh-keygen] 将被执行以生成密钥。
当我使用 ssh-keygen -t rsa -f my-ssh-keys
生成新密钥时,我得到相同的结果
- 任何其他可能的解决方案将不胜感激。
[更新] 我可以使用 ssh user@externalIpOfInstance 从本地 ssh 'broken' 实例我的计划是将它带到升级后的稳定状态,创建快照并从那里查看..
- sudo apt-f 安装
0 个已升级,0 个新安装,0 个要删除,5 个未升级。
1 未完全安装或移除。
此操作后,将使用 0 B 的附加磁盘 space。
设置 initramfs-tools (0.99ubuntu13.5) ...
update-initramfs:延迟更新(触发器已激活)
处理 initramfs-tools 的触发器 ...
update-initramfs:生成 /boot/initrd.img-3.13.0-79-generic
E: /usr/share/initramfs-tools/hooks/fixrtc 失败,return 1。
update-initramfs:/boot/initrd.img-3.13.0-79-generic 与 1 失败。
dpkg:处理 initramfs-tools (--configure) 时出错:
已安装子进程 post-安装脚本 returned 错误退出状态 1
处理时遇到错误:
initramfs-工具
E: 子进程 /usr/bin/dpkg return 错误代码 (1)
- sudo apt-get 升级
阅读包裹清单...完成
构建依赖树
正在读取状态信息...完成
以下软件包已被保留:
google-chrome-稳定
将升级以下软件包:
comerr-dev libcomerr2 libss2 无人值守升级
4 个升级,0 个新安装,0 个删除,1 个未升级。
1 未完全安装或移除。
需要获取 0 B/188 kB 的档案。
此操作后,将使用 4,096 B 的额外磁盘 space。
您要继续 [Y/n] 吗?是
预配置包...
(正在读取数据库……当前安装了 178509 个文件和目录。)
准备更换 comerr-dev 2.1-1.42-1ubuntu2.2(使用 .../comerr-dev_2.1-1.42-1ubuntu2.3_amd64.deb)...
拆包替换 comerr-dev ...
准备替换 libcomerr2 1.42-1ubuntu2.2 (using .../libcomerr2_1.42-1ubuntu2.3_amd64.deb) ...
解压替换 libcomerr2 ...
准备替换 libss2 1.42-1ubuntu2.2(使用 .../libss2_1.42-1ubuntu2.3_amd64.deb)...
解包替换 libss2 ...
准备替换 unattended-upgrades 0.76ubuntu1.1 (using .../unattended-upgrades_0.76ubuntu1.2_all.deb) ...
拆包更换无人值守升级...
处理安装信息的触发器...
处理 man-db 的触发器 ...
ureadahead 的处理触发器......
设置 initramfs-tools (0.99ubuntu13.5) ...
update-initramfs:延迟更新(触发器已激活)
设置 libcomerr2 (1.42-1ubuntu2.3) ...
设置 comerr-dev (2.1-1.42-1ubuntu2.3) ...
设置 libss2 (1.42-1ubuntu2.3) ...
设置无人值守升级 (0.76ubuntu1.2) ...
处理 initramfs-tools 的触发器 ...
update-initramfs:生成 /boot/initrd.img-3.13.0-79-generic
E: /usr/share/initramfs-tools/hooks/fixrtc 失败,return 1。
update-initramfs:/boot/initrd.img-3.13.0-79-generic 与 1 失败。
dpkg:处理 initramfs-tools (--configure) 时出错:
已安装子进程 post-安装脚本 returned 错误退出状态 1
没有写批准报告,因为已经达到 MaxReports
处理 libc-bin 的触发器 ...
现在正在进行 ldconfig 延迟处理
处理时遇到错误:
initramfs-工具
E: 子进程 /usr/bin/dpkg return 错误代码 (1)
- sudo apt-get remove initramfs-tools-bin
阅读包裹清单...完成
构建依赖树
正在读取状态信息...完成
无法安装某些软件包。这可能意味着你有
请求一个不可能的情况,或者如果你使用的是不稳定的
一些必需的包尚未创建的分发
或已移出传入。
以下信息可能有助于解决问题:
以下包具有未满足的依赖关系:
- cron : 取决于:adduser 但不会安装
- procps:取决于:初始化脚本
- 暴发户:取决于:初始化脚本
取决于:mountall
取决于:ifupdown (>= 0.6.10ubuntu5)
E: 错误,pkgProblemResolver::Resolve 产生了中断,这可能是由于包裹被保留造成的。
这里做什么?
如果您之前能够使用给定的 SSH 密钥通过 SSH 连接到实例,那么它停止工作的最可能原因是您以某种方式删除了该 SSH 密钥,或者 SSH 守护程序不是 running/was否则坏了。看来你在降级时弄坏了这台机器。
为什么需要这个特定的 VM 实例?它有重要数据吗?如果是这样,您可以将其关闭,使用新的 VM 实例装载其磁盘,然后复制该数据。
如果它运行一项服务,您可能应该切换到一台新机器:即使您能够进入该实例,也不知道哪些仍然有效,哪些无效。
我在安装 bigbluebutton 时遇到问题
正在读取状态信息...
您可能需要 运行 'apt --fix-broken install' 来更正这些。
以下软件包具有未满足的依赖项:
bigbluebutton : 取决于: bbb-config 但它不会被安装
gce-compute-image-packages : 取决于: google-compute-engine 但它不会被安装
E:未满足的依赖项。尝试 'apt --fix-broken install' 没有包(或指定解决方案)。
我进行了 apt-get 升级,因为我们生产服务器的加载时间约为 40 秒。我没有升级前后的快照。(虽然有六个月前的快照)加载时间改进到 15 秒左右,但我们的 erizo 服务停止工作。 Erizo 也在那个实例上 运行ning。重新启动服务没有帮助,所以我尝试将软件包升级到以前的版本(https://askubuntu.com/questions/138284/how-to-downgrade-a-package-via-apt-get),就像以前一样,但几乎每个软件包都出现错误:以前的软件包版本不存在。(这是奇怪,因为我复制了 dpkg -l)
的输出只有少数几个被成功降级,但我在将 e1fslibs 升级到它以前的版本时遇到了一个严重的错误。:以下包有未满足的依赖项: e2fsprogs: PreDepends: e2fslibs
不知何故弄乱了 initramfs and/or initramfs-tools 现在实例是 运行ning 但我无法进入它。
- 正在连接到google云平台中的实例:正在连接... 无法连接,正在重试 (1/3)。
- google 云 shell 无法 gcloud 计算 ssh:权限被拒绝(public密钥)。
- 在本地使用 gcloud 也显示权限被拒绝(public密钥)。
我检查了以下内容:
- 已定义项目 public 个键;没有定义任何实例 public 键或任何其他元数据 ( Google Cloud SSH Keys )
- 在google云平台>>计算引擎>>VM实例>>权限>>我看到'compute'被禁用
- 通过导航到串行控制台输出页面并查找以 accounts-from-metadata: 字符串为前缀的输出行,验证守护进程是否 运行ning。如果您使用的是标准图像,但在串行控制台输出中没有看到这些输出前缀,则守护程序可能已停止--> 我没有看到这个,所以我希望它不是 运行ning.
- 检查防火墙规则:(gcloud compute firewall-rules list) default-allow-ssh default 0.0.0.0/0 tcp:22 //规则存在
升级了以下软件包:
- 适合
- apt-transport-https
- apt-utils
- binutils
- 云初始化
- cloud-initramfs-growroot
- cloud-initramfs-rescuevol
- comerr-dev
- dosfstools
- e2fslibs
- e2fsprogs
- gce-cloud-config
- gce-daemon
- gce-imagebundle
- gce-启动脚本
- google-cloud-sdk
- 横向客户端
- 横向-普通 l
- ibapt-inst1.4 libapt-pkg4.12
- libcomerr2
- libss2
- libudev0 安装
- nginx
- nginx-common
- nginx-full
- ntp
- ntpdate
- procps
- python-贴切
- python-apt-common
- python-lazr.restfulclient
- udev
- 无人值守升级
- 更新管理器核心
- 暴发户
- 哎呀
- x11-utils
这是从串行输出中获取的:: - mountall:事件失败 - landscape-client 未配置,请 运行 landscape-config.
下一步做什么?
将启动脚本应用于 运行ning 实例(在此 https://cloud.google.com/compute/docs/startupscript 之后)并尝试执行 Apt-get 升级 ?
尝试在 google 云 shell 中(再次)创建一个新的 public 密钥来访问实例?
- 在google cloud shell中第一次输入gcloud compute --project "enduring-palace-762" ssh --zone "europe-west1-c" "tta-media-test-2"后生成这个文件 警告:Google Compute Engine 的 SSH 私钥文件没有 exist.WARNING:您没有 Google Compute Engine.WARNING 的 SSH 密钥:[/usr/bin/ssh-keygen]将被执行以生成密钥。此工具需要创建目录 /home/developer/.ssh
- 生成的 public 密钥存储在 /home/developer/.ssh /google_compute_engine.pub 我复制了一份,在用户名前面添加了 public 键到计算引擎 >> 元数据 >> ssh 键。 *密钥已被接受,但用户名不会像显示所有其他用户名 - 密钥对那样显示 我在使用 gcloud compute ssh tta-media-test-2 --zone europe-west1-c 时收到 Permission denied (publickey) 错误
当我像这样提供 ssh 密钥文件时 gcloud compute ssh tta-media-test-2 --zone europe-west1-c --ssh-key-file=my-ssh-keys_copy.pub (密码在密钥文件所在的文件夹内) 警告:Google Compute Engine 的 public SSH 密钥文件不存在。 警告:您没有 Google Compute Engine 的 SSH 密钥。 警告:[/usr/bin/ssh-keygen] 将被执行以生成密钥。
当我使用 ssh-keygen -t rsa -f my-ssh-keys
生成新密钥时,我得到相同的结果
- 任何其他可能的解决方案将不胜感激。
[更新] 我可以使用 ssh user@externalIpOfInstance 从本地 ssh 'broken' 实例我的计划是将它带到升级后的稳定状态,创建快照并从那里查看..
- sudo apt-f 安装 0 个已升级,0 个新安装,0 个要删除,5 个未升级。 1 未完全安装或移除。 此操作后,将使用 0 B 的附加磁盘 space。 设置 initramfs-tools (0.99ubuntu13.5) ... update-initramfs:延迟更新(触发器已激活) 处理 initramfs-tools 的触发器 ... update-initramfs:生成 /boot/initrd.img-3.13.0-79-generic E: /usr/share/initramfs-tools/hooks/fixrtc 失败,return 1。 update-initramfs:/boot/initrd.img-3.13.0-79-generic 与 1 失败。 dpkg:处理 initramfs-tools (--configure) 时出错: 已安装子进程 post-安装脚本 returned 错误退出状态 1 处理时遇到错误: initramfs-工具 E: 子进程 /usr/bin/dpkg return 错误代码 (1)
- sudo apt-get 升级
阅读包裹清单...完成
构建依赖树
正在读取状态信息...完成 以下软件包已被保留: google-chrome-稳定 将升级以下软件包: comerr-dev libcomerr2 libss2 无人值守升级 4 个升级,0 个新安装,0 个删除,1 个未升级。 1 未完全安装或移除。 需要获取 0 B/188 kB 的档案。 此操作后,将使用 4,096 B 的额外磁盘 space。 您要继续 [Y/n] 吗?是 预配置包... (正在读取数据库……当前安装了 178509 个文件和目录。) 准备更换 comerr-dev 2.1-1.42-1ubuntu2.2(使用 .../comerr-dev_2.1-1.42-1ubuntu2.3_amd64.deb)... 拆包替换 comerr-dev ... 准备替换 libcomerr2 1.42-1ubuntu2.2 (using .../libcomerr2_1.42-1ubuntu2.3_amd64.deb) ... 解压替换 libcomerr2 ... 准备替换 libss2 1.42-1ubuntu2.2(使用 .../libss2_1.42-1ubuntu2.3_amd64.deb)... 解包替换 libss2 ... 准备替换 unattended-upgrades 0.76ubuntu1.1 (using .../unattended-upgrades_0.76ubuntu1.2_all.deb) ... 拆包更换无人值守升级... 处理安装信息的触发器... 处理 man-db 的触发器 ... ureadahead 的处理触发器...... 设置 initramfs-tools (0.99ubuntu13.5) ... update-initramfs:延迟更新(触发器已激活) 设置 libcomerr2 (1.42-1ubuntu2.3) ... 设置 comerr-dev (2.1-1.42-1ubuntu2.3) ... 设置 libss2 (1.42-1ubuntu2.3) ... 设置无人值守升级 (0.76ubuntu1.2) ... 处理 initramfs-tools 的触发器 ... update-initramfs:生成 /boot/initrd.img-3.13.0-79-generic E: /usr/share/initramfs-tools/hooks/fixrtc 失败,return 1。 update-initramfs:/boot/initrd.img-3.13.0-79-generic 与 1 失败。 dpkg:处理 initramfs-tools (--configure) 时出错: 已安装子进程 post-安装脚本 returned 错误退出状态 1 没有写批准报告,因为已经达到 MaxReports 处理 libc-bin 的触发器 ... 现在正在进行 ldconfig 延迟处理 处理时遇到错误: initramfs-工具 E: 子进程 /usr/bin/dpkg return 错误代码 (1) - sudo apt-get remove initramfs-tools-bin
阅读包裹清单...完成
构建依赖树
正在读取状态信息...完成 无法安装某些软件包。这可能意味着你有 请求一个不可能的情况,或者如果你使用的是不稳定的 一些必需的包尚未创建的分发 或已移出传入。 以下信息可能有助于解决问题:
以下包具有未满足的依赖关系:
- cron : 取决于:adduser 但不会安装
- procps:取决于:初始化脚本
- 暴发户:取决于:初始化脚本 取决于:mountall 取决于:ifupdown (>= 0.6.10ubuntu5)
E: 错误,pkgProblemResolver::Resolve 产生了中断,这可能是由于包裹被保留造成的。
这里做什么?
如果您之前能够使用给定的 SSH 密钥通过 SSH 连接到实例,那么它停止工作的最可能原因是您以某种方式删除了该 SSH 密钥,或者 SSH 守护程序不是 running/was否则坏了。看来你在降级时弄坏了这台机器。
为什么需要这个特定的 VM 实例?它有重要数据吗?如果是这样,您可以将其关闭,使用新的 VM 实例装载其磁盘,然后复制该数据。
如果它运行一项服务,您可能应该切换到一台新机器:即使您能够进入该实例,也不知道哪些仍然有效,哪些无效。
我在安装 bigbluebutton 时遇到问题 正在读取状态信息... 您可能需要 运行 'apt --fix-broken install' 来更正这些。 以下软件包具有未满足的依赖项: bigbluebutton : 取决于: bbb-config 但它不会被安装 gce-compute-image-packages : 取决于: google-compute-engine 但它不会被安装 E:未满足的依赖项。尝试 'apt --fix-broken install' 没有包(或指定解决方案)。