Arch-Linux

替換不正確的依賴包

  • November 27, 2015

這台機器有一個 NVIDIA GeForce 7350 LE 顯卡,我意識到我在設置 Arch Linux 機器時設置了錯誤的顯卡驅動程序。我在下載軟體的過程中libgl也選錯了版本。lib32-libgl

已安裝的軟體包有:nvidia-libgllib32-nvidia-libglmesa

需要的包是:nvidia-304xxlib32-nvidia-304xx-libgl.

問題是:我怎樣才能安全地解除安裝前一個包並安裝後者而不弄亂依賴關係?系統上的許多包都依賴於前 3 個。我對 Arch Linux 中的包管理完全陌生。

更新:我下載了 XFCE 桌面環境和 LXDM 顯示管理器。此時電腦在說“到達目標圖形界面”後在啟動過程中掛起。我可以切換到另一個 tty 並登錄,但它會不斷地將我切換回 tt​​y1(它似乎被凍結),而且做很多事情都相當困難。我認為問題與圖形驅動程序有關。任何幫助,將不勝感激。

pacman處理依賴問題

我假設您已嘗試使用(您可能還想傳遞--asdepspacman)簡單地安裝所需的軟體包:

pacman -S nvidia-304xx lib32-nvidia-304xx-libgl

pacman應該通知您有關發生的衝突並詢問您是否要刪除衝突的軟體包:只需回答“是”。

考慮首先更改為救援模式,以防萬一,通過發出:

systemctl isolate rescue.target

或附加systemd.unit=rescue.target到核心參數添加啟動時間。

現在假設這不起作用:嘗試下一個解決方案。

從現場媒體 chroot 進入您的安裝

使用 live 媒體啟動,然後掛載你的根分區並將 /dev /sys /proc 綁定到剛剛掛載的根目錄中:

mount /dev/sd<X><n> /mnt
mount -o bind /dev /mnt/dev
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc

chroot進入你的archlinux安裝:

chroot /mnt

並刪除不需要的包(-dd告訴pacman跳過所有依賴項檢查):

pacman -Rdd nvidia-libgl lib32-nvidia-libgl mesa

安裝你真正想要的包(你可能還想傳遞--asdepspacman):

pacman -S nvidia-304xx lib32-nvidia-304xx-libgl

希望在安裝這些軟體包後,依賴關係再次得到滿足。

退出 chroot:

exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt

交叉手指並重新啟動。

您實際上可以嘗試pacman -Rdd啟動並執行到您的安裝中——但我認為從實時媒體中進行 chroot 這樣做更安全。

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