将软件包更新到早期版本

时间:2016-03-12 20:48:59

标签: ssh linux-kernel google-compute-engine apt-get gcloud

我做了apt-get升级,因为我们的生产服务器的加载时间大约是40秒。升级之前或之后我都没有快照。(虽然有六个月的快照)加载时间提高到15秒,但我们的erizo服务停止工作。 Erizo也在那个实例上运行。重新启动服务没有帮助,所以我尝试将软件包升级到以前的版本(https://askubuntu.com/questions/138284/how-to-downgrade-a-package-via-apt-get),就像它一样,但几乎每个软件包都有一个错误:以前的软件包版本没有激发。(这很奇怪,因为我复制了dpkg -l)的输出

只有少数成功降级,但在将e1fslibs升级到之前的版本时出现了严重错误。:以下软件包具有未满足的依赖关系: e2fsprogs:PreDepends:e2fslibs

不知何故搞乱了initramfs和/或initramfs-tools,现在实例正在运行,但我无法进入它。

  • 连接到Google云平台中的实例:正在连接... 无法连接,正在重试(1/3)。
  • google cloud shell无法gcloud计算ssh:Permission denied(publickey)。
  • 在本地使用gcloud也说Permission denied(publickey)。

我检查了以下内容:

  • 定义了项目公钥;没有定义任何实例公钥或任何其他元数据(Google Cloud SSH Keys
  • 在Google云平台>>计算引擎>> VM实例>>权限>>我看到'计算'被禁用
  • 通过导航到串行控制台输出页面并查找以accounts-from-metadata:字符串为前缀的输出行来验证守护程序是否正在运行。如果您使用的是标准映像,但在串行控制台输出中没有看到这些输出前缀,则守护程序可能会停止 - >我没有看到这个,所以我希望它不会运行。
  • 检查防火墙规则:(gcloud compute firewall-rules list) default-allow-ssh default 0.0.0.0/0 tcp:22 //规则存在

以下套餐已升级:

  • 易于
  • 易于传输-HTTPS
  • apt-utils
  • binutils
  • cloud-init
  • cloud-initramfs-growroot
  • cloud-initramfs-rescuevol
  • comerr-dev
  • dosfstools
  • e2fslibs
  • e2fsprogs
  • GCE-云配置
  • gce-daemon
  • gce-imagebundle
  • gce-startup-scripts
  • google-cloud-sdk
  • 景观的客户端
  • landscape-common l
  • ibapt-inst1.4 libapt-pkg4.12
  • libcomerr2
  • libss2
  • libudev0 mountall
  • nginx
  • nginx-common
  • nginx-full
  • ntp
  • ntpdate
  • procps
  • python-apt
  • 蟒-易于共用
  • python-lazr.restfulclient
  • udev
  • 无人参与升级
  • update-manager-core
  • upstart
  • whoopsie
  • X11-utils的

这是从串口输出::   - mountall:事件失败   - 未配置landscape-client,请运行landscape-config。

下一步做什么?

  • 将启动脚本应用于正在运行的实例(遵循此https://cloud.google.com/compute/docs/startupscript)并尝试执行Apt-get升级?

  • 尝试在Google云端shell中创建一个新的公钥(再次)来访问该实例?

  • 在谷歌云外壳中第一次生成此文件后,键入gcloud compute --project" enduring-palace-762" ssh --zone" europe-west1-c" " TTA-媒体试验-2" 警告:Google Compute Engine的私有SSH密钥文件不存在。警告:您没有Google Compute Engine的SSH密钥。警告:将执行[/ usr / bin / ssh-keygen]以生成密钥。该工具需要创建目录/home/developer/.ssh
  • 生成的公钥存储在/home/developer/.ssh /google_compute_engine.pub中我制作了该副本,添加了用户名并将公钥的内容添加到计算引擎>>元数据>> 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(pwd位于密钥文件所在的文件夹中) 警告:Google Compute Engine的公共SSH密钥文件不存在。 警告:您没有Google Compute Engine的SSH密钥。 警告:将执行[/ usr / bin / ssh-keygen]以生成密钥。

  • 当我使用ssh-keygen -t rsa -f my-ssh-keys生成新密钥时,我得到相同的结果

  • 非常感谢任何其他可能的解决方案。

[更新]我能够破坏“破碎的”'来自本地的实例使用ssh user @ externalIpOfInstance我的计划是将它带到升级的稳定状态,创建快照并从那里看到..

  • sudo apt-get -f install 0升级,0新安装,0删除,5未升级。 1未完全安装或删除。 执行此操作后,将使用0 B的额外磁盘空间。 设置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失败,返回1。 update-initramfs:/boot/initrd.img-3.13.0-79-generic with 1失败。 dpkg:错误处理initramfs-tools( - configure): 安装后的子进程安装后脚本返回错误退出状态1 处理时遇到错误: initramfs的工具 E:子进程/ usr / bin / dpkg返回错误代码(1)
  • sudo apt-get升级 阅读包裹清单......完成 建立依赖树
    阅读国家信息......完成 以下软件包已被保留: 谷歌铬稳定 将升级以下包: comerr-dev libcomerr2 libss2无人值守升级 4个升级,0个新安装,0个删除,1个未升级。 1未完全安装或删除。 需要获得0 B / 188 kB的档案。 完成此操作后,将使用4,096 B的额外磁盘空间。 你想继续[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(使用... / libcomerr2_1.42-1ubuntu2.3_amd64.deb)... 打开更换libcomerr2的包装...... 准备替换libss2 1.42-1ubuntu2.2(使用... / libss2_1.42-1ubuntu2.3_amd64.deb)... 打开更换的libss2包... 准备更换无人值守升级0.76ubuntu1.1(使用... / unattended-upgrades_0.76ubuntu1.2_all.deb)... 拆开更换无人值守升级包...... 处理install-info的触发器...... 处理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失败,返回1。 update-initramfs:/boot/initrd.img-3.13.0-79-generic with 1失败。 dpkg:错误处理initramfs-tools( - configure): 安装后的子进程安装后脚本返回错误退出状态1 没有编写apport报告,因为已经到达MaxReports                                                           处理libc-bin的触发器...... ldconfig延迟处理现在正在进行中 处理时遇到错误: initramfs的工具 E:子进程/ usr / bin / dpkg返回错误代码(1)
  • sudo apt-get remove initramfs-tools-bin 阅读包裹清单......完成 建立依赖树
    阅读国家信息......完成 某些软件包无法安装。这可能意味着你有 请求一个不可能的情况或如果您使用不稳定 尚未创建某些必需包的分发 或被移出Incoming。 以下信息可能有助于解决问题:

以下软件包具有未满足的依赖项:

  • cron:取决于:adduser,但不会安装
  • procps:取决于:initscripts
  • 暴发户:取决于:initscripts        取决于:mountall        取决于:ifupdown(> = 0.6.10ubuntu5)

E:错误,pkgProblemResolver ::解决生成的中断,这可能是由持有的包引起的。

在这做什么?

1 个答案:

答案 0 :(得分:0)

如果之前能够使用给定的SSH密钥SSH实例化,那么它最有可能停止工作的原因是,如果您以某种方式删除了该SSH密钥,或者SSH守护程序未运行/否则会被破坏。似乎在降级时你打破了这台机器。

为什么需要这个特定的虚拟机实例?它有重要数据吗?如果是这样,您可以将其关闭,使用新的VM实例安装其磁盘,然后关闭该数据。

如果它运行一项服务,你应该切换到一台新机器:即使你能够进入实例,也不知道什么仍然有用,什么不可用。