การติดตั้งไดรเวอร์ nvidia ใน 18.04


31

ทั้งหมด ฉันกำลังพยายามแก้ไขระบบของฉันดังนั้นฉันจึงสามารถติดตั้งไดรเวอร์ของ nvidia ได้ แต่ดูเหมือนว่าจะติดขัดด้วยเหตุผลบางอย่าง ฉันลองลบไฟล์ที่ดาวน์โหลดมาด้วยตนเอง

/var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_i386.deb
/var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_amd64.deb

... เพื่อให้พวกเขาดาวน์โหลดอีกครั้ง แต่ไม่มีประโยชน์ มีใครลองติดตั้งไดรเวอร์เหล่านี้ใน 18.04 เมื่อเร็ว ๆ นี้?

~$ sudo apt --fix-broken install
[sudo] password for jarl: 
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:
  lib32gcc1 libc6-i386
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libnvidia-gl-390 libnvidia-gl-390:i386
The following NEW packages will be installed
  libnvidia-gl-390 libnvidia-gl-390:i386
0 to upgrade, 2 to newly install, 0 to remove and 4 not to upgrade.
3 not fully installed or removed.
Need to get 0 B/29,1 MB of archives.
After this operation, 147 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 214344 files and directories currently installed.)
Preparing to unpack .../libnvidia-gl-390_390.48-0ubuntu3_i386.deb ...
diversion of /usr/lib/i386-linux-gnu/libGL.so.1 to /usr/lib/i386-linux-gnu/libGL.so.1.distrib by nvidia-340
dpkg-divert: error: mismatch on package
  when removing 'diversion of /usr/lib/i386-linux-gnu/libGL.so.1 by libnvidia-gl-390'
  found 'diversion of /usr/lib/i386-linux-gnu/libGL.so.1 to /usr/lib/i386-linux-gnu/libGL.so.1.distrib by nvidia-340'
dpkg: error processing archive /var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_i386.deb (--unpack):
 new libnvidia-gl-390:i386 package pre-installation script subprocess returned error exit status 2
Preparing to unpack .../libnvidia-gl-390_390.48-0ubuntu3_amd64.deb ...
diversion of /usr/lib/x86_64-linux-gnu/libGL.so.1 to /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib by nvidia-340
dpkg-divert: error: mismatch on package
  when removing 'diversion of /usr/lib/x86_64-linux-gnu/libGL.so.1 by libnvidia-gl-390'
  found 'diversion of /usr/lib/x86_64-linux-gnu/libGL.so.1 to /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib by nvidia-340'
dpkg: error processing archive /var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_amd64.deb (--unpack):
 new libnvidia-gl-390:amd64 package pre-installation script subprocess returned error exit status 2
Errors were encountered while processing:
 /var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_i386.deb
 /var/cache/apt/archives/libnvidia-gl-390_390.48-0ubuntu3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

ลองล้างแคชทั้งหมดด้วยsudo apt-get cleanแล้วลองอีกครั้ง
Karl Richter

หลังจากsudo apt-get cleanสิ่งเดียวกันยังคงเกิดขึ้นสำหรับฉัน
Pim Heijden

คำตอบ:


75

พบคำสั่งนี้ในฟอรัม Ubuntu, ทำงานได้ดีมากกับฉัน:

วิ่ง:

LC_MESSAGES=C dpkg-divert --list '*nvidia-340*' | sed -nre 's/^diversion of (.*) to .*/\1/p' | xargs -rd'\n' -n1 -- sudo dpkg-divert --remove
sudo apt --fix-broken install

nvidia-340คำสั่งแรกจะลบทุกแพคเกจเบี่ยงเบนไปจาก หากคุณมีเวอร์ชัน "เปลี่ยนทิศทาง" ของ nvidia อื่นให้เปลี่ยน อ่านรหัสข้อผิดพลาดเพื่อทราบว่าเวอร์ชันใดกำลังโอนสาย

ที่มา: https://ubuntuforums.org/showthread.php?t=2388026&p=13761809#post13761809 รุ่งโรจน์ถึงการพูดติดอ่าง :)


2
หากคุณไม่ได้ใช้อูบุนตูในภาษาอังกฤษมีการเปลี่ยนแปลงที่คุณจะมีการเปลี่ยนแปลงตัวเลขในอย่างอื่นเช่นผมต้องเปลี่ยนไปawk '{print $3}' awk '{print $2}'หรือคุณสามารถเปลี่ยนสถานที่เป็นภาษาอังกฤษ ( for FILE in $(LANG=en dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done)
Petr R.

2
คุณได้ช่วยฉันจากความทุกข์ทรมานฉันได้สร้างบัญชีที่นี่เพื่อ
อัปเกรด

14

นี่คือคำตอบเต็มในฟอรั่มอื่น

หลักฐานพื้นฐานของคำตอบคือ:

  1. คุณมีการอ้างอิงเก่าที่คุณต้องการลบ
  2. คุณต้องการทำความสะอาดความยุ่งเหยิง
  3. คุณต้องการติดตั้งไดรเวอร์ใหม่

ฉันคิดว่าคุณมี cr * p จากไดรเวอร์ 340 ที่ติดตั้ง - ซึ่งเป็นปัญหาของฉัน

  1. ลบการอ้างอิงเก่า

    LC_MESSAGES=C dpkg-divert --list '*nvidia-340*' | sed -nre 's/^diversion of (.*) to .*/\1/p' | xargs -rd'\n' -n1 -- sudo dpkg-divert --remove
  2. clean mess - ขึ้นอยู่กับระเบียบที่คุณติดตั้งค้นหาออกหากไม่ได้ผลนอกกรอบ;)

    sudo dpkg --force-all -P nvidia-390 nvidia-compute-utils-390 nvidia-dkms-390 nvidia-prime nvidia-settings nvidia-opencl-icd-340 nvidia-opencl-icd-384 nvidia-kernel-source-390 nvidia-kernel-common-390 libnvidia-cfg1-390 libnvidia-common-390 libnvidia-compute-390 libnvidia-decode-390 libnvidia-encode-390  libnvidia-fbc1-390 libnvidia-ifr1-390
    sudo apt purge --autoremove '*nvidia*'
    sudo apt-get update
    sudo apt-get upgrade
    
  3. ติดตั้งไดรเวอร์ที่แนะนำใหม่

    ubuntu-drivers devices
    nvidia-settings
    

คำแนะนำของฉันคือ:
อย่าเล่นกับการตั้งค่าในไดรเวอร์ cr * ppy นี้เพียงเพื่อตรวจสอบว่าติดตั้ง :)


3
กรุณาอย่าแนะนำโดยdpkg --force-allไม่มีเหตุผลที่ดี! การทำแท้งที่พบโดยมีข้อผิดพลาดนั้นหมายถึงการปกป้องความสมบูรณ์ของระบบการจัดการบรรจุภัณฑ์และไม่ควรถูกระงับโดยปราศจากความคิดหรือการดูแล! -1
David Foerster

วิธีนี้ใช้ได้ผล ฉันต้องแสดงความคิดเห็น: ฉันตรวจพบปัญหาที่เกิดขึ้นเมื่อใช้จอแสดงผล 4k แล้วคุณมีปัญหาในการบู๊ต ฉันตรวจพบได้อย่างไร: ติดตั้งมอนิเตอร์เก่าใหม่และบูตได้ง่าย
Vic Nicethemer

ฉันไม่ # 1 แล้วและsudo apt install -f sudo apt upgradeทำงาน
ICE

ทำไมคำตอบนี้เกือบเหมือนกับคำตอบของ Lucas Serafim
Pim Heijden

6

ฉันแก้ไขปัญหาด้วยการลบการเบี่ยงเบนของ nvidia-340 nvidia-340หวังว่าฉันไม่จำเป็นต้องใช้ ต่อไปนี้เป็นตัวอย่าง:

dpkg-divert --package nvidia-340 --remove /usr/lib/i386-linux-gnu/libGL.so.1

คุณสามารถลบต่อเมื่อใดก็ตามที่คุณมีข้อขัดแย้ง


ขอบคุณตัน! ตอนแรกดูเหมือนว่ามันจะไม่ทำงาน แต่ถ้าเราพยายามต่อไปและลบออกในที่สุดมันก็จะแก้ ขอบคุณอีกครั้ง.
Gaurav Gandhi

ขอบคุณมาก! ฉันไม่สามารถผ่านปัญหานี้ได้โดยไม่ทราบว่าฉันสามารถแก้ไขรายการ dpkg-divert สำหรับขยะ nvidia-340 คุณร็อค
Mikis

2

ฉันจะเรียกใช้การทำความสะอาดอัตโนมัติและดูว่ามันเป็นสิ่งที่ฉันคิดว่ามันเป็นแพคเกจสับสน

sudo apt auto-clean
sudo apt update
sudo apt upgrade
sudo apt install nvidia-driver-390 libvulkan1

แก้ไข: เพื่อตอบคำถามอื่นของคุณเมื่อฉันติดตั้ง 18.04 ในวันอื่น ๆ ที่ 390 ทำงานได้ดี แต่ไป 396 ก็ค่อนข้างสนุก สิ่งนี้แก้ไขได้สำหรับฉัน


ขอบคุณมาก. นี่คือเท่าที่ฉันได้รับ: (ฉันคิดว่าฉันอาจทำการติดตั้งใหม่ทั้งหมด): ~ $ sudo apt อัปเกรดรายการแพคเกจการอ่าน ... เสร็จสิ้นการสร้างแผนผังการพึ่งพาต้นไม้กำลังอ่านข้อมูลสถานะ ... เสร็จแล้วคุณอาจต้องการเรียกใช้ 'apt - -fix-broken install 'เพื่อแก้ไขสิ่งเหล่านี้ แพ็คเกจต่อไปนี้มีการขึ้นต่อกันที่ไม่ได้มาตรฐาน libnvidia-ifr1-390: ขึ้นอยู่กับ: libnvidia-gl-390 แต่ไม่ได้ติดตั้ง libnvidia-ifr1-390: i386: ขึ้นอยู่: libnvidia-gl-390: i386 แต่ไม่ได้ติดตั้ง nvidia-gl-390: ขึ้นอยู่กับ: libnvidia-ifr1-390 gl-390 (= 390.48-0ubuntu3) แต่ไม่ได้ติดตั้ง ....
Jarl Arntzen

.... Recommends: libnvidia-gl-390:i386 (= 390.48-0ubuntu3) E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
Jarl Arntzen

1

เรียกใช้สิ่งนี้ก่อน

วิธีการแก้ #for FILE in $(dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done

จากนั้นติดตั้งจาก ppa

sudo add-apt-repository ppa:graphics-drivers/ppa 
sudo apt update 
sudo apt install nvidia-390

สิ่งนี้ใช้ได้กับฉันใน Ubuntu 18.04 LTS


nvidia-driver-390 อยู่ในที่เก็บเริ่มต้นของ Ubuntu 18.04 ดังนั้นจุดเพิ่ม PPA คืออะไร
karel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.