无法满足构建emacs24的依赖关系14.04

我想手动安装emacs24.4,并遵循14.04下广泛使用的教程,但是当我想安装所需的构建依赖项时:

sudo apt-get build-dep emacs24 Reading package lists... Done Building dependency tree Reading state information... Done The following packages have unmet dependencies: libgtk-3-dev : Depends: libwayland-dev (>= 1.2.0) but it is not going to be installed E: Build-dependencies for emacs24 could not be satisfied. 

我怎样才能解决这个问题,因为尝试手动安装依赖项会让我对不同的未满足的依赖项进行无休止的递归。

根据意见要求:

 apt-cache policy libwayland-dev libwayland-dev: Installed: (none) Candidate: 1.4.0-1ubuntu1 Version table: 1.4.0-1ubuntu1 0 500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages 

根据意见要求:

 sudo apt-mark showhold $> 

(emtpy输出)

我做了更多的挖掘,似乎libwayland-dev依赖于太旧的版本:

 The following packages have unmet dependencies: libwayland-dev : Depends: libwayland-client0 (= 1.4.0-1ubuntu1) but 1.7.0-0ubuntu1~trusty1 is to be installed Depends: libwayland-server0 (= 1.4.0-1ubuntu1) but 1.7.0-0ubuntu1~trusty1 is to be installed Depends: libwayland-cursor0 (= 1.4.0-1ubuntu1) but 1.7.0-0ubuntu1~trusty1 is to be installed 

当我尝试安装时(安装了所有更新):

 sudo apt-get install libwayland-client0 Reading package lists... Done Building dependency tree Reading state information... Done libwayland-client0 is already the newest version. dpkg -s libwayland-client0 Package: libwayland-client0 Status: install ok installed Priority: optional Section: libs Installed-Size: 95 Maintainer: Ubuntu Developers  Architecture: amd64 Multi-Arch: same Source: wayland Version: 1.7.0-0ubuntu1~trusty1 

依赖项的DOWNGRADENO OPTION,因为我(当然)依赖于较新的库,但是如果可以同时安装两个库版本,这可以解决问题,我会认为这是一个工作解。

可以从Trusty升级到Vivid。 但是,您使用LTS版本,因此,另一种可能性:

使用以下步骤更改依赖关系,但我无法保证它没有副作用。 另一方面,如果您不想降级其他软件包,则没有太多选择。

但它只是一个开发库,因此您的系统不会受到其他影响。

通过强制安装

 sudo dpkg -i --force-all libwayland-dev_1.4.0-1ubuntu1_amd64.deb 

在下一次sudo apt-get dist-upgradesudo apt-get upgrade你会sudo apt-get upgrade问题

 You might want to run 'apt-get -f install' to correct these. The following packages have unmet dependencies: libwayland-dev : Depends: libwayland-client0 (= 1.4.0-1ubuntu1) but 1.7.0-0ubuntu1 is installed Depends: libwayland-server0 (= 1.4.0-1ubuntu1) but 1.7.0-0ubuntu1 is installed Depends: libwayland-cursor0 (= 1.4.0-1ubuntu1) but 1.7.0-0ubuntu1 is installed E: Unmet dependencies. Try using -f. 

因此

  1. 下载deb文件libwayland-dev_1.4.0-1ubuntu1_amd64.deb

     cd; wget http://mirrors.kernel.org/ubuntu/pool/main/w/wayland/libwayland-dev_1.4.0-1ubuntu1_amd64.deb 
  2. 更改依赖项

     mkdir deb$$ cp libwayland-dev_1.4.0-1ubuntu1_amd64.deb deb$$ cd deb$$ dpkg-deb -x libwayland-dev_1.4.0-1ubuntu1_amd64.deb deb cd deb dpkg-deb -e ../libwayland-dev_1.4.0-1ubuntu1_amd64.deb perl -i -pe 's/= 1\.4\.0-1ubuntu1/>= 1.4.0-1ubuntu1/g' DEBIAN/control 
  3. 重新创建deb文件

     cd .. sudo dpkg-deb -b deb 
  4. 安装deb文件

     sudo dpkg -i deb.deb 

这是我的Vivid上的安装

 % apt-cache policy libwayland-client0 libwayland-client0: Installed: 1.7.0-0ubuntu1 Candidate: 1.7.0-0ubuntu1 Version table: *** 1.7.0-0ubuntu1 0 500 http://archive.ubuntu.com/ubuntu/ vivid/main amd64 Packages 100 /var/lib/dpkg/status 1.7.0-0ubuntu1~vivid1 0 500 http://ppa.launchpad.net/gnome3-team/gnome3-staging/ubuntu/ vivid/main amd64 Packages % apt-cache policy libwayland-dev libwayland-dev: Installed: 1.4.0-1ubuntu1 Candidate: 1.7.0-0ubuntu1 Version table: 1.7.0-0ubuntu1 0 500 http://archive.ubuntu.com/ubuntu/ vivid/main amd64 Packages 1.7.0-0ubuntu1~vivid1 0 500 http://ppa.launchpad.net/gnome3-team/gnome3-staging/ubuntu/ vivid/main amd64 Packages *** 1.4.0-1ubuntu1 0 100 /var/lib/dpkg/status