dnf.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Tue, 14 Nov 2023 18:42:00 +0200
changeset 2572 9390895f4164
parent 2571 a7c8e493887f
child 2575 9615c2645c93
permissions -rw-r--r--
List all package versions together with repos


=====================
 dnf package manager
=====================
.. contents::
   :local:

List repositories
=================

List subscription repos::

  sudo subscription-manager repos --list

List enabled repositories::

  sudo dnf repolist
  sudo dnf repolist --enabled

List disabled repositories::

  sudo dnf repolist --disabled

Activate repository::

  sudo subscription-manager repos --enable $REPO

List packages
=============

List all installed packages::

  dnf repoquery --installed

List packages selected by a user (but not automatically to meet dependenciy requirements)::

  dnf repoquery --userinstalled
  dnf history userinstalled

List packages in a repository::

  dnf repository-packages $REPO list

Search for a package::

  dnf search nodejs

List all package version::

  dnf search --showduplicates nodejs

List all package versions together with repos::

  dnf list --showduplicates nodejs

Check package details
=====================

Check if a package is installed::

  dnf list $PKG
  rpm --verify $PKG
  rpm -V $PKG

Check a package version::

  dnf info $PKG

Check repository/origin availability::

  dnf whatprovides $PKG

List package's files
====================
::

  dnf repoquery -l $PKG
  rpm -ql $PKG

Find packages a file belongs to
===============================

Using remote metadata::

  dnf provides ifconfig
  dnf repoquery --file /usr/sbin/ifconfig

Using installed package DB::

  rpm -qf /usr/bin/rpm

Limit search to a specific repository::

  dnf repoquery --disablerepo=* --enablerepo=$REPO -f $PATT

List package dependencies
=========================
::

  repoquery --requires --resolve $PKG

If you possess a actual RPM::

  rpm -qpR $RPM

List of packages that depend on a given
=======================================
::

  dnf repoquery --alldeps --whatrequires $PKG
  dnf repoquery --installed --whatrequires $PKG
  rpm -q --whatrequires $PKG

Dealing with streams
====================

Streams group related package at specific compatible version. Only one version could be installed in
system in time.

For example Node.js has lots of parallel versions::

  bash# sudo dnf module list nodejs
  Name   Stream Profiles                              Summary
  nodejs 10 [d] common [d], development, minimal, s2i Javascript runtime
  nodejs 12     common [d], development, minimal, s2i Javascript runtime
  nodejs 14     common [d], development, minimal, s2i Javascript runtime
  nodejs 16     common [d], development, minimal, s2i Javascript runtime
  nodejs 18     common [d], development, minimal, s2i Javascript runtime

You select specific stream::

  sudo dnf module install nodejs:18

In order to change stream one need to remove all the packages from original stream and reset the
stream::

  sudo dnf module remove nodejs
  sudo dnf module reset nodejs
  sudo dnf module install nodejs:16

Subscription manager
====================


https://developers.redhat.com/articles/renew-your-red-hat-developer-program-subscription
  To renew subscription just login to https://developers.redhat.com/ and wait 15 min.

Cleanup actions from broken previous subscription::

  sudo subscription-manager remove --all
  sudo subscription-manager unregister
  sudo subscription-manager clean
  sudo subscription-manager register --username ...
  sudo subscription-manager refresh
  sudo subscription-manager attach --auto