F22 System Wide Change: Replace Yum With DNF

Reindl Harald h.reindl at thelounge.net
Sat Jun 14 01:55:41 UTC 2014



Am 14.06.2014 03:36, schrieb Michael Scherer:
> Le samedi 14 juin 2014 à 03:20 +0200, Reindl Harald a écrit :
>> why do functions and options need to be removed due a
>> code-rewrite/re-factoring? to clean up the code base?
> 
> likely yes.
> Also because the more code you have, the more corner case you can face,
> the more time you spend on testing, reimplementing, etc, etc. the dnf
> developers did a very good job engaging the users to know what matter to
> them, to integrate likely better or more flexible solution, etc.

maybe in the meantime

i remember bugreports for "keepcache" at the begin of this year which
where closed with "WONTFIX" as well as "no we don't protect the OS
by allow 'dnf remove kernel dnf'" while "yum -y remove kernel"
don#t touch the running one

> Everybody I know who looked at the yum python api told me it was a bit
> horrible. So a cleanup was needed for that. There was demand from
> packagekit developers to have a cleaner API as well, and I would hope
> that tools like puppet/ansible would benefit as well.
> 
> And since that's python, you also have the need to be python 3
> compatible, which is a rather big task, as seen by the slow migration of
> the rest of the platform.
> 
> The less code you have to port, the less time it take (same goes for
> testing, documenting, translating)

the internal API is between developers
the options and CLI params are for users

different worlds

>> if someone takes the word "improve" in his mouth i
>> don't see a place for "remove" in the same context
>>
>> the "dirty codebase grown" that way because previously unplanned
>> features where included and it it pretty silly to cleanup things
>> by step back from where it came which leads a few years later to
>> the same problems: options left and right are included in a
>> codebase originally not designed for it
>>
>> that's fine for developers because that way you can start every
>> few years from scratch with remove, re-write and cleanup but it
>> hardly gains anything for the users
> 
> In fact, since developers can fix bug more easily with a code that is
> clean, it benefits to users as well.

you ignore the bugs of missing functions which will be the first
so you postponed the work only

clean != stripped functionality

>> a smart re-write is using the benefit knowing what all sort of options,
>> functions and configurations where  added all the time before and
>> organize the codebase to implement it in a better, more generic way
>> with sane (API) interfaces
> 
> Perfect, so are you leading the way, or do you continue to tell to
> people how to make a smart rewrite without being more specific and
> without putting any efforts?

my effort is try to prevent thousands of bugreports

did you realize that in this thread it was even suggested
to completly remove the yum command over the long even
if it is only a symlink?

that is not what that page below previously said, that statet
very clear that DNF is a temporary name of the next YUM major
version what finally means for any user reading this page it
will later called YUM, the technology behind the scenes will
be more mordern and that's it from the users perspective

http://fedoraproject.org/wiki/Features/DNF
Preview the next-generation Yum package manager, using hawkey/libsolv for backend
Note about the name "DNF": it has no relevant meaning, meant as a project name only.
Since DNF  is a tech preview in Fedora 18 the Python module names can not be 'yum.*'
as that would clash with yum itself

>> throwing all away, start with a minimum and be proud
>> it's faster and cleaner is only a short term solution
> 
> You still didn't answer to the question I asked. 
> How long do you want compatibility be kept, and what compatibility
> exactly ?

yum-plugin-protectbase
yum-plugin-tsflags
yum-utils

Loaded plugins: etckeeper, protectbase, tsflags
Usage: yum [options] COMMAND

List of Commands:

