在 Ubuntu 20.04 上安装 displaylink-driver:未满足的依赖项“evdi”

在 Ubuntu 20.04 上安装 displaylink-driver:未满足的依赖项“evdi”

我正在尝试按照我自己的安装说明进行操作:适用于 Ubuntu 的 USB 转 HDMI 适配器。它们在 Ubuntu 22.04 上运行良好,但在 20.04 上却不行。在 20.04 上执行此sudo apt install displaylink-driver步骤时,我得到:

$ sudo apt install displaylink-driver 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 displaylink-driver : Depends: evdi (>= 1.14.1) but it is not going to be installed
                      Depends: evdi (< 1.15.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

这个答案建议sudo apt install evdi-dkms

这会导致更多错误:

Building initial module for 5.15.0-41-generic
ERROR (dkms apport): kernel package linux-headers-5.15.0-41-generic is not supported
Error! Bad return status for module build on kernel: 5.15.0-41-generic (x86_64)
Consult /var/lib/dkms/evdi/1.6.0+dfsg/build/make.log for more information.
dpkg: error processing package evdi-dkms (--configure):
 installed evdi-dkms package post-installation script subprocess returned error exit status 10
Setting up libevdi0 (1.6.0+dfsg-1ubuntu3) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
Errors were encountered while processing:
 evdi-dkms
E: Sub-process /usr/bin/dpkg returned an error code (1)

完整内容:

$ sudo apt install evdi-dkms
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libevdi0
The following NEW packages will be installed:
  evdi-dkms libevdi0
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 34.4 kB of archives.
After this operation, 173 kB of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 evdi-dkms all 1.6.0+dfsg-1ubuntu3 [25.5 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 libevdi0 amd64 1.6.0+dfsg-1ubuntu3 [8,972 B]
Fetched 34.4 kB in 0s (74.8 kB/s)   
Selecting previously unselected package evdi-dkms.
(Reading database ... 499689 files and directories currently installed.)
Preparing to unpack .../evdi-dkms_1.6.0+dfsg-1ubuntu3_all.deb ...
Unpacking evdi-dkms (1.6.0+dfsg-1ubuntu3) ...
Selecting previously unselected package libevdi0.
Preparing to unpack .../libevdi0_1.6.0+dfsg-1ubuntu3_amd64.deb ...
Unpacking libevdi0 (1.6.0+dfsg-1ubuntu3) ...
Setting up evdi-dkms (1.6.0+dfsg-1ubuntu3) ...
Loading new evdi-1.6.0+dfsg DKMS files...
Building for 5.15.0-41-generic
Building initial module for 5.15.0-41-generic
ERROR (dkms apport): kernel package linux-headers-5.15.0-41-generic is not supported
Error! Bad return status for module build on kernel: 5.15.0-41-generic (x86_64)
Consult /var/lib/dkms/evdi/1.6.0+dfsg/build/make.log for more information.
dpkg: error processing package evdi-dkms (--configure):
 installed evdi-dkms package post-installation script subprocess returned error exit status 10
Setting up libevdi0 (1.6.0+dfsg-1ubuntu3) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
Errors were encountered while processing:
 evdi-dkms
E: Sub-process /usr/bin/dpkg returned an error code (1)

现在sudo apt install安装在任何事物否则。并sudo apt upgrade失败,如下所示:

$ sudo apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 
Setting up evdi-dkms (1.6.0+dfsg-1ubuntu3) ...
Removing old evdi-1.6.0+dfsg DKMS files...

------------------------------
Deleting module version: 1.6.0+dfsg
completely from the DKMS tree.
------------------------------
Done.
Loading new evdi-1.6.0+dfsg DKMS files...
Building for 5.15.0-41-generic
Building initial module for 5.15.0-41-generic
ERROR (dkms apport): kernel package linux-headers-5.15.0-41-generic is not supported
Error! Bad return status for module build on kernel: 5.15.0-41-generic (x86_64)
Consult /var/lib/dkms/evdi/1.6.0+dfsg/build/make.log for more information.
dpkg: error processing package evdi-dkms (--configure):
 installed evdi-dkms package post-installation script subprocess returned error exit status 10
Errors were encountered while processing:
 evdi-dkms
E: Sub-process /usr/bin/dpkg returned an error code (1)

所以我跑了sudo dpkg -r evdi-dkms根据我在这里的评论修复了这个问题,我又回到了起点。sudo apt upgrade又能正常工作了,谢天谢地!——呼!但是,sudo apt install displaylink-driver又回到了开头的错误。

我尝试升级到 Ubuntu 22.04,但/boot太满了。

注意:sudo apt install evdi-dkms上面的失败消息指出:

咨询/var/lib/dkms/evdi/1.6.0+dfsg/build/make.log以获取更多信息。

该文件的内容如下:

/var/lib/dkms/evdi/1.6.0+dfsg/build/make.log

DKMS make.log for evdi-1.6.0+dfsg for kernel 5.15.0-41-generic (x86_64)
Thu 28 Sep 2023 07:05:36 PM MST
make: Entering directory '/usr/src/linux-headers-5.15.0-41-generic'
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_drv.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_connector.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_modeset.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_encoder.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_main.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_fb.o
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_gem.o
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_drv.c:11:10: fatal error: drm/drmP.h: No such file or directory
   11 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_drv.o] Error 1
make[1]: *** Waiting for unfinished jobs....
  CC [M]  /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_painter.o
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_connector.c:14:10: fatal error: drm/drmP.h: No such file or directory
   14 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_modeset.c:15:10: fatal error: drm/drmP.h: No such file or directory
   15 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.b<drm/drmP.h>uild:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_modeset.o] Error 1
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_connector.o] Error 1
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_encoder.c:14:10: fatal error: drm/drmP.h: No such file or directory
   14 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_encoder.o] Error 1
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_gem.c:11:10: fatal error: drm/drmP.h: No such file or directory
   11 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_gem.o] Error 1
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_main.c:15:10: fatal error: drm/drmP.h: No such file or directory
   15 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_main.o] Error 1
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_painter.c:12:10: fatal error: drm/drmP.h: No such file or directory
   12 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_painter.o] Error 1
