Package-Management
在實時系統救援 cd 上安裝 base-devel 軟體包時出現“寫入失敗”
我正在嘗試使用從 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 菜單中:
- 按“e”編輯引導選項
cow_spacesize=3G
在以開頭的行之後追加linux /sysrescd/...
- 按 F10 啟動。
然後:
- 首先,
pacman-key --refresh-keys
可能必須執行。pacman --sync --refresh --noconfirm base-devel
現在可以正常工作。make現在應該可以工作了。