autoremove     Remove leaf packages
check          Check for problems in the rpmdb
check-update   Check for available package updates
clean          Remove cached data
deplist        List a package's dependencies
distribution-synchronization Synchronize installed packages to the latest available versions
downgrade      downgrade a package
erase          Remove a package or packages from your system
fs             Acts on the filesystem data of the host, mainly for removing docs/lanuages for minimal hosts.
fssnapshot     Creates filesystem snapshots, or lists/deletes current snapshots.
groups         Display, or use, the groups information
help           Display a helpful usage message
history        Display, or use, the transaction history
info           Display details about a package or group of packages
install        Install a package or packages on your system
list           List a package or groups of packages
load-transaction load a saved transaction from filename
makecache      Generate the metadata cache
provides       Find what package provides the given value
reinstall      reinstall a package
repo-pkgs      Treat a repo. as a group of packages, so we can install/remove all of them
repolist       Display the configured software repositories
search         Search package details for the given string
shell          Run an interactive yum shell
swap           Simple way to swap packages, instead of using shell
update         Update a package or packages on your system
update-minimal Works like upgrade, but goes to the 'newest' package match which fixes a problem that affects your
system
updateinfo     Acts on repository update information
upgrade        Update packages taking obsoletes into account
version        Display a version for the machine and/or available repos.


Options:
  -h, --help            show this help message and exit
  -t, --tolerant        be tolerant of errors
  -C, --cacheonly       run entirely from system cache, don't update cache
  -c [config file], --config=[config file]
                        config file location
  -R [minutes], --randomwait=[minutes]
                        maximum command wait time
  -d [debug level], --debuglevel=[debug level]
                        debugging output level
  --showduplicates      show duplicates, in repos, in list/search commands
  -e [error level], --errorlevel=[error level]
                        error output level
  --rpmverbosity=[debug level name]
                        debugging output level for rpm
  -q, --quiet           quiet operation
  -v, --verbose         verbose operation
  -y, --assumeyes       answer yes for all questions
  --assumeno            answer no for all questions
  --version             show Yum version and exit
  --installroot=[path]  set install root
  --enablerepo=[repo]   enable one or more repositories (wildcards allowed)
  --disablerepo=[repo]  disable one or more repositories (wildcards allowed)
  -x [package], --exclude=[package]
                        exclude package(s) by name or glob
  --disableexcludes=[repo]
                        disable exclude from main, for a repo or for
                        everything
  --disableincludes=[repo]
                        disable includepkgs for a repo or for everything
  --obsoletes           enable obsoletes processing during updates
  --noplugins           disable Yum plugins
  --nogpgcheck          disable gpg signature checking
  --disableplugin=[plugin]
                        disable plugins by name
  --enableplugin=[plugin]
                        enable plugins by name
  --skip-broken         skip packages with depsolving problems
  --color=COLOR         control whether color is used
  --releasever=RELEASEVER
                        set value of $releasever in yum config and repo files
  --downloadonly        don't update, just download
  --downloaddir=DLDIR   specifies an alternate directory to store packages
  --setopt=SETOPTS      set arbitrary config and repo options
  --bugfix              Include bugfix relevant packages, in updates
  --security            Include security relevant packages, in updates
  --advisory=ADVS, --advisories=ADVS
                        Include packages needed to fix the given advisory, in
                        updates
  --bzs=BZS             Include packages needed to fix the given BZ, in
                        updates
  --cves=CVES           Include packages needed to fix the given CVE, in
                        updates
  --sec-severity=SEVS, --secseverity=SEVS
                        Include security relevant packages matching the
                        severity, in updates
  --tsflags=TSFLAGS

  Plugin Options:

> (remember, you said that no one want to have "everything" "forever", so
> let's be precise on what you want)

no - i said no one wants the old yum maintained forever
which you claimed that people did

> And you can hardly complain to not be listened if you do not answer to
> precise questions when someone is willing to listen and try to find a
> solution

http://fedoraproject.org/wiki/Features/DNF
Preview the next-generation Yum package manager, using hawkey/libsolv for backend
Note about the name "DNF": it has no relevant meaning, meant as a project name only.
Since DNF  is a tech preview in Fedora 18 the Python module names can not be 'yum.*'
as that would clash with yum itself

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 246 bytes
Desc: OpenPGP digital signature
URL: <http://lists.fedoraproject.org/pipermail/devel/attachments/20140614/041026a6/attachment-0001.sig>


More information about the devel mailing list