/var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_fb.c:20:10: fatal error: drm/drmP.h: No such file or directory
   20 | #include <drm/drmP.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:285: /var/lib/dkms/evdi/1.6.0+dfsg/build/evdi_fb.o] Error 1
make: *** [Makefile:1875: /var/lib/dkms/evdi/1.6.0+dfsg/build] Error 2
make: Leaving directory '/usr/src/linux-headers-5.15.0-41-generic'


ERROR (dkms apport): kernel package linux-headers-5.15.0-41-generic is not supported

<drm/drmP.h>所以如果有人知道如何获取头文件的话显然我缺少了它。

源代码evdi似乎在这里:https://github.com/DisplayLink/evdi

我无法从头开始构建它。make由于缺少另一个头文件而失败。

(这就是人们使用 Windows 的原因,朋友们)。

我正在尝试libdrm-dev按照以下说明进行安装:如何在 Ubuntu 20.04 上安装 DisplayLink 软件或(较新)如何在旧版 Ubuntu 上安装 DisplayLink 软件

...但那也不起作用。
新问题:无法在 Ubuntu 20.04 上安装,libdrm-dev因为它需要的依赖项比我现有的更旧

如果我手动libdrm从源代码构建和安装,根据我在这里的回答,然后手动尝试安装 DisplayLink 驱动程序,安装程序仍然阻止我:

~/Downloads/Install_Files/DisplayLink/DisplayLink USB Graphics Software for Ubuntu5.8-EXE$ sudo ./displaylink-driver-5.8.0-63.33.run 
Verifying archive integrity...  100%   MD5 checksums are OK. All good.
Uncompressing DisplayLink Linux Driver 5.8.0-63.33  100%  
Distribution discovered: Ubuntu 20.04.4 LTS
[ Installing dependencies ]
Need to update package list.
apt update? (Y/n) n
Unsatisfied dependencies. Missing component: libdrm.
This is a fatal error, cannot install DisplayLink Linux Software.

也可以看看

  1. 在 Ubuntu 20.04 上安装 DisplayLink 驱动程序时出现问题
  2. 无法在 Ubuntu 22.04 上安装 Synaptics displaylink-driver

答案1

完整说明:在 Ubuntu 20.04 上安装 displaylink-driver(也适用于 22.04 或更高版本)

注意:这些说明也适用于 Ubuntu 22.04 或更高版本。这里唯一特定于 Ubuntu 20.04 的部分是使用sudo aptitude install libdrm-dev进行安装libdrm-dev,因为sudo apt install libdrm-dev不起作用。

我找到了一个办法!我libdrm-dev使用以下方法进行了安装aptitude

sudo aptitude install libdrm-dev
# then choose these options:
n  # do NOT leave things as-is
y  # DO downgrade dependencies
y  # Do continue with the install

