<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post/9218/</link>
<title><![CDATA[[实践OK] rpmbuild打包错误：*** ERROR: No build ID note found in ******,以及Httpsqs是否真的支持Libevent1.4.13？]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Thu, 22 Jun 2017 16:10:34 +0000</pubDate> 
<guid>http://jackxiang.com/post/9218/</guid> 
<description>
<![CDATA[ 
	背景：在打RPMBUILD一个张宴兄弟的httpsqs结合Libevent1.4.13的包的时候，出现错误，本来他写的是Libevent2.0，顾问在微信问了张宴兄弟下他本人说1.4.13也是也没有啥问题的，就要问了：为何要降级，因为Memcached也需要这个Libevent的低版本的，没办法，Httpsqs所以来的Libevnet也跟着降吧。出现问题：ERROR: No build ID note found in<br/><br/>*** ERROR: No build ID note found in /root/rpmbuild/BUILDROOT/usr/local/filebeat/scripts/import_dashboards<br/>error: Bad exit status from /root/rpmbuild/tmp/rpm-tmp.Mi6g8i (%install)<br/><br/> BuildRequires: gcc,gcc-c++,make,tokyocabinet = 1.4.48,libevent &gt;= 1.4.13<br/> Requires: tokyocabinet = 1.4.48,libevent &gt;= 1.4.13<br/><br/><br/><br/>还不够，得加这一行，因为不加会提示：<br/>AutoReqProv:&nbsp;&nbsp; no<br/>Rpmbuild自己会自动依赖一些so动态链接库的东西，给关掉：<br/><br/>rpm -ihv /home/test/rpmbuild/RPMS/x86_64/httpsqs-1.7-170522172954.el6.x86_64.rpm<br/>error: Failed dependencies:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libevent-2.0.so.5()(64bit) is needed by httpsqs-1.7-170522172954.el6.x86_64<br/><br/><br/>问题依旧：<br/>service httpsqs start<br/>Starting httpsqs: /usr/local/httpsqs/httpsqs: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [FAILED]<br/><br/>反查一个源码，如下：<br/>tar -zxvf httpsqs-1.7.tar.gz <br/>httpsqs-1.7/<br/>httpsqs-1.7/httpsqs.c<br/>httpsqs-1.7/prename.h<br/>httpsqs-1.7/prename.c<br/>httpsqs-1.7/Makefile<br/>httpsqs-1.7/.Makefile.swp<br/>httpsqs-1.7/httpsqs&nbsp;&nbsp; （这个文件应该是一个二进制文件，去了编译不过去，报错）<br/><br/>gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/local/libevent/lib/:/usr/local/tokyocabinet/lib/ -L/usr/local/libevent/lib/ -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/local/libevent/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g<br/>httpsqs.c: In function &#039;httpsqs_handler&#039;:<br/>httpsqs.c:350: error: &#039;struct evhttp_request&#039; has no member named &#039;uri_elems&#039;<br/>make: *** [httpsqs] Error 1<br/>error: Bad exit status from /home/test/rpmbuild/tmp/rpm-tmp.OyM3VG (%build)<br/>果然：<br/>grep -r &quot;libevent-2.0&quot; ./ <br/>Binary file ./httpsqs matches<br/><br/>[root@&nbsp;&nbsp;httpsqs]# stat httpsqs <br/>&nbsp;&nbsp;File: `httpsqs&#039;<br/>&nbsp;&nbsp;Size: 20184&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks: 40&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IO Block: 4096&nbsp;&nbsp; regular file<br/>Device: fc01h/64513d&nbsp;&nbsp;&nbsp;&nbsp;Inode: 1066707&nbsp;&nbsp;&nbsp;&nbsp; Links: 1<br/>Access: (4755/-rwsr-xr-x)&nbsp;&nbsp;Uid: (&nbsp;&nbsp;&nbsp;&nbsp;0/&nbsp;&nbsp;&nbsp;&nbsp;root)&nbsp;&nbsp; Gid: (&nbsp;&nbsp;&nbsp;&nbsp;0/&nbsp;&nbsp;&nbsp;&nbsp;root)<br/>Access: 2017-05-22 17:58:26.000000000 +0800<br/>Modify: 2017-05-22 17:58:26.000000000 +0800<br/>Change: 2017-05-22 17:58:50.635000020 +0800<br/>[root@&nbsp;&nbsp;httpsqs]# ldd httpsqs <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;linux-vdso.so.1 =&gt;&nbsp;&nbsp;(0x00007ffd27464000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libevent-2.0.so.5 =&gt; not found<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libtokyocabinet.so.9 =&gt; /usr/local/tokyocabinet/lib/libtokyocabinet.so.9 (0x00007fed13df0000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libz.so.1 =&gt; /lib64/libz.so.1 (0x0000003cf6c00000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libbz2.so.1 =&gt; /lib64/libbz2.so.1 (0x0000003cfc000000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;librt.so.1 =&gt; /lib64/librt.so.1 (0x0000003cf7c00000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libpthread.so.0 =&gt; /lib64/libpthread.so.0 (0x0000003cf7400000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libm.so.6 =&gt; /lib64/libm.so.6 (0x0000003cf8000000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;libc.so.6 =&gt; /lib64/libc.so.6 (0x0000003cf7000000)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/lib64/ld-linux-x86-64.so.2 (0x0000003cf6800000)<br/>但是编译是从这儿编译的：<br/>rpm -qa&#124;grep libevent<br/>libevent-devel-1.4.13-4.el6.x86_64<br/>libevent-1.4.13-4.el6.x86_64<br/>libevent-doc-1.4.13-4.el6.noarch<br/>libevent-headers-1.4.13-4.el6.noarch<br/>难怪了，原来写二进制里面了：^@^@^@^@^@^@^@^@libevent-2.0.so.5^@__gmon_start__^@_Jv_RegisterClass<br/>稍微深入到源码看一下：<br/><br/>rpm2cpio libevent-2.0.22-170116172306.el6.x86_64.rpm &#124;cpio -div<br/>/usr/local/libevent/include/event2/http_struct.h<br/><br/>httpsqs.c:350: error: ‘struct evhttp_request’ has no member named ‘uri_elems’<br/><br/>struct evhttp_request&#123;#57行到123行都是这个结构体的，而这个uri_elems定义在在98行。<br/>&nbsp;&nbsp;struct evhttp_uri *uri_elems;&nbsp;&nbsp; /* uri elements */<br/>&#125;<br/><br/>张宴兄弟的源码里文件之httpsqs.c:350行：<br/>350&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; httpsqs_query_part = evhttp_uri_get_query(req-&gt;uri_elems);<br/><br/>而旧的版本没有这个http_struct.h文件及结构体，如下：<br/>rpm -ql libevent-headers-1.4.13-4.el6.noarch<br/>/usr/include/evdns.h<br/>/usr/include/event-config.h<br/>/usr/include/event.h<br/>/usr/include/evhttp.h<br/>/usr/include/evrpc.h<br/>/usr/include/evutil.h<br/><br/>所以，张宴兄弟的说法不成立。<br/><br/><br/>还不放心，看一下源码包，不看RPM包，有可能RPM包没有打进来？<br/>http://pkgs.fedoraproject.org/repo/pkgs/libevent/libevent-1.4.13-stable.tar.gz/<br/>DownLoad：http://pkgs.fedoraproject.org/repo/pkgs/libevent/libevent-1.4.13-stable.tar.gz/0b3ea18c634072d12b3c1ee734263664/libevent-1.4.13-stable.tar.gz<br/>解压后，再用Editplus查找：uri_elems，并没有找到这个结构体变量，如下：<br/>-- 在文件中查找: uri_elems in E:&#92;download&#92;libevent-1.4.13-stable excl *.* --<br/>找到 0 个事件 (在 0 个文件中)。<br/>输出完成 (耗时 0 秒)<br/><br/>Ｓｏ，张宴兄弟长时间没有看这块代码，应该是记错了！！！<br/><br/><br/><br/>在Fedora14中打rpm包，是没有/usr/src/redhat这个目录的，而是要建立~/rpmbuild目录，并建立SOURCES、SPECS、RPMS等相应目录。其它步骤相同。<br/>但是在rpmbuild -ba时，遇到如下错误：<br/>*** ERROR: No build ID note found in /home/wuyang/rpmbuild/BUILDROOT/******<br/>error: Bad exit status from /var/tmp/rpm-tmp.BPd1OI (%install)<br/><br/><br/>gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/local/libevent/lib/:/usr/local/tokyocabinet/lib/ -L/usr/local/libevent/lib/ -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/local/libevent/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g<br/>修改为：<br/>gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/lib64:/usr/local/tokyocabinet/lib/ -L/usr/lib64 -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g<br/>[root@yum_rpmbuild-centos6_bj_sjs_10_71_183_1** httpsqs-1.7]# gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/lib64:/usr/local/tokyocabinet/lib/ -L/usr/lib64 -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g<br/>httpsqs.c: In function ‘httpsqs_handler’:<br/>httpsqs.c:350: error: ‘struct evhttp_request’ has no member named ‘uri_elems’<br/><br/>rpm -ql libevent-1.4.13-4.el6.x86_64<br/>/usr/lib64/libevent-1.4.so.2<br/>/usr/lib64/libevent-1.4.so.2.1.3<br/>/usr/lib64/libevent_core-1.4.so.2<br/>/usr/lib64/libevent_core-1.4.so.2.1.3<br/>/usr/lib64/libevent_extra-1.4.so.2<br/>/usr/lib64/libevent_extra-1.4.so.2.1.3<br/>/usr/share/doc/libevent-1.4.13<br/>/usr/share/doc/libevent-1.4.13/README<br/>rpm -ql libevent-devel-1.4.13-4.el6.x86_64<br/>/usr/bin/event_rpcgen.py<br/>/usr/lib64/libevent.a<br/>/usr/lib64/libevent.so<br/>/usr/lib64/libevent_core.a<br/>/usr/lib64/libevent_core.so<br/>/usr/lib64/libevent_extra.a<br/>/usr/lib64/libevent_extra.so<br/>/usr/share/man/man3/evdns.3.gz<br/>/usr/share/man/man3/event.3.gz<br/> rpm -ql libevent-headers-1.4.13-4.el6.noarch<br/>/usr/include/evdns.h<br/>/usr/include/event-config.h<br/>/usr/include/event.h<br/>/usr/include/evhttp.h<br/>/usr/include/evrpc.h<br/>/usr/include/evutil.h<br/><br/><br/><br/><br/>解决方法是在.spec文件中任意位置添加如下参数：<br/>%define __debug_install_post&nbsp;&nbsp; &#92;<br/>&nbsp;&nbsp; %&#123;_rpmconfigdir&#125;/find-debuginfo.sh %&#123;?_find_debuginfo_opts&#125; &quot;%&#123;_builddir&#125;/%&#123;?buildsubdir&#125;&quot;&#92;<br/>%&#123;nil&#125;<br/><br/>重新打包，即可。<br/>另外最后生成的rpm包是在/RPMS/i686中<br/><br/>来自：http://blog.csdn.net/onlyou930/article/details/6995645
]]>
</description>
</item><item>
<link>http://jackxiang.com/post/9218/#blogcomment64000</link>
<title><![CDATA[[评论] [实践OK] rpmbuild打包错误：*** ERROR: No build ID note found in ******,以及Httpsqs是否真的支持Libevent1.4.13？]]></title> 
<author>1 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 04 Mar 2024 10:45:48 +0000</pubDate> 
<guid>http://jackxiang.com/post/9218/#blogcomment64000</guid> 
<description>
<![CDATA[ 
	/usr/lib/rpm/find-debuginfo.sh: line 459: /usr/lib/rpm/debugedit: No such file or directory错误：/var/tmp/rpm-tmp.2QVP8w (%install) 退出状态不好
]]>
</description>
</item>
</channel>
</rss>