Scout24 / yum-repo-server

Server to host and manage yum repositories via REST API
GNU General Public License v3.0
114 stars 19 forks source link

Virtual Repo creation #50

Open ryandsouza123 opened 10 years ago

ryandsouza123 commented 10 years ago

Hi, I installed your application a couple of days ago and tried using the same. From what I had understood from the term 'virtual repository' was a single repo containing links to 1 or more repos, all accessible together from a link identifying the virtual repo by zypper or yum. Do you intend to add this functionality to your application or is it already possible to do the same. Regards, Ryan

mriehl commented 10 years ago

Hi,

The design is a one-to-one mapping between virtual and real("static") repositories - since you're able to change the destination with an API call it's not so much of a restriction. The idea is that the virtual repo is a generic thing (like "mongo repo") and you can decide what mongo version the system will see and use through these API calls. So in fact we use these for versioning mostly.

If you need to use several repos the yum way would be to add these repos to your yum configuration.

Could you expand a bit why grouping repos together would benefit your use case? E.g. why can't the machine know about repoA, repoB and repoC?

ryandsouza123 commented 10 years ago

Hi Mriehl, We want to able to club a number of repos under a common URL link, so that they can be accessed together through the URL using yum or zypper for the following reasons. 1) Our organisation has a number of repos who's links change over time so we required a constant 'virtual repo' which hides these changes to the user. 2) we also want to be able to collectively show packages stored in theses repos under a common view. Regards, Ryan

schlomo commented 10 years ago

Do you mean nested yum repos? Like this structure:

/toprepo/
    /repodata/repomd.xml
    /subrepo1/
        /repodata/repomd.xml
        sub1.rpm
   /subrepo2/
       /repodata/repomd.xml
       sub2.rpm

So that you could access http://.../toprepo to get sub1 and sub2 package while accessing http://.../toprepo/subrepo1 would only give you sub1 package?

ATM the yum repo server does not support this kind of aggregation.

With regard to your questions:

  1. the repo aliases / virtual repos of yum repo server gives you exactly this function
  2. why do you need this? why is it important that the clients access 1 repo instead of 3 repos?
ryandsouza123 commented 9 years ago

Hi, For the local repositories I had created on the server using the client, is it possible to find them on the back end OS file system hosting the server ?. If so where can i find these repositories along with the rpms and metadata within ?

Is it possible to setup a static repository by considering one created manually on the file system ? Regards, Ryan

mriehl commented 9 years ago

Hi,

all data is stored in the gridFS backend. If you want to serve repos that are on some disk you can install a webserver (apache comes to mind) and set the virtual repo to be a link.

For example repoclient linktovirtual myvirtual http://any-host/repo. This would require you to have any-host set up to serve the repository with metadata on /repo. This repository would the be accessible as myrepo on the yum-repo-server.

But if the repo is on the yum-repo-server host I guess you're definitely better of by creating the repo in the yum-repo-server itself. If the repo is somewhere else (eG build agent or s3 bucket) then the linking might be useful.

ryandsouza123 commented 9 years ago

Hi, I created a static repo, uploaded rpm packages to the repo and then generated the metadata. The repodata directory has been created. I am trying to access the packages from the repo on a CENTOS client system using zypper instead of yum. when i use zypper, the client adds the repo successfully but does not display any packages from this repo but when i use yum i am able to retrieve the packages. Is the metadata not compatible with zypper ? I suspect its due the fact that the metadata file are sqlite files and not .gz files. Have you tested these repos with zypper ? Regards, Ryan

schlomo commented 9 years ago

To the best of my knowledge we never tried zypper with the yum repo server.

Just for my own curiosity: Why do you use zypper on CentOS instead of yum? I was once also contemplating this move but realized that it is not worth the trouble. Also, zypper does not support per-repo metadata expiration like yum does and we heavily use this to have 30s expiration for our own repos and 1d expiration for upstream repos which we change only once a week.

ryandsouza123 commented 9 years ago

zypper seems to be the standard built in client for CentOS. When i use createrepo to create metadata files on my server, I have the option of creating sqlite files in addition to the xml files which are created by default ie filelists.xml.gz,other.xml.gz and primary.xml.gz. By doing this the metadata is consumable by both zypper and yum.

range commented 9 years ago

There is no zypper in CentOS, the standard client is yum (which will possibly replaced by "dnf", come RHEL/CentOS 8). Just take a look at the package repository for CentOS in your browser, there is no zypper there: http://mirror.centos.org/centos-7/7.0.1406/os/x86_64/Packages/ (Or maybe a picture says more than a listing of a few thousand packages?) bildschirmfoto 2015-01-05 um 10 29 09 As a member of the CentOS board, I am pretty sure that we never shipped zypper, neither in 2, nor in 3,4,5,6 and 7.

ryandsouza123 commented 9 years ago

Sorry i made a mistake earlier the OS in use here is SUSELinux and not CentOS.