请参阅我的完整答案、输出和说明:无法在 Ubuntu 20.04 上安装,libdrm-dev因为它需要的依赖项比我现有的更旧

然后,一旦我libdrm-dev成功安装,按照这里的官方说明安装依赖项就可以了:如何在旧版 Ubuntu 上安装 DisplayLink 软件

sudo apt update
sudo apt dist-upgrade
sudo apt install dkms
sudo apt install libdrm-dev  # already installed by aptitude above, but running
                             # this command again doesn't hurt

然后我在这里的回答中的说明起作用了:适用于 Ubuntu 的 USB 转 HDMI 适配器

在 BIOS 中禁用安全启动,然后重新启动并运行以下命令:

# Make this directory if it doesn't exist, and cd into it
mkdir -p ~/Downloads/Install_Files/DisplayLink
cd ~/Downloads/Install_Files/DisplayLink

# Download the Ubuntu APT package provided by Synaptics.com, the official 
# makers of DisplayLink
wget https://www.synaptics.com/sites/default/files/Ubuntu/pool/stable/main/all/synaptics-repository-keyring.deb

# Install the DisplayLink APT package keyring
sudo apt install ./synaptics-repository-keyring.deb

# Update your APT package cache
sudo apt update

# Install the DisplayLink driver provided by Synaptics.com, the official source
sudo apt install displaylink-driver

# Reboot. 
# Now it is plug-and-play. Plug in your DisplayLink adapter and it just works.
# It may take up to 5~10 seconds to recognize a monitor. 

完毕!

重启后,你可以插入90 美元,Club3D CSV-1477 USB 3.0 A 型转双显示端口 1.2 4K 60Hz 外置显卡适配器例如,它将在大约 5 到 10 秒内被识别,并自动开始通过 USB 3.0 USB-A 插头同时显示最多两个 4k 60 Hz 输出。

如果你感兴趣的话,下面是我运行后的完整输出sudo apt install displaylink-driver。请注意,它明确告诉我重新启动:

$ sudo apt install displaylink-driver 
[sudo] password for gabriel: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  evdi
The following NEW packages will be installed:
  displaylink-driver evdi
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 6,318 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 https://www.synaptics.com/sites/default/files/Ubuntu stable/main amd64 evdi amd64 1.14.1-7 [47.4 kB]
Get:2 https://www.synaptics.com/sites/default/files/Ubuntu stable/non-free amd64 displaylink-driver amd64 5.8.0-33 [6,271 kB]
Fetched 6,318 kB in 3s (1,981 kB/s)             
Selecting previously unselected package evdi.
(Reading database ... 499730 files and directories currently installed.)
Preparing to unpack .../evdi_1.14.1-7_amd64.deb ...
Unpacking evdi (1.14.1-7) ...
Selecting previously unselected package displaylink-driver.
Preparing to unpack .../displaylink-driver_5.8.0-33_amd64.deb ...
Unpacking displaylink-driver (5.8.0-33) ...
Setting up evdi (1.14.1-7) ...

Creating symlink /var/lib/dkms/evdi/1.14.1/source ->
                 /usr/src/evdi-1.14.1

DKMS: add completed.

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area...
make -j8 KERNELRELEASE=5.15.0-41-generic all INCLUDEDIR=/lib/modules/5.15.0-41-generic/build/include KVERSION=5.15.0-41-generic DKMS_BUILD=1.....
Signing module:
 - /var/lib/dkms/evdi/1.14.1/5.15.0-41-generic/x86_64/module/evdi.ko
Secure Boot not enabled on this system.
cleaning build area...

DKMS: build completed.

evdi.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/5.15.0-41-generic/updates/dkms/

depmod....

DKMS: install completed.


Reboot required
DisplayLink evdi module installed successfully.
Please reboot your computer to ensure the proper functioning of the software.


Setting up displaylink-driver (5.8.0-33) ...


Reboot required
DisplayLink driver installed successfully.
Please reboot your computer to ensure the proper functioning of the software.

其他参考

  1. 我的答案如下:适用于 Ubuntu 的 USB 转 HDMI 适配器- 我谈论的是结果使用我的90 美元,Club3D CSV-1477 USB 3.0 A 型转双显示端口 1.2 4K 60Hz 外置显卡适配器这里。
  2. ***** 较新的官方信息:如何在旧版 Ubuntu 上安装 DisplayLink 软件
  3. 旧官方信息:如何在 Ubuntu 20.04 上安装 DisplayLink 软件

相关内容