RPM Community Forums

Mailing List Message of <rpm-users>

Re: rpm-5.0.0 and ftp / http support

From: Rolf Pedersen <rolfpedersen@mindspring.com>
Date: Sat 10 Dec 2011 - 03:02:59 CET
Message-ID: <4EE2BDD3.5070302@mindspring.com>
Mandriva 2011.0
[rolf@localhost ~]$ cat /etc/mandriva-release
Mandriva Linux release 2011.0 (Official) for x86_64
[rolf@localhost ~]$ rpm -q rpm
rpm-5.3.12-0.20110712.2-mdv2011.0.x86_64

This is my first exposure to rpm-5 and I couldn't understand why I 
couldn't rpm -qip [--changelog] URL or rpm -U --oldpackage URL, some rpm 
functionalities I've come to use often, after 11 years of Mandrake|iva.  
This thread is the first suggestion of the reason I've found, after some 
fruitless google searching and devising some testing to eliminate local 
corruption: https://qa.mandriva.com/show_bug.cgi?id=64914

Is "network access was disabled in rpm-5.0.0" why I am seeing this?  If 
so, can the functionalities be restored?
Thanks,
Rolf

On Jan 24, 2008, at 11:57 AM, Stefan Westmeier wrote:

>  Hi again,
>
>  here with some more information about the topic.
>
>  Using rpm 4.1 fetching packages directly via ftp works nicely. The
>  command below works fine.
>
>  Exactly the same commands fails for rpm 5.0.0:
>
>  $ rpm --ignoreos --dbpath /cygdrive/d/home/rpmroot/rpmdb -- relocate
>  /if=/cygdrive/d/home/rpmroot/if --relocate /sys=/cy
>  gdrive/d/home/rpmroot/sys -i ftp://user:xxx@192.168.182.128:2666/
>  CoC_sys/Most/Trunk/rpms/most_if-1.0-1.i686.rpm ftp:
>  //user:qqq123@192.168.182.128:2666/CoC_sys/Most/Trunk/rpms/most-
>  bin-1.0-1.i686.rpm error: open of
>  ftp://user:xxx@192.168.182.128:2666/CoC_sys/Most/
>  Trunk/rpms/most_if-1.0-1.i686.rpm failed: No such fil e or directory
>
>  Is this a bug or feature?
>

rpm5.org decided to do network access through external curl
rather than internal rpmio (as in rpm-4.1).

So network access was disabled in rpm-5.0.0.

I've added a patch in cvs already to permit opt-in re-enabling,
patch attached below.

Then "opt-in" to network access by doing

      echo "%_rpmgio        %{nil}" >> /etc/rpm/macros

The patch will be in rpm-5.0.1 Real Soon Now.

Note there may be a few more cases where Fopen needs the
same "opt-in" change, but the 3 cases in lib/rpmgi.c are the
most important because that is the most common case for
queries.

73 de Jeff

Index: rpmgi.c
===================================================================
RCS file: /v/rpm/cvs/rpm/lib/rpmgi.c,v
retrieving revision 2.47
retrieving revision 2.48
diff -u -b -B -w -p -r2.47 -r2.48
--- rpmgi.c     1 Dec 2007 17:54:30 -0000       2.47
+++ rpmgi.c     11 Jan 2008 23:05:33 -0000      2.48
@@ -115,7 +115,7 @@ static rpmRC rpmgiLoadManifest(rpmgi gi,
          /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
          /*@modifies gi, rpmGlobalMacroContext, h_errno,
internalState @*/
   {
-    FD_t fd = rpmgiOpen(path, "r.fdio");
+    FD_t fd = rpmgiOpen(path, "r%{?_rpmgio}");
       rpmRC rpmrc = RPMRC_FAIL;

       if (fd != NULL) {
@@ -136,7 +136,7 @@ static Header rpmgiReadHeader(rpmgi gi,
          /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
          /*@modifies gi, rpmGlobalMacroContext, h_errno,
internalState @*/
   {
-    FD_t fd = rpmgiOpen(path, "r.fdio");
+    FD_t fd = rpmgiOpen(path, "r%{?_rpmgio}");
       Header h = NULL;

       if (fd != NULL) {
@@ -665,7 +665,7 @@ nextkey:
                  path = _free(path);
                  path = rpmExpand(_query_hdlist_path, NULL);
              }
-           gi->fd = rpmgiOpen(path, "rm.fdio");
+           gi->fd = rpmgiOpen(path, "rm%{?_rpmgio}");
              gi->active = 1;
              path = _free(path);
          }

Received on Thu Jan 24 18:12:57 2008
Received on Sat Dec 10 03:13:54 2011
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.