Bug 229297

Summary: libnet seems to contain files that belong in libnet-devel
Product: [Fedora] Fedora Reporter: Dave Jones <davej>
Component: libnetAssignee: Patrice Dumas <pertusus>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: 6CC: pfrields
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 1.0.2a-12 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-03-20 22:01:32 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 213321    

Description Dave Jones 2007-02-20 00:20:13 UTC
$ sudo yum install libnet libnet-devel
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for libnet-devel to pack into transaction set.
libnet-devel-1.1.2.1-9.fc 100% |=========================|  15 kB    00:00     
---> Package libnet-devel.i386 0:1.1.2.1-9.fc6 set to be updated
---> Downloading header for libnet10 to pack into transaction set.
libnet10-1.0.2a-11.fc6.i3 100% |=========================| 5.8 kB    00:00     
---> Package libnet10.i386 0:1.0.2a-11.fc6 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size 
=============================================================================
Installing:
 libnet-devel            i386       1.1.2.1-9.fc6    extras            274 k
 libnet10                i386       1.0.2a-11.fc6    extras             50 k

Transaction Summary
=============================================================================
Install      2 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 324 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): libnet-devel-1.1.2 100% |=========================| 274 kB    00:00     
(2/2): libnet10-1.0.2a-11 100% |=========================|  50 kB    00:00     
Running Transaction Test
Finished Transaction Test


Transaction Check Error:   file /usr/bin/libnet-config conflicts between
attempted installs of libnet10-1.0.2a-11.fc6 and libnet-devel-1.1.2.1-9.fc6
  file /usr/include/libnet.h conflicts between attempted installs of
libnet10-1.0.2a-11.fc6 and libnet-devel-1.1.2.1-9.fc6
  file /usr/include/libnet/libnet-asn1.h conflicts between attempted installs of
libnet10-1.0.2a-11.fc6 and libnet-devel-1.1.2.1-9.fc6
  file /usr/include/libnet/libnet-functions.h conflicts between attempted
installs of libnet10-1.0.2a-11.fc6 and libnet-devel-1.1.2.1-9.fc6
  file /usr/include/libnet/libnet-headers.h conflicts between attempted installs
of libnet10-1.0.2a-11.fc6 and libnet-devel-1.1.2.1-9.fc6
  file /usr/include/libnet/libnet-macros.h conflicts between attempted installs
of libnet10-1.0.2a-11.fc6 and libnet-devel-1.1.2.1-9.fc6
  file /usr/include/libnet/libnet-structures.h conflicts between attempted
installs of libnet10-1.0.2a-11.fc6 and libnet-devel-1.1.2.1-9.fc6
  file /usr/lib/libnet.a conflicts between attempted installs of
libnet10-1.0.2a-11.fc6 and libnet-devel-1.1.2.1-9.fc6

Comment 1 Patrice Dumas 2007-02-27 11:08:16 UTC
Indeed, libnet-devel and libnet10 conflicts. This is already reported
here:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=180952

there is also some discussion in the libnet review that may be 
relevant:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=165963


A first remark is that although both packages conflict,
libnet-devel obsoletes libnet10. That's because of that
obsoletion that there I didn't add an explicit Conflict:. 
When installing libnet, however, yum installs libnet10 because 
it is the shortest name, even though libnet-devel Provides a 
newer version of libnet.


Anyway, I consider the conflict to be unfortunate, but useful, 
because there are codes on the net still using the libnet10 
api (at least that was the case when I checked some time ago). 
With libnet10 devel files installed at the usual places a 
package may be built against libnet10 easily.


Another related remark is that libnet 1.1.* seems dead upstream. 
There is something on alioth but it doesn't seem to be more 
active. The 1.1.3 discussed in the fedora submission was 
never released. As of today no established fork seems to be there.


I'd be happy to have a better solution that remove the conflict and
still allows to use libnet10 easily. My current view is that having 
libnet10 files installed at the regular place balances the cost of
having a conflict, given that libnet-devel obsoletes libnet10. 

Comment 2 Michael Schwendt 2007-03-01 18:28:48 UTC
> libnet-devel obsoletes libnet10

It doesn't.

The only mechanism that is in place is that libnet10 "Provides:"
an old version of libnet and libnet-devel, so for ordinary yum/rpm
updates, libnet10 is replaced by the newer libnet/libnet-devel package.

$ rpm -qa 'libnet*'
$ sudo rpm -i libnet10-1.0.2a-11.fc6.i386.rpm 
$ sudo rpm -U libnet-devel-1.1.2.1-9.fc6.i386.rpm 
$ rpm -qa 'libnet*'
libnet-devel-1.1.2.1-9.fc6

See bug 111071 comment 3 for the background.

Yum does its own thing, though, when choosing a package with the
shortest name, which "Provides: libnet-devel = ..." to satisfy a
request for "libnet-devel". And during yum update, it does not
perform an upgrade to the newer libnet-devel.

Conclusively, fixing this once and for all would be best:

 - removing the file conflicts
 - removing the virtual Provides in libnet10


Comment 3 Patrice Dumas 2007-03-02 16:58:26 UTC
(In reply to comment #2)
> > libnet-devel obsoletes libnet10
> 
> It doesn't.

Indeed. In fact I mistakenly believed libnet10 was updated by 
libnet-devel. But it is wrong and the current situation is 
much worse than what I though. I have verified the following
(on devel):

* When libnet10 is installed:

   yum update
   yum update libnet
   yum update libnet-devel
   yum install libnet

Don't do anything, while 

   yum install libnet

installs libnet-devel and remove libnet10.

* When nothing is installed,

   yum install libnet

installs libnet10

   yum install libnet-devel

installs libnet-devel


The current situation is completly broken. 

* I propose removing the 
Provides: libnet
and 
Provides: libnet-devel
in libnet10.

* Add a Provides libnet10-devel to libnete10, 

* Add an explicit 
Conflict: libnet10 in libnet-devel.

I would like to remove also, from libnet10:
Obsoletes:      libnet < 1.1.0
Obsoletes:      libnet-devel < 1.1.0

Does this seems good?

I will think about removing the Conflict later.

Comment 4 Patrice Dumas 2007-03-10 19:47:53 UTC
Michael, do you approve what I propose in Comment #3?

Comment 5 Patrice Dumas 2007-03-20 20:41:59 UTC
I'm going to do what I proposed, and I'll also rename libnet10 
files, libnet.a -> libnet-1.0.a, put libnet.h and libnet/ in 
a libnet-1.0 directory and rename libnet-config -> libnet-config-1.0.

Comment 6 Patrice Dumas 2007-03-20 22:01:32 UTC
libnet and libnet-devel Obsoletes and Provides dropped. 

Provides:       libnet10-devel = %{version}-%{release}
added.

Patched to be parallel installable with libnet-devel.

Currently building for devel.