Re: Using python to get a list of repositories, including RHEL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 01 Nov 2021 21:52:33 -0000
"Philip Kauffman" <philip@xxxxxxxxxxx> wrote:

The two commands you are using do different things, I think.  I didn't
go deeply into the differences, but they are using different code
paths, so that is the likely explanation.

> My goal is to use a python script to get all a systems repositories
> in a data structure (list,dict,whatever). I've gotten most of the way
> there with the below which is able to get all repositories in
> /etc/yum.repos.d/*.repo. However, I can't find any reference to how
> to also make python3-dnf get the RHEL repositories as well... even
> though it is clearly capable of doing so (see below). 
> 
> Any pointers would be greatly appreciated.
> 
> <code>
> #!/usr/bin/env python3
> import dnf
> base = dnf.Base()
> base.read_all_repos()

<code>
    def read_all_repos(self, opts=None):
        # :api
        """Read repositories from the main conf file and from .repo
    files."""

        reader = dnf.conf.read.RepoReader(self.conf, opts)
        for repo in reader:
            try:
                self.repos.add(repo)
            except dnf.exceptions.ConfigError as e:
                logger.warning(e)
</code>

> Yet... when I use the CLI I do get the rhel repos.
> # dnf repolist rhel* | awk '{print $1}'|grep rhel
> rhel-x86_64-appstream-8
> rhel-x86_64-baseos-8
> rhel-x86_64-codeready-builder-8
> rhel-x86_64-supplementary-8

from the dnf man page

   Repolist Command
       Command: repolist

       dnf [options] repolist [--enabled|--disabled|--all]
              Depending on the exact command lists enabled, disabled or
       all known repositories. Lists all enabled repositories by
       default. Provides more detailed information when -v option is
       used.

       This command by default does not force a sync of expired
       metadata. See also Metadata Synchronization.

The code for this command is in
/usr/lib/python3.10/site-packages/dnf/cli/commands/repolist.py

When I run this on my Fedora system as 
dnf --all repolist
there are no rhel repositories listed.  This is reasonable.  So, you
must be running the above command on a system where rhel is enabled or
available in some way.  I don't know the mechanism that dnf uses to
determine that.  I do get a bunch of repos that aren't local to
/etc/yum.repos.d, so it is running a different command than the other.

Maybe you could use the second form from a subprocess.call, and
capture and parse the output to get all the available repos.  Or a
combination of the first technique and then only the rhel repos.

The dnf python code will be in /usr/lib/python3.*/sitepackages/dnf if
you want to look at the sources, where the asterisk is the version of
python on your system, e.g. 9 or 10

You can see what files are in the package python3-dnf and where they
are installed by running 
/usr/bin/rpm -q --filesbypkg python3-dnf
_______________________________________________
users mailing list -- users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to users-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/users@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure



[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [EPEL Devel]     [Fedora Magazine]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Desktop]     [Fedora Fonts]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Fedora Sparc]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux