Cài đặt trình điều khiển nvidia vào ngày 18.04


31

tất cả các. Tôi đang cố gắng sửa hệ thống của mình để có thể cài đặt trình điều khiển nvidia nhưng dường như nó bị kẹt vì một số lý do. Tôi đã thử xóa thủ công các tệp đã tải xuống khỏi

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

... để cho phép họ tải xuống một lần nữa nhưng vô ích. Có ai đã thử cài đặt các trình điều khiển vào ngày 18.04 gần đây chưa?

~$ 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)

Cố gắng làm sạch toàn bộ bộ đệm với sudo apt-get cleanvà thử lại.
Karl Richter

sau khi sudo apt-get cleanđiều tương tự vẫn xảy ra với tôi
Pim Heijden

Câu trả lời:


75

Tìm thấy lệnh này trên các diễn đàn Ubuntu, đã làm việc rất tốt với tôi:

Chạy:

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

Lệnh đầu tiên sẽ loại bỏ tất cả các gói chuyển hướng từ nvidia-340. Nếu bạn có phiên bản nvidia khác "chuyển hướng" thay đổi nó; đọc mã lỗi để biết phiên bản nào đang chuyển hướng.

Nguồn: https://ubuntuforums.org/showthread.php?t=2388026&p=13761809#post13761809 kudos để stutteringp0et2 :)


2
Nếu bạn không sử dụng Ubuntu bằng tiếng Anh, có một thay đổi bạn sẽ phải thay đổi số awk '{print $3}'thành một thứ khác, ví dụ như tôi phải đổi nó thành awk '{print $2}'. Hoặc bạn có thể thay đổi ngôn ngữ thành tiếng Anh ( for FILE in $(LANG=en dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done).
Petr R.

2
Bạn đã cứu tôi khỏi nỗi đau đớn của mình, tôi đã tạo một tài khoản ở đây chỉ để nâng cấp
Primusa

14

Đây là câu trả lời đầy đủ trong một diễn đàn khác

Tiền đề cơ bản của câu trả lời là:

  1. bạn có những phụ thuộc cũ mà bạn muốn loại bỏ
  2. bạn muốn dọn dẹp mớ hỗn độn
  3. bạn muốn cài đặt trình điều khiển mới

Tôi giả sử bạn có cr * p từ trình điều khiển 340 được cài đặt - đó là vấn đề của tôi

  1. loại bỏ các phụ thuộc cũ

    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. dọn dẹp mớ hỗn độn - phụ thuộc vào mớ hỗn độn mà bạn đã cài đặt, hãy tìm ra nếu không hoạt động được;)

    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. cài đặt trình điều khiển mới được đề xuất

    ubuntu-drivers devices
    nvidia-settings
    

Lời khuyên của tôi là:
không chơi với các cài đặt trong trình điều khiển cr * ppy này chỉ để kiểm tra nếu đã cài đặt :)


3
Xin đừng đề nghị dpkg --force-allkhông có lý do chính đáng! Việc phá thai gặp phải có lỗi là để bảo vệ tính toàn vẹn của hệ thống quản lý gói và không nên bị đàn áp mà không cần suy nghĩ hoặc quan tâm! -1
David Foerster

Những công việc này. Tôi phải nhận xét: tôi đã phát hiện ra vấn đề phát sinh khi màn hình 4k được sử dụng - khi đó bạn gặp vấn đề về khởi động. Cách tôi phát hiện: cắm lại màn hình cũ và nó khởi động dễ dàng
Vic Nicethemer

Tôi đã làm # 1 và sau đó sudo apt install -fsudo apt upgrade. đã làm việc.
ICE

Tại sao câu trả lời này gần giống với câu trả lời của Lucas Serafim?
Pim Heijden

6

Tôi đã giải quyết vấn đề bằng cách loại bỏ chuyển hướng của nvidia-340. hy vọng tôi không cần sử dụng nvidia-340. Sau đây là một ví dụ:

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

Bạn có thể tiếp tục loại bỏ bất cứ khi nào bạn có một cuộc xung đột.


Cảm ơn rất nhiều! Lúc đầu, có vẻ như nó không hoạt động, nhưng nếu chúng ta tiếp tục cố gắng và loại bỏ, cuối cùng nó cũng giải quyết được. Cảm ơn một lần nữa.
Gaurav Gandhi

Lời cảm ơn to lớn! Tôi không thể vượt qua vấn đề này mà không biết rằng tôi có thể sửa đổi danh sách dpkg-redirect cho nvidia-340 rác. Bạn đá
Mikis

2

Tôi sẽ chạy apt auto-cleaner và xem nó có phải là cái tôi nghĩ không, một gói bị rối.

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

chỉnh sửa: để trả lời câu hỏi khác của bạn, khi tôi cài đặt 18.04 vào ngày khác, 390 hoạt động tốt, nhưng đến 396 thì hơi "vui". CÁi này đã sửa nó giúp tôi.


Cảm ơn rất nhiều. Đây là theo như tôi đã nhận được: (Tôi nghĩ rằng tôi có thể thực hiện cài đặt lại sạch sẽ): ~ $ sudo apt nâng cấp Danh sách gói đọc -fix-break install 'để sửa những lỗi này. Các gói sau đây có các thuộc tính không được đáp ứng. libnvidia-ifr1-390: Depends: libnvidia-gl-390 nhưng nó không được cài đặt libnvidia-ifr1-390: i386: Tùy thuộc: libnvidia-gl-390: i386 nhưng nó không được cài đặt nvidia-driver-390: gl-390 (= 390.48-0ubfox3) nhưng chưa được cài đặt ....
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

Chạy cái này trước

Dung dịch #for FILE in $(dpkg-divert --list | grep nvidia-340 | awk '{print $3}'); do dpkg-divert --remove $FILE; done

Sau đó cài đặt nó từ ppa,

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

cái này hoạt động với tôi trên Ubuntu 18.04 LTS


Nvidia-driver-390 nằm trong kho lưu trữ Ubuntu 18.04 mặc định, vậy điểm bổ sung của PPA là gì?
karel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.