3

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 安装并成功运行,但我无法从源代码编译它?

4

2 回答 2

7

头文件

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

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

-dev包(用于编译)不应与-dbg(用于调试)混淆。以下是有关如何以及为何制作这些软件包的一些信息。

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

当您从源代码构建并./configure告诉您缺少包时,通常它不会检查包管理器以查看已安装的内容,并且缺少包的名称通常不是您需要与包一起安装的包的确切名称经理。(pkg-config./configure脚本计算依赖项的常用方法——请参阅本文手册页项目页面了解更多信息。)

使用包管理器确定要安装的包

要找出您确实需要安装哪些软件包,您可以查看以相同开头的软件包......或者lib./configure. 以 开头的包lib更常见(在 Debian 和基于 Debian 的系统上),因为大多数库包都是这样命名的。

您可以在线搜索软件包(其他发行版通常也提供此功能,这里是 Debian 的)。或者您可以使用bash 补全来找到它们。由于这使用了系统上本地存储的有关哪些软件包在哪些版本中可用的信息,因此您应该首先更新该信息:

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,也因为apt-get install除非以 root 身份运行,否则不会成功。)

相反,我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
于 2013-01-24T04:58:27.867 回答
-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

于 2013-01-16T22:23:00.420 回答