Package-Management

在實時系統救援 cd 上安裝 base-devel 軟體包時出現“寫入失敗”

  • April 26, 2020

我正在嘗試使用從 USB 驅動器**實時啟動的 SystemRescueCd來挽救故障硬碟驅動器。**為此,我需要編譯ddrutility。由於發行版沒有安裝make,我需要先安裝base-devel包(以 root 身份執行命令):

pacman --sync --refresh --noconfirm base-devel

但是,這會因寫入錯誤而失敗:

...

installing libmpc...
installing gcc...
error: could not extract /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/lto1 (Write failed)
error: could not extract /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/plugin/gengtype (Write failed)
error: could not extract /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/plugin/include/alloc-pool.h (Write failed)
... (many more errors)

error: problem occurred while installing gcc
Optional dependencies for gcc
   lib32-gcc-libs: for generating code for 32-bit ABI
error: could not commit transaction
error: failed to commit transaction (transaction aborted)
Errors occurred, no packages were upgraded.

完整輸出在這裡。

根據掛載輸出,根是可寫的:

...
airootfs on / type overlay (rw,relatime,lowerdir=/run/archiso/sfs/airootfs,upperdir=/run/archiso
...

奇怪的是,當我檢查是否存在提到的文件之一時:

/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/plugin/include/alloc-pool.h

在執行上面的 pacman 命令之前它不存在,之後它存在,但是用零(15427 字節)歸檔。所以也許問題出在其他地方?

在實時系統上安裝軟體包原則上是否存在問題?(我知道重新啟動後所有更改都會失去,這很好。)

問題是預設情況下,即使根分區是可寫的,它的可用空間也太少了。這可以在啟動之前修復:

在 GRUB 菜單中:

  1. 按“e”編輯引導選項
  2. cow_spacesize=3G在以開頭的行之後追加linux /sysrescd/...
  3. 按 F10 啟動。

然後:

  1. 首先,pacman-key --refresh-keys可能必須執行。
  2. pacman --sync --refresh --noconfirm base-devel現在可以正常工作。

make現在應該可以工作了。

引用自:https://unix.stackexchange.com/questions/582421