web-dev-qa-db-ja.com

Ubuntu Server 18.04 apt-getが失敗する

Ubuntu Server 18.04システムは動作し続けますが、アップデートを適用できなくなりました。私が犯した可能性のあるシステムの変更を認識していません。

これを修正するにはどうすればよいですか?自動削除、パージなどを試しました。

一般的な出力を次に示しますが、どのaptコマンドでも同様のエラーが生成されます。

# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be REMOVED:
  linux-image-4.15.0-22-generic
The following packages will be upgraded:
  libcephfs2 librados2 ssh-import-id
3 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 0 B/3,065 kB of archives.
After this operation, 8,281 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 149817 files and directories currently installed.)
Removing linux-image-4.15.0-22-generic (4.15.0-22.24) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-22-generic
/etc/kernel/postrm.d/x-grub-legacy-ec2:
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ...

Could not find /boot/grub/menu.lst file. Would you like /boot/grub/menu.lst generated for you? (y/N) /usr/sbin/update-grub-legacy-ec2: line 1101: read: 
read error: 0: Bad file descriptor
run-parts: /etc/kernel/postrm.d/x-grub-legacy-ec2 exited with return code 1
dpkg: error processing package linux-image-4.15.0-22-generic (--remove):
 installed linux-image-4.15.0-22-generic package post-removal script 
subprocess returned error exit status 1
Errors were encountered while processing:
 linux-image-4.15.0-22-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

回答ありがとうございます。以下の提案に従ってください。 apt/dpkgでクリーンアップできないようです。出力は次のとおりです。

# Sudo update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-22-generic
Found initrd image: /boot/initrd.img-4.15.0-22-generic
Found linux image: /boot/vmlinuz-4.15.0-20-generic
Found initrd image: /boot/initrd.img-4.15.0-20-generic
done

# Sudo dpkg --purge linux-image-4.15.0-22-generic
dpkg: dependency problems prevent removal of linux-image-4.15.0-22-generic:
 linux-image-generic depends on linux-image-4.15.0-22-generic.
 linux-modules-extra-4.15.0-22-generic depends on linux-image-4.15.0-22-generic | linux-image-unsigned-4.15.0-22-generic; however:
  Package linux-image-4.15.0-22-generic is to be removed.
  Package linux-image-unsigned-4.15.0-22-generic is not installed.

dpkg: error processing package linux-image-4.15.0-22-generic (--purge): 

依存関係の問題-削除中にエラーが発生しました:linux-image-4.15.0-22-generic

2
SDT2000USA

この問題が発生した理由はまだわかりませんが、grub /boot/grub/menu.lstファイルが見つからないため、apt/dpkgの更新が失敗しているようです。そこで、空のファイルを作成しました。

Sudo touch /boot/grub/menu.lst
Sudo update-grub2

すべて良い。次に、システムの更新に進みます。

Sudo apt update
Sudo apt upgrade
Sudo apt autoremove --purge

途中で、現在のmenu.lstファイルがパッケージメンテナーのバージョンと異なるという警告が表示されます。パッケージメンテナーのバージョンをインストールするオプションを選択すると、残りのアップデートとクリーンアップが正常に完了します。次のカーネルアップグレードがどのように行われるかはわかりますが、今のところ問題は解決しています。

提案とヘルプを提供してくれたすべての人に感謝します!

8
SDT2000USA

私はこれがコメントであるべきだと知っていますが、十分な評判はありません。
しかし、昨日 同様の問題 があったことをお知らせします。
この回答がうまくいかない場合は、@ videonauthに連絡してください。彼はこの問題で私を助けてくれた素晴らしいナイスガイです。
私は彼の答えからあなたを助けたいと思う部分をコピーペーストします:

適切なパッケージアーカイブを更新するための更新を実行した後、まずリムーバブルパッケージを削除します。

Sudo apt update
Sudo apt autoremove --purge

これにより、これまでにすべてのリムーバブルパッケージが削除されるはずです。

cd /var/cache/apt/archives
Sudo dpkg -i linux-modules-4.15.0-22-generic_4.15.0-22.24_AMD64.deb
Sudo dpkg -r linux-modules-4.15.0-22-generic_4.15.0-22.24_AMD64.deb  

(Oussemaからの注意:^このコマンドは、私のシステムのアーキテクチャがAMD64であるという事実に基づいて使用されました。コマンドuname -aを使用して、あなたのものを見ることができます
"i386"、 "i486"、 "i586"および "i686"および "athlon"はすべて32ビットを意味します。 「x86_64」は64ビット(OpteronまたはAthlon-64)を意味します。 「i686-64」は、64ビットアドレス空間での32ビット操作を意味します(新しいメモリメカニズムを備えたIntel 686)。

次を実行してアーカイブをクリーンアップします:

Sudo apt clean

そして、完全な更新プロセスを実行した後、パッケージを適切に再インストールできます。

Sudo apt update
Sudo apt dist-upgrade

次の行で:

Sudo apt install --reinstall linux-generic
1
Oussema