壊れた glibc パッケージを修復する方法

壊れた glibc パッケージを修復する方法

私は Ubuntu 18.04 を使用しており、libc6 をバージョン 2.27 から 2.29 にアップグレードしようとしましたが、パッケージ システムが壊れてしまいました。修正コマンドを使用しようとすると、常にシステム内の大量のパッケージが削除されることが表示されるため、修正できません。

Synaptic では、次のパッケージが壊れていると表示されます:

  • glibc ドキュメント 2.27-3
  • libc-dev-bin 2.27-3
  • libc6 2.29-0
  • libc6-dbg 2.27-3
  • libc6-dev 2.27-3
  • libc6:i386 2.27-3

どうやって壊れたのか?私は以下のパッケージをダウンロードしましたUbuntu 16.04 の最新版

  • glibc-doc_2.29-0ubuntu2_all.deb
  • glibc-source_2.29-0ubuntu2_all.deb
  • libc6_2.29-0ubuntu2_amd64.deb
  • libc6-amd64_2.29-0ubuntu2_i386.deb
  • libc-bin_2.29-0ubuntu2_amd64.deb
  • ロケール_2.29-0ubuntu2_all.deb

dpkg 経由で 1 つずつインストールしようとしましたが、依存関係エラーのため機能しませんでした。最後に次のコマンドを使用しました。

sudo dpkg -i libc-bin_2.29-0ubuntu2_amd64.deb libc6_2.29-0ubuntu2_amd64.deb libc6-amd64_2.29-0ubuntu2_i386.deb 

この後、postgres などの一部のプログラムを再起動する必要があるというプロンプトが表示され、私は「はい」と答えました。

その後、壊れたパッケージのエラーが表示されました。

sudo apt updateエラーは発生しません。修正しようとすると、ほとんどすべてを削除する必要があることが示されます。

sudo apt install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  alex freeglut3 freeglut3-dev happy hscolour libbsd-dev libdrm-dev libffi-dev
  libgl1-mesa-dev libgles1 libglu1-mesa-dev libglvnd-core-dev libglvnd-dev
  libgmp-dev libgmpxx4ldbl libopengl0 libtinfo-dev libx11-xcb-dev
  libx11-xcb1:i386 libxcb-dri2-0-dev libxcb-dri3-dev libxcb-glx0-dev
  libxcb-present-dev libxcb-randr0-dev libxcb-render0-dev libxcb-shape0-dev
  libxcb-sync-dev libxcb-xfixes0-dev libxdamage-dev libxext-dev libxfixes-dev
  libxi-dev libxmu-dev libxmu-headers libxshmfence-dev libxxf86vm-dev
  linux-headers-4.18.0-17 linux-headers-4.18.0-17-generic
  linux-image-4.18.0-17-generic linux-libc-dev linux-modules-4.18.0-17-generic
  linux-modules-extra-4.18.0-17-generic mesa-common-dev x11proto-damage-dev
  x11proto-fixes-dev x11proto-xext-dev x11proto-xf86vidmode-dev
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  glibc-doc-reference
The following packages will be REMOVED:
  build-essential cabal-install g++ g++-7 ghc haskell-platform libbsd0:i386
  libc-dev-bin libc6:i386 libc6-amd64:i386 libc6-dbg libc6-dev
  libdrm-amdgpu1:i386 libdrm-intel1:i386 libdrm-nouveau2:i386
  libdrm-radeon1:i386 libdrm2:i386 libedit2:i386 libelf1:i386 libexpat1:i386
  libffi6:i386 libgcc1:i386 libghc-async-dev libghc-attoparsec-dev
  libghc-call-stack-dev libghc-case-insensitive-dev libghc-fgl-dev
  libghc-fixed-dev libghc-gluraw-dev libghc-glut-dev libghc-half-dev
  libghc-hashable-dev libghc-haskell-src-dev libghc-html-dev libghc-http-dev
  libghc-hunit-dev libghc-integer-logarithms-dev libghc-mtl-dev
  libghc-network-dev libghc-network-uri-dev libghc-objectname-dev
  libghc-opengl-dev libghc-openglraw-dev libghc-parallel-dev
  libghc-parsec3-dev libghc-primitive-dev libghc-quickcheck2-dev
  libghc-random-dev libghc-regex-base-dev libghc-regex-compat-dev
  libghc-regex-posix-dev libghc-scientific-dev libghc-split-dev
  libghc-statevar-dev libghc-stm-dev libghc-syb-dev libghc-text-dev
  libghc-tf-random-dev libghc-unordered-containers-dev libghc-vector-dev
  libghc-zlib-dev libgl1:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386
  libglapi-mesa:i386 libglvnd0:i386 libglx-mesa0:i386 libglx0:i386
  libllvm7:i386 libncurses5-dev libnvidia-compute-418:i386
  libnvidia-decode-418:i386 libnvidia-encode-418:i386 libnvidia-fbc1-418:i386
  libnvidia-gl-418:i386 libnvidia-ifr1-418:i386 libpciaccess0:i386
  libsensors4:i386 libstdc++-7-dev libstdc++6:i386 libtinfo5:i386
  libx11-6:i386 libxau6:i386 libxcb-dri2-0:i386 libxcb-dri3-0:i386
  libxcb-glx0:i386 libxcb-present0:i386 libxcb-sync1:i386 libxcb1:i386
  libxdamage1:i386 libxdmcp6:i386 libxext6:i386 libxfixes3:i386
  libxshmfence1:i386 libxxf86vm1:i386 zlib1g:i386 zlib1g-dev
The following NEW packages will be installed:
  glibc-doc-reference
0 upgraded, 1 newly installed, 97 to remove and 0 not upgraded.
6 not fully installed or removed.
Need to get 5.483 kB of archives.
After this operation, 1.303 MB disk space will be freed.
Do you want to continue? [Y/n] 

答え1

Aptは壊れていません。まだ正常に動作します。しかし、あなたはaptにフランケンシステムUbuntu の異なるリリースのパッケージを混在させます。

Apt は、今や非論理的となった依存関係を解決することは決してできません。(あなたもそうでしょう)。apt が機能できないので、間違ったバージョンのパッケージを削除するまで、アップグレードやセキュリティ パッチを入手できなくなります。

弊社では、Frankensystems のサポートは提供しておりません。定義上、Frankensystems は不安定で、異常で診断が難しい問題が起こりやすいです。Deb ベースのシステムは、特定のバージョンのパッケージで機能するように設計されています。間違ったバージョンのパッケージは問題を引き起こします。

間違ったバージョンのパッケージを削除します。19.04 パッケージを実行したい場合は、Ubuntu 19.04 のインストールを検討してください。現在の 18.04 システムを維持したい場合は、VM または予備パーティションにインストールしてください。

答え2

すべてのパッケージのバージョン 2.27 をダウンロードし、dpkg を実行することで修正しました。

壊れる前に、同じ順序でインストールしようとしました。循環依存関係などを防ぐために、複数の deb ファイルに dpkg を使用しました。何かが変わるかどうかはわかりません。

答え3

したがって、新しいディストリビューションにのみ付属し、いくつかのゲームで必要なライブラリが必要な場合は、ディストリビューションをアップグレードするのが実際の解決策です...

Ubuntu システムでゲームをプレイする予定の場合、18.04 のサポートは 2023 年までです... たとえば、2020 年の Linux ゲームが 3 つありますが、更新されると glibc6-2.29 以降が必要になります。ただし、私の場合は、新しいディストリビューション ISO をダウンロードして完全インストールを行う必要があります。disptr-upgrade が失敗するため...

関連情報