Plugins with a '_' character in command name will implement subcommands.
Needed for modularity subcommands.
E.g. the "command_module_enable" plugin will implement the "enable"
subcommand of the "module" command.
Add Contribution section into README, including the guidelines for
adding changelog metadata to the commit messages. Thanks to this,
changelog can be automatically generated while staying useful.
- Added number of obsolete packages into transaction summary.
- Added which packages are obsolete and by whom they are replaced.
The user can run microdnf in test mode (--setopt=tsflags=test) to know
what microdnf will do. However, without this patch, information about
obsolete (replaced as obsolete) packages was missing.
Example output before patch:
# microdnf install TestB
Package Repository Size
Installing:
TestB-1.0.0-1.noarch ci-obsoletes 5,9 kB
Transaction Summary:
Installing: 1 packages
Reinstalling: 0 packages
Upgrading: 0 packages
Removing: 0 packages
Downgrading: 0 packages
Downloading packages...
Running transaction test...
Installing: TestB;1.0.0-1;noarch;ci-obsoletes
Obsoleting: TestA;1.0.0-1;noarch;installed
Complete.
Example output after patch:
# microdnf install TestB
Package Repository Size
Installing:
TestB-1.0.0-1.noarch ci-obsoletes 5,9 kB
replacing TestA-1.0.0-1.noarch
Transaction Summary:
Installing: 1 packages
Reinstalling: 0 packages
Upgrading: 0 packages
Obsoleting: 1 packages
Removing: 0 packages
Downgrading: 0 packages
Downloading packages...
Running transaction test...
Installing: TestB;1.0.0-1;noarch;ci-obsoletes
Obsoleting: TestA;1.0.0-1;noarch;installed
Complete.
Microdnf respects the "metadata_expire" option from repository or global
configuration file.
Before this patch the microdnf set maximum cache age to 0. -> Metadata
was alway downloaded. Again and again during each action that needed
metadata.
The "--installroot" argument must be used together with "--config",
"--noplugins", "--setopt=cachedir=<path>", "--setopt=reposdir=<path>",
and "--setopt=varsdir=<path>" arguments.
The release version is detected from the installroot directory. If it
is not possible (eg. empty/newly created installroot) then the release
version must be supplied as an additional argument
"--releasever=<requested_releasever>".
Fixed arguments --config, --disablerepo, --enablerepo.
Error:
Bail out! ERROR:/home/jrohel/projects/rpm-software-management/microdnf/
dnf/dnf-main.c:142:process_global_option: code should not be reached
Patch allows to set multiple repos directories by --setopt.
Format: "--setopt=reposdir=<path1>, <path2>,..."
Needs libdnf with dnf_context_set_repos_dir() function.
Notes:
The libdnf creates the first repos directory if it does not exists.
The RHSM code in libdnf uses the first repos directory.
The old libdnf version required setting of path to repository. The new
libdnf reads the path from configuration file. Or sets the default path
if it is not found in the configuration file.
So, the PR removes default setting of path to repository from
the microdnf.
Needs libdnf with support for reposdir in configuration file.
Only one repository directory can be specified.
The libdnf must be change to support more repository directories and to respect
global configuration file (dnf.conf).
Example:
--setopt=reposdir=/etc/yum.repos.d
There was no possibility only to show and test a transaction.
The transaction was always performed.
The "test" option provides a transaction check without performing
the transaction. It includes downloading of packages, gpg keys check
(including permanent import of additional keys if necessary), and
rpm check to prevent file conflicts.
The "BuildRequires: pkgconfig(libdnf) >= %{libdnf_version}" results
only in dependency on "libdnf.so.2()(64bit)", which is not sufficient,
therefore, adding also "Requires: libdnf >= %{libdnf_version}".
Discovered by: https://bugzilla.redhat.com/show_bug.cgi?id=1679476#c16
When there were more available candidates with the same nevra, then
the package with the greatest Id was passed to the solver.
Now all candidates are passed to the solver (using selector). Solver
chooses package. Solver takes in account other factors (eg. priority
of repositories).
Example:
Installing: binutils;2.30-49.el8;x86_64;beaker-BaseOS
Installing: (null)
Installing: isl;0.16.1-6.el8;x86_64;beaker-AppStream
Installing: (null)
The lines with (null) will not be printed with this patch.
--info show detailed information about the packages
--nevra use name-epoch:version-release.architecture format
for displaying packages (default)
Signed-off-by: Jaroslav Rohel <jrohel@redhat.com>
Searches for selected packages and displays the requested information
about them.
Command options:
--available display available packages (default)
--installed display installed packages
Signed-off-by: Jaroslav Rohel <jrohel@redhat.com>
The command lists repositories.
Command options:
--all show all repositories
--disabled show disabled repositories
--enabled show enabled repositories (default)
Signed-off-by: Jaroslav Rohel <jrohel@redhat.com>
Microdnf downloades repository metadata in the remove command. It is
not needed because the remove command does not use them. In addition,
there is a problem with unavailable repositories when
skip_if_unavailable=false. In this case, microdnf stops with error
message "error: cannot update repo ..." and does not remove any package.
The fix disables loading of repository metadata in the remove command.