<div dir="ltr"><div><div>I concur, I didn't test the last step (actually do the rpm -i) ... sorry, I thought I had identified a way to indicate the issue with the "rpm -qlp --provides"<br></div>I'll attempt to come up with an actual reproducer.<br></div>As far as following the guidelines, I'm all for it, but the constraints are purely financial and I'm working with an existing code base that was never intended to be distributed via rpm. thanks for the pointer though.   <br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 31, 2016 at 2:57 AM, Lubos Kardos <span dir="ltr"><<a href="mailto:lkardos@redhat.com" target="_blank">lkardos@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I followed steps provided by you on fresh installation of CentOS 6.7 (Final)<br>
and I didn't encounter the problem described by you. I was able to install<br>
the package without problems and create provides and requires seem properly:<br>
<br>
# rpm -i mypackage-1.0-0.1.x86_64.rpm<br>
# echo $?<br>
0<br>
# rpm -q --provides -p mypackage-1.0-0.1.x86_64.rpm<br>
<span class="">libtestlib.so()(64bit)<br>
mypackage = 1.0-0.1<br>
mypackage(x86-64) = 1.0-0.1<br>
</span># rpm -q --requires -p mypackage-1.0-0.1.x86_64.rpm<br>
libc.so.6()(64bit)<br>
libc.so.6(GLIBC_2.2.5)(64bit)<br>
libgcc_s.so.1()(64bit)<br>
libm.so.6()(64bit)<br>
libstdc++.so.6()(64bit)<br>
libstdc++.so.6(CXXABI_1.3)(64bit)<br>
libtestlib.so()(64bit)<br>
rpmlib(CompressedFileNames) <= 3.0.4-1<br>
rpmlib(FileDigests) <= 4.6.0-1<br>
rpmlib(PayloadFilesHavePrefix) <= 4.0-1<br>
rtld(GNU_HASH)<br>
rpmlib(PayloadIsXz) <= 5.2-1<br>
<br>
I don't know why that doesn't work in your system. Maybe check if the shared<br>
object in your BUILDROOT directory really contains soname:<br>
# readelf -d rpmbuild/BUILDROOT/mypackage-1.0-0.1.x86_64/tmp/mypackage/lib/testlib.so | grep SONAME<br>
0x000000000000000e (SONAME)             Library soname: [libtestlib.so]<br>
<br>
BTW you should really follow rules for creating rpm packages e. g. your sources<br>
should be in SOURCES directory then you can create srpm and then you don't need<br>
to sent the whole rpmbuild directory. Some useful guidelines:<br>
<a href="https://fedoraproject.org/wiki/How_to_create_an_RPM_package" rel="noreferrer" target="_blank">https://fedoraproject.org/wiki/How_to_create_an_RPM_package</a><br>
<a href="https://fedoraproject.org/wiki/Packaging:Guidelines" rel="noreferrer" target="_blank">https://fedoraproject.org/wiki/Packaging:Guidelines</a><br>
<span class="HOEnZb"><font color="#888888"><br>
Lubos<br>
</font></span><span class="im HOEnZb"><br>
----- Original Message -----<br>
> From: "david kerns" <<a href="mailto:david.t.kerns@gmail.com">david.t.kerns@gmail.com</a>><br>
> To: "General discussion about the RPM package manager" <<a href="mailto:rpm-list@lists.rpm.org">rpm-list@lists.rpm.org</a>><br>
</span><span class="im HOEnZb">> Sent: Wednesday, March 30, 2016 5:32:55 PM<br>
> Subject: Re: error: Failed dependencies<br>
><br>
</span><div class="HOEnZb"><div class="h5">> here's a base64 of a tarball reproducer;<br>
><br>
> base64 -d - > rpmbuild.tgz;<br>
> tar tvf rpmbuild.tgz # (verfiy contents)<br>
> tar xf rpmbuild.tgz; cd rpmbuild; # (after you're happy with content)<br>
> ./doit<br>
> --------<br>
><br>
> H4sIAPLu+1YAA+1ZfWxbVxV/SRpa36ExTevoYEKnjb36sfjj2bEjuQtrmrhL2nx4jtPS0mGe37uO<br>
> n/K++t5zmqx1B0MVCxvSQHwMaf2HTRP8MW0STDANMalSxdqEom0gMvEHaIMhUFGn8SE1Q8C97/nb<br>
> TUKq2Ejg4zi+vu/e3z3v/M65vuc8Q1cyeUkWA0zzJEikPxIhn6FwPxe2P/tC/XZ/URguFO2nrxBH<br>
> xnFcuD/IQKSJOpUlb1q8AcCI1uy64xRJ5M1WKNRaMUr8H5geHRtujhdsgv9oOMoR/kOhcJv/lkgd<br>
> /+P8LM5KMt7SNSjB0b6+Nfnv7wuX+Q9GSD8XJk0GgluqxRryf85/ajIx4PYmjg6ziDeEHGmbOSzL<br>
> kFd5BYNPYRHiZTmGXPuxkNPAvR+MvIwR0g2sN/YqCzovzPIzmFwSRAhYir6PQD0s6eD2kqXYQHmE<br>
> n3Qil9s7Png4zoJvyB5cuQyCjHkVyNoISSrhSJbT1ejKrCgZ4NOhBOz3Oy6cnJxMBdxeqj7rc3vn<br>
> sGFKmkqbBiaQJmb9bi+91SpdkCsrqWK9Bmdghtwk+OagFBVVXaYhBMhXQZc0ooWYV25ejyqzpe27<br>
> brSrPzEyOXEsRs0B1PJQ0bLBOFCHhtblvy7+a+jZKh/bIP5D/X2Ryv4fIeO4vn5yuR3/LZDE4a5t<br>
> joc8MXh2pPoKYu5myu4QmE65mK6Vqx8c+TV55+dvYTq2Le1lmG0f3VuNIZ8q1GDcWoORkVQH55XV<br>
> 1SNXbx5HljL/IU7YXA+HxrCN88b7G+CcO1kYQUf3PXuctOl7VwOOhU2L6OUXBBvxe9dWjyz+Y7Ue<br>
> sUdSBTkvYrjPtERJ8+c+RXc3C7LeOU0SWXQaAYlv0pP17pFU8Jgn1D29kE4nkvFU6lj64PTEUGp0<br>
> ciKdZveRkQa28oYKwX2ogKiudxDNdjBLRNeXvzr5+lHyjbr0zgZdFV5SS4r637uholNXlg9fYcdH<br>
> p19k/aOXln+19OI7yYN3Xr401rl48iR+9xve392TfVf6/K7F+B8vxdCluxbj6Pjx/RPfvudo5FuP<br>
> do58cvyZ3vvD8Tc/9prvkI/1Xe76MrPw0okTTEVL6m3/OvM0+yPybaCDYW6v0bK04Za9bqWRnenE<br>
> 0q2PBm+7780XVrq27zx0bf6v31n8yNsX57ljh7rffuP2yxdf/eHvdz/81lh2Lht9fJhNnB/64kvZ<br>
> 5Z/fIe8998Di13u9z+y4sP29j198+pTv79O9q8/t/Nkr8esXki7tDz/lky/I90PXwvMXn/rTY5yV<br>
> fPXlE52PZL90/t6ndqj3Xk11/OW5ux5//vWV765w3//cV67pI70fvuXCL//2g88u9z557jdvdUq/<br>
> vfPs8iMPjn3twPkr/7z+/u6z7+S/KX6wdP0nP0ZPPlYgNujo/ETXWjG3q9i6jfnzIP2sjsBuxxYN<br>
> XlrBa4ybarzhGjwnGrudKLppzCdqMJ3I3BizMS6rMX9Rg+lEabcTpetgNsaog0mci3n2C3d31GNW<br>
> R2y3E7E3RF8rqqrRX2tAL8dYtxNj60A3hkI1tNrJ3DAw1nKG7g/RudvJ6yEy0+hi1pfa33/70LLB<br>
> jM3LZvL/YChE8z/797+d/zVfyvwnE+NTTSoCbYr/sJ3/c+RI2Oa/BVLmf2pyOjkUb4oLbIL/SDRM<br>
> 8/9QJMS1+W+FVPhPxIeatAFsiv9o1K7/Rdrx3xKp47+S/5s6FrZojQ3yfy7KRer4jxB/aef/rZAJ<br>
> XsExl6tSCvPMyFqGl0lyKYu8hSFE2EBHnOpVzMX5gyjp1K9irqCfQ1N5ReGNhZiLHqehBIIeMLS8<br>
> TnAHdV2WBN4ik81AXJ2RVIxJfjuDxiQBqxRkSNMXZJy16EJRdID6YlLTrJjL41VmLazo4MuL4Dmd<br>
> thRd561cIeA5TYtqBZ/ndLGoRpvFolrB92lbWIR6EoY2J4nYjAE55pdO+6bmZb3RvoxksdUjbnTZ<br>
> hTzkmmBIOlUfpXKSCeSPh9pb7YEk1mVewGAumERhICcpUHjB0MDUgGRZvCFhMs3AoGoWmBYB1LFI<br>
> wbPEHCS718x0qYqnawQaIJA3DTuZIuEZyBi6T9AU3cCmSZcb1tS9FpziyWJgSQoGIYeFWWJUyGoG<br>
> 5NWiZiLQRMGsWscel7Z7iUFVSS4g5KHlRKSQtMIpLFLTDhQtDEX7DlQsDUU7D1QsXvIUp4u2KKy9<br>
> qTi4lcrkVoEXreXANxZAh+NTqeHRJJlja2EQdyps2dpOTbX2xoqFVuSpWJy3LMPr66VrO/98LKqt<br>
> L5NhmkABc7w6g2VtBq1fqW2OVPb/5iUAN3H+CwdD7d//VkiZf1GTrCatsRH/oWi47vk/Of+1n/+1<br>
> RHp224XADG/mEJKy8Blw98AABOEhZOWwilz6QNVjsh77sdSevEkfwoE7CMR99tDueckCDmHZxHSG<br>
> m0NZCaEsT7ZD0UvL2va8g4OjY/FhVBxMNtMHB9PJxGBqZGogOE/8IAwlbwRfJgPOidSt20dROHMG<br>
> HLz/xi7Zlra0pS3/e/JvfMO/tQAoAAA=<br>
><br>
><br>
><br>
><br>
><br>
> On Wed, Mar 30, 2016 at 5:26 AM, Lubos Kardos < <a href="mailto:lkardos@redhat.com">lkardos@redhat.com</a> > wrote:<br>
><br>
><br>
><br>
> Hi,<br>
><br>
> rpm generates provides from sonames of ELF shared objects. If a shared object<br>
> doens't have any soname then the provide is created from name of file. rpm<br>
> generates provides only from ELF shared objects it doesn't generate provides<br>
> from symlinks to shared objects. Yes, it generates provides from hard links<br>
> to<br>
> shared ojbects because of obvious reason.<br>
><br>
> Difference between rpm-4.8.0 (rhel-6.7) and rpm-4.11.3 (rhel-7.2) is that the<br>
> newer rpm requires soname to start with prefix "lib" otherwise from this<br>
> soname<br>
> no provides is created. If a file doesn't have soname and a provide is<br>
> created<br>
> from name of the file then the file name must start with "lib" prefix too.<br>
><br>
> This doesn't explain completely what you observed and I tested this and I got<br>
> a bit different results but nevertheless you have to follow common practices<br>
> for creating shared libraries (as was already written here) and rename your<br>
> library to match expected format of name for shared library i. e. library<br>
> name should start with lib also you should link a library to some program<br>
> using name from a generated provide then rpm will create a matching require<br>
> and<br>
> dependency checking will work.<br>
><br>
> Lubos<br>
><br>
><br>
><br>
><br>
</div></div><div class="HOEnZb"><div class="h5">> From: "david kerns" < <a href="mailto:david.t.kerns@gmail.com">david.t.kerns@gmail.com</a> ><br>
> To: "General discussion about the RPM package manager" <<br>
> <a href="mailto:rpm-list@lists.rpm.org">rpm-list@lists.rpm.org</a> ><br>
> Sent: Wednesday, March 30, 2016 12:48:13 AM<br>
> Subject: Re: error: Failed dependencies<br>
><br>
><br>
><br>
> On Tue, Mar 29, 2016 at 2:58 PM, Tim Mooney < <a href="mailto:Tim.Mooney@ndsu.edu">Tim.Mooney@ndsu.edu</a> > wrote:<br>
><br>
><br>
> In regard to: error: Failed dependencies, david kerns said (at 2:44pm on...:<br>
><br>
><br>
><br>
> Just joined the mail-list and found an (unresolved) existing thread with my<br>
> exact issue. I'm hoping this get's linked to the existing thread... (last<br>
> response Tue, Sep 1, 2015)<br>
><br>
> # rpm -i mypackage.x86_64.rpm<br>
> error: Failed dependencies:<br>
> libtestlib.so()(64bit) is needed by mypackage.x86_64.rpm<br>
><br>
> # rpm -qlp --provides mypackage.x86_64.rpm<br>
> testlib.so()(64bit)<br>
> /opt/mypackage/lib/testlib.so<br>
> /opt/mypackage/lib/libtestlib.so<br>
><br>
> This is just a guess, but it looks like the shared library you're creating<br>
> either doesn't have a SONAME or the SONAME doesn't match the actual file<br>
> name.<br>
><br>
> You should probably read up on best practices for creating a shared<br>
> library on your platform (Linux, I presume, though you don't provide<br>
> any details about your OS, distribution, version, or RPM version, all of<br>
> which would be useful to include).<br>
><br>
> ah yes, sorry:<br>
> CentOS release 6.7 (Final)<br>
> RPM version 4.8.0<br>
><br>
> This may end the conversation ... (but if there's a fix available on CentOS<br>
> 6.7, ... we'll be there for a while)<br>
> I just tried the exact thing on:<br>
><br>
> CentOS Linux release 7.2.1511 (Core)<br>
> RPM version 4.11.3<br>
><br>
> and the rpm works without issue. Ugh!<br>
><br>
><br>
><br>
><br>
><br>
><br>
> Note: libtestlib.so is a symbolic link to testlib.so<br>
><br>
> If I make a hard link instead of a symbolic link (during the build<br>
> process), the rpm install works fine<br>
><br>
> That seems to confirm that it's an issue with the SONAME. Read up<br>
> on shared libraries on Linux and the SONAME.<br>
><br>
> thanks ...<br>
> I tried adding (one at a time) both SONAME libtestlib.so and testlib.so ...<br>
> both fail with the listed SONAME<br>
><br>
> $ objdump -p<br>
> BUILDROOT/mypackage-1.0-0.1.x86_64/tmp/mypackage/lib/libtestlib.so | grep<br>
> SONAME<br>
> SONAME testlib.so<br>
> $ rpm -qlp --provides RPMS/x86_64/mypackage-1.0-0.1.x86_64.rpm<br>
> testlib.so()(64bit)<br>
> mypackage = 1.0-0.1<br>
> mypackage(x86-64) = 1.0-0.1<br>
> /tmp/mypackage<br>
> /tmp/mypackage/bin<br>
> /tmp/mypackage/bin/main<br>
> /tmp/mypackage/lib<br>
> /tmp/mypackage/lib/libtestlib.so<br>
> /tmp/mypackage/lib/testlib.so<br>
> /tmp/mypackage/src<br>
><br>
><br>
> $ objdump -p<br>
> BUILDROOT/mypackage-1.0-0.1.x86_64/tmp/mypackage/lib/libtestlib.so | grep<br>
> SONAME<br>
> SONAME libtestlib.so<br>
> $ rpm -qlp --provides RPMS/x86_64/mypackage-1.0-0.1.x86_64.rpm<br>
> libtestlib.so()(64bit)<br>
> mypackage = 1.0-0.1<br>
> mypackage(x86-64) = 1.0-0.1<br>
> /tmp/mypackage<br>
> /tmp/mypackage/bin<br>
> /tmp/mypackage/bin/main<br>
> /tmp/mypackage/lib<br>
> /tmp/mypackage/lib/libtestlib.so<br>
> /tmp/mypackage/lib/testlib.so<br>
> /tmp/mypackage/src<br>
><br>
><br>
><br>
><br>
> PS: if this is a package you will eventually distribute to customers,<br>
> it's even more important that you follow more of the Linux conventions<br>
> for shared libraries.<br>
><br>
> Tim<br>
> --<br>
> Tim Mooney <a href="mailto:Tim.Mooney@ndsu.edu">Tim.Mooney@ndsu.edu</a><br>
> Enterprise Computing & Infrastructure <a href="tel:701-231-1076" value="+17012311076">701-231-1076</a> (Voice)<br>
> Room 242-J6, Quentin Burdick Building <a href="tel:701-231-8541" value="+17012318541">701-231-8541</a> (Fax)<br>
> North Dakota State University, Fargo, ND 58105-5164<br>
><br>
><br>
> Per Jay Hendron's suggestion:<br>
> Maybe a silly suggestion, but could you add a "Provides:<br>
> libtestlib.so()(64bit)" tag to your spec file and rebuild?<br>
><br>
> Which ever (or both) one I list as for "Provides:" adds another depends in<br>
> the "rpm -qlp" output.<br>
> So, it does seem like a bug, but already fixed by 4.11.3<br>
><br>
><br>
><br>
><br>
><br>
> _______________________________________________<br>
> Rpm-list mailing list<br>
> <a href="mailto:Rpm-list@lists.rpm.org">Rpm-list@lists.rpm.org</a><br>
> <a href="http://lists.rpm.org/mailman/listinfo/rpm-list" rel="noreferrer" target="_blank">http://lists.rpm.org/mailman/listinfo/rpm-list</a><br>
><br>
><br>
> _______________________________________________<br>
> Rpm-list mailing list<br>
> <a href="mailto:Rpm-list@lists.rpm.org">Rpm-list@lists.rpm.org</a><br>
> <a href="http://lists.rpm.org/mailman/listinfo/rpm-list" rel="noreferrer" target="_blank">http://lists.rpm.org/mailman/listinfo/rpm-list</a><br>
><br>
><br>
> _______________________________________________<br>
> Rpm-list mailing list<br>
> <a href="mailto:Rpm-list@lists.rpm.org">Rpm-list@lists.rpm.org</a><br>
> <a href="http://lists.rpm.org/mailman/listinfo/rpm-list" rel="noreferrer" target="_blank">http://lists.rpm.org/mailman/listinfo/rpm-list</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> Rpm-list mailing list<br>
> <a href="mailto:Rpm-list@lists.rpm.org">Rpm-list@lists.rpm.org</a><br>
> <a href="http://lists.rpm.org/mailman/listinfo/rpm-list" rel="noreferrer" target="_blank">http://lists.rpm.org/mailman/listinfo/rpm-list</a><br>
><br>
_______________________________________________<br>
Rpm-list mailing list<br>
<a href="mailto:Rpm-list@lists.rpm.org">Rpm-list@lists.rpm.org</a><br>
<a href="http://lists.rpm.org/mailman/listinfo/rpm-list" rel="noreferrer" target="_blank">http://lists.rpm.org/mailman/listinfo/rpm-list</a><br>
</div></div></blockquote></div><br></div>