为什么我不能在Ubuntu 12.04中编译Drwright

时间:2013-01-16 22:13:47

标签: compilation package ubuntu-12.04 configure

Drwright不包含在主要的Ubuntu发行版中,但可以通过PPA获得。 通过这种方式安装步骤:

   sudo add-apt-repository ppa:drwright/stable 
   sudo apt-get update
   sudo apt-get install drwright

安装成功完成。

但我想纠正这个程序的源代码。我用    apt-get source drwright 下载它。首先,我尝试编译源代码而不做任何更改:

   ./configure

但是配置没有执行:

configure: error: Package requirements (
  glib-2.0 >= 2.31.13
  gio-2.0 >= 2.31.13
  gdk-pixbuf-2.0 >= 2.25.3
  gtk+-3.0 >= 3.0.0
  libcanberra-gtk3 >= 0
  libnotify >= 0.7
  x11) were not met:

No package 'glib-2.0' found
No package 'gio-2.0' found
No package 'gdk-pixbuf-2.0' found
No package 'gtk+-3.0' found
No package 'libcanberra-gtk3' found
No package 'libnotify' found
No package 'x11' found

为什么Drwring从PPA安装并成功运行,但我无法从源代码编译它?

2 个答案:

答案 0 :(得分:7)

标题文件

要从源代码构建程序,您不仅需要为其使用的库编译二进制文件。您还需要他们的header files

在Debian,Ubuntu和其他基于Debian的操作系统中,头文件由名称以-dev结尾的包提供。通常是附加了-dev的二进制包名称,或者删除了某些版本号并附加了-dev的二进制包名称。

-dev包(用于编译)不应与-dbg packages混淆(用于调试)。这里有一些information about how and why这些包。

pkg-config包与您的包管理器包

当您从源代码构建并且./configure告诉您缺少包时,通常不会检查包管理器以查看安装的内容,并且缺少的包的名称通常不是确切的名称。您需要使用软件包管理器安装的软件包。 (pkg-config./configure脚本计算依赖关系的常用方法 - 有关详细信息,请参阅this articlethe manpagethe project page。)

确定使用软件包管理器安装哪些软件包

要了解您需要安装的软件包,您可以查看以相同方式启动的软件包...或以lib开头,后跟“软件包”名称的软件包“由./configure吐出来。以lib开头的包更常见(在Debian和基于Debian的系统上),因为大多数库包以这种方式命名。

您可以search for packages online(其他发行版通常也会提供此内容,here's Debian's)。或者您可以使用bash completion来查找它们。由于这会使用您系统上本地存储的信息来了解哪些软件包可用于哪些版本,因此您应首先更新该信息:

sudo apt-get update

然后输入一个可以安装包的命令,只需要名称的开头 - 无论你认为多少都知道。例如,对于glib-2.0

ek@Del:~$ apt-get install libglib2
libglib2.0-0                libglib2.0-cil-dev
libglib2.0-0-dbg            libglib2.0-data
libglib2.0-0-dbgsym         libglib2.0-dev
libglib2.0-0-refdbg         libglib2.0-dev-dbgsym
libglib2.0-0-refdbg-dbgsym  libglib2.0-doc
libglib2.0-bin              libglib2-ruby
libglib2.0-bin-dbgsym       libglib2-ruby1.8
libglib2.0-cil              libglib2-ruby1.8-dbg
libglib2.0-cil-dbgsym

在那里,我没有运行我输入的命令。 (如果有的话,它不会成功,因为没有名为libglib2的包,并且因为除非以root身份运行,否则apt-get install将不会成功。)

相反,我在行的末尾按了几次 Tab ,我得到了一个建议列表。

根据这些建议,正确的建议是libglib2.0-dev

如果你还不确定

有时你不一定知道哪一个是对的;然后你可以使用apt-cache show ...找出答案。例如,假设我想知道我是否需要libglib2.0-cil-dev

ek@Del:~$ apt-cache show libglib2.0-cil-dev 
Package: libglib2.0-cil-dev
Priority: optional
Section: libs
Installed-Size: 174
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian CLI Libraries Team <pkg-cli-libs-team@lists.alioth.debian.org>
Architecture: i386
Source: gtk-sharp2
Version: 2.12.10-2ubuntu4
Replaces: libglib2.0-cil (<< 2.12.9-2)
Depends: libglib2.0-cil (= 2.12.10-2ubuntu4)
Filename: pool/main/g/gtk-sharp2/libglib2.0-cil-dev_2.12.10-2ubuntu4_i386.deb
Size: 2408
MD5sum: 50fa0825eb4d73593bdc8419c5fc9737
SHA1: f9659e85410505f7463a7117ebb92c70af6ad3aa
SHA256: 8f9d39465f2a1d5b4cc7832660ea53bacc681811ab2c80b57cad1655d4055b01
Description-en: CLI binding for the GLib utility library 2.12
 This package provides the glib-sharp assembly that allows CLI (.NET) programs
 to use the GLib utility library 2.12. This is mostly useful for the GTK+ and
 GNOME bindings.
 .
 GTK# 2.10 is a CLI (.NET) language binding for the GTK+ 2.10 toolkit
 .
 This package contains development files for the glib-sharp library, and should
 be used for compilation
Homepage: http://www.mono-project.com/GtkSharp
Description-md5: e7432bd7eb91c1c711c14150f81a3556
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 18m

如果需要,可以将不完整包名称上的命令行完成用作apt-cache show的参数,而不是apt-get install。任何带有包名称的命令(无论是否安装包)都适用于此目的。

您需要的特定包裹

根据显示的消息,您需要的-dev个包可能是

您可以在软件中心安装这些软件,但我建议使用命令行,因为它更容易安装多个软件包:

sudo apt-get update && sudo apt-get install libglib2.0-dev libgdk-pixbuf2.0-dev libgtk-3-dev libcanberra-gtk3-dev libnotify-dev libx11-dev

答案 1 :(得分:-1)

以root身份在shell中尝试命令

$ apt-get install glib-2.0 gio-2.0 gdk-pixbuf-2.0 gtk + -3.0 libcanberra-gtk3 libnotify x11 -f -y