无法在 Ubuntu 16.04 上安装 libudev-dev

无法在 Ubuntu 16.04 上安装 libudev-dev

我似乎找不到安装 libudev-dev 包的解决方案。它输出此错误

以下软件包具有未满足的依赖关系:libudev-dev:依赖:libudev1(= 229-4ubuntu4)但需要安装 229-4ubuntu5

所以我尝试了 sudo apt-get install libudev1

libudev1已经是最新版本(229-4ubuntu5)。

您可能已经注意到,我的机器上安装了它的最新版本。即 229-4ubuntu5,我也尝试了这里建议的内容。 https://stackoverflow.com/questions/17181073/ubuntu-12-04-libudev-dev-wont-install-because-of-dependencies

sudo apt-cache madison libudev-dev

sudo apt-cache madison libudev1

sudo apt-get install libudev-dev

但我仍然遇到同样的错误。有人能帮我解决这个问题吗?

答案1

我的猜测是该档案的控制文件中存在一个简单的混淆,您应该将其报告为一个错误。

然而,真正的解决方法可能是这种非常肮脏的黑客手段,它也会破坏一切!

从以下位置下载软件包这里然后打开终端并切换到您的Downloads文件夹。

使用以下命令解压.deb档案:

dpkg-deb -R libudev-dev_229-4ubuntu4_amd64.deb tmp

然后更改文件内的一行tmp/DEBIAN/control

sed -i 's/229-4ubuntu4/229-4ubuntu5/' tmp/DEBIAN/control

之后重新打包.deb文件(我在这里选择给它一个不同的名字)

dpkg-deb -b tmp libudev-dev_229-fixbuntu_amd64.deb

现在,在确保已安装所有依赖项后,您就可以安装它了:

dpkg -i libudev-dev_229-fixbuntu_amd64.deb

笔记:此修复可能有效,但如果维护人员没有正确考虑变更,它也可能造成破坏。因此,请理解,您自行承担此风险。

答案2

尝试降级 libudev1:

apt-get install libudev1=<version>

...到 libudev-dev 所需的版本。

然后,它会删除很多必须手动重新安装的必需软件包。例如,

sudo apt-get install libudev1=229-4ubuntu13
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:

The following packages will be REMOVED:
  alsa-base apparmor apparmor-easyprof-ubuntu bluez brltty checkbox-converged checkbox-gui click-apparmor console-setup console-setup-linux gdm3 gnome-bluetooth gnome-session gnome-session-bin
  gnome-session-wayland gnome-shell gnome-shell-extensions gnome-user-share gvfs gvfs-backends gvfs-daemons gvfs-fuse indicator-power indicator-sound initramfs-tools initramfs-tools-core kbd libcanberra-pulse
  lightdm linux-image-4.4.0-72-generic linux-image-extra-4.4.0-72-generic lvm2 media-player-info mountall nautilus network-manager network-manager-gnome plainbox-provider-checkbox
  plainbox-provider-resource-generic plymouth plymouth-label plymouth-theme-ubuntu-logo plymouth-theme-ubuntu-text pulseaudio pulseaudio-module-bluetooth pulseaudio-module-x11 python3-apparmor-click
  python3-checkbox-support rhythmbox rhythmbox-plugin-zeitgeist rhythmbox-plugins snapd software-properties-gtk ubuntu-drivers-common ubuntu-minimal udev udisks2 unity-greeter upower upstart usb-creator-common
  usb-creator-gtk xorg xserver-xorg xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-synaptics xserver-xorg-input-vmmouse xserver-xorg-input-wacom xserver-xorg-video-all
  xserver-xorg-video-amdgpu xserver-xorg-video-ati xserver-xorg-video-fbdev xserver-xorg-video-intel xserver-xorg-video-nouveau xserver-xorg-video-qxl xserver-xorg-video-radeon xserver-xorg-video-vesa
  xserver-xorg-video-vmware
The following packages will be DOWNGRADED:
  libudev1
0 upgraded, 0 newly installed, 1 downgraded, 80 to remove and 0 not upgraded.



for i in $(echo 'all removed packages above'); do apt-get install $i;done

最后,您可以安装您想要的 libudev-dev。

答案3

正如@doug 在评论中所说:

您的源未更新并且可能未启用 xenial-updates repo。GUI ::打开软件和更新 > 更新选项卡 >确保前两个已启用。(安全及推荐更新)然后重新加载你的来源 或者
命令行::sudo apt 更新。两个软件包的当前版本都是 229-4ubuntu21.2。

在 CLI 视图中:: 在 /etc/apt/sources.list 中将取消注释或添加什么?以下内容? deb http://security.ubuntu.com/ubuntu/ xenial-security multiverse main universe restricted

相关内容