如何从源代码编译和使用liboverlay-scrollbar?

我正在尝试安装和使用一个符合我的个人偏好的修补版本的liboverlay-scrollbar。我已经成功下载了lp:ayatana-scrollbar,并且执行了./autogen.sh; make; sudo make install。
问题在于,查看ldd /usr/bin/*的结果,似乎没有任何应用程序实际上使用liboverlay-scrollbar*.so。即使我使用类似以下的命令:
export LD_LIBRARY_PATH="/usr/local/lib/:/usr/lib/"
export LIBOVERLAY_SCROLLBAR=1
gedit

我调用的滚动条应用似乎毫不在意我的/usr/local/lib库,并使用系统安装的ayatana滚动条。我的GTK+库是标准的Ubuntu版本,所以我假设我不需要修补和重新编译图形工具包。
有人可以发布一份从源代码安装覆盖滚动条的逐步过程吗?
2个回答

我不太确定,因为我对C语言不是很熟悉,但似乎Ubuntu使用的修补过的GTK已经硬编码为仅在/usr/lib/中查找滚动条。 从补丁中可以看出
+  gchar *flag = (gchar*) g_getenv ("LIBOVERLAY_SCROLLBAR");    
+   
+  /* check if LIBOVERLAY_SCROLLBAR is set to 0 or an empty value   
+     and disable the feature in this case */   
+  if (flag != NULL && (*flag == '\0' || *flag == '0')) 
+    return;    
+   
+  /* default extension library to use for this release */  
+  gchar *path = "/usr/lib/liboverlay-scrollbar-0.2.so.0";  
+   
+  module = g_module_open (path, G_MODULE_BIND_LOCAL);  
+  if (module == NULL)  
+    return;

如果我是你,我会将我的补丁应用到liboverlay-scrollbar的源代码包中。
使用bzr获取源代码:bzr branch lp:ubuntu/overlay-scrollbar 对源代码进行补丁,编辑debian/changelog(你可以在现有版本字符串中添加+myversion1,或者添加一个全新的changelog条目。关键是确保你的版本号比存档中的软件包更高)。然后运行bzr builddeb来构建Debian软件包。

1非常好,谢谢!我很愿意给你奖励,但在接受之前,你介意我编辑你的帖子建议将/usr/lib/liboverlayscrollbar*.so.0符号链接重定向吗?在我看来,这是一种更不具侵入性的方法。另外,可以将此转化为“逐步指南”,而不仅仅解决我的特定障碍吗? - Jjed
你好,我已经授予你解决我的特定问题的赏金,但是我接受了Vadim Rutkovsky回答完整的问题。非常感谢。 - Jjed

你可以在http://developer.ubuntu.com/packaging/html/fixing-a-bug.html查看一个简单的教程。
这是一个简单的教程:
获取Ubuntu的覆盖滚动条: bzr分支ubuntu:overlay-scrollbar overlay-scrollbar.dev cd overlay-scrollbar.dev
进行一些修改
编译和安装: ./autogen.sh make sudo make install
修改符号链接: sudo ln -f -s /usr/lib/liboverlay-scrollbar-0.2.so.0 /usr/local/lib/liboverlay-scrollbar-0.2.so.0
(可选)记录修复并构建软件包: dch-i bzr builddeb

请注意,步骤3-4可以跳过,因为bzr builddeb将创建一个正确的软件包,应该安装。 - Vadim Rutkovsky