[pacman-dev] bogus reinstalling message
This issue has been known for ages, and it is easy to fix it, so I would like to do it. http://archlinux.org/pipermail/pacman-dev/2008-May/011885.html Example of a bogus output taken from the forums (the thread does not talk about this issue though) : http://bbs.archlinux.org/viewtopic.php?pid=343166#p343166 My attached solution simply removes the messages, which are in my opinion useless. But I asked if it was a problem here : http://archlinux.org/pipermail/pacman-dev/2008-June/012095.html If this is a problem, the rest of my patch will allow me to easily reintroduce these messages when they are relevant.
On Fri, Aug 22, 2008 at 12:03 PM, Xavier <shiningxc@gmail.com> wrote:
This issue has been known for ages, and it is easy to fix it, so I would like to do it. http://archlinux.org/pipermail/pacman-dev/2008-May/011885.html Example of a bogus output taken from the forums (the thread does not talk about this issue though) : http://bbs.archlinux.org/viewtopic.php?pid=343166#p343166
My attached solution simply removes the messages, which are in my opinion useless. But I asked if it was a problem here : http://archlinux.org/pipermail/pacman-dev/2008-June/012095.html If this is a problem, the rest of my patch will allow me to easily reintroduce these messages when they are relevant.
To be clearer, here are the 3 situations possible : 1) local version (release 1) is older than sync (2) myhost% LANG=C sudo pacman -S bash resolving dependencies... looking for inter-conflicts... Targets (1): bash-3.2.039-2 2) local and sync are the same : 2 myhost% LANG=C sudo pacman -S bash warning: bash-3.2.039-2 is up to date -- reinstalling resolving dependencies... looking for inter-conflicts... Targets (1): bash-3.2.039-2 3) local (3) is newer than sync (2) myhost% LANG=C sudo pacman -S bash warning: bash: local (3.2.039-3) is newer than core (3.2.039-2) warning: bash-3.2.039-3 is up to date -- reinstalling resolving dependencies... looking for inter-conflicts... Targets (1): bash-3.2.039-2 1) and 2) are already fine. Only 3) is wrong : here we don't want to display the "up to date" message.
On Fri, Aug 22, 2008 at 12:03 PM, Xavier <shiningxc@gmail.com> wrote:
This issue has been known for ages, and it is easy to fix it, so I would like to do it. http://archlinux.org/pipermail/pacman-dev/2008-May/011885.html Example of a bogus output taken from the forums (the thread does not talk about this issue though) : http://bbs.archlinux.org/viewtopic.php?pid=343166#p343166
My attached solution simply removes the messages, which are in my opinion useless. But I asked if it was a problem here : http://archlinux.org/pipermail/pacman-dev/2008-June/012095.html If this is a problem, the rest of my patch will allow me to easily reintroduce these messages when they are relevant.
To be clearer, here are the 3 situations possible :
1) local version (release 1) is older than sync (2)
myhost% LANG=C sudo pacman -S bash resolving dependencies... looking for inter-conflicts...
Targets (1): bash-3.2.039-2
2) local and sync are the same : 2
myhost% LANG=C sudo pacman -S bash warning: bash-3.2.039-2 is up to date -- reinstalling resolving dependencies... looking for inter-conflicts...
Targets (1): bash-3.2.039-2
3) local (3) is newer than sync (2)
myhost% LANG=C sudo pacman -S bash warning: bash: local (3.2.039-3) is newer than core (3.2.039-2) warning: bash-3.2.039-3 is up to date -- reinstalling resolving dependencies... looking for inter-conflicts...
Targets (1): bash-3.2.039-2
1) and 2) are already fine. Only 3) is wrong : here we don't want to display the "up to date" message. _______________________________________________
0. I don't like this _alpm_pkg_compare_versions() function at all, it has some annoying warning messages (why is the "forcing upgrade..." message important?), these reduce its usability (hardwired "upgrade" word etc.). This function is just a vercmp + force check + printing some (useless?) warnings. (The second "downgrade" warning also seems a bit odd in "-S target" operation because of mentioning the repo.) 1. After your patch we won't display warning in 2) case neither (as you wrote in patch description). I am not sure this is better. I would simply inform user about both downgrade (but not in pkg_compare_versions!) and reinstall instead. 2. The patch silently modifies (fixes?) --needed behavior (probably this is why you changed its description, but it wasn't clear to me first): Before your patch --needed prevented us from _downgrade_ too, now it will allow it. Bye
On Fri, Aug 22, 2008 at 2:56 PM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
First, thanks for the feedback!
0. I don't like this _alpm_pkg_compare_versions() function at all, it has some annoying warning messages (why is the "forcing upgrade..." message important?), these reduce its usability (hardwired "upgrade" word etc.). This function is just a vercmp + force check + printing some (useless?) warnings. (The second "downgrade" warning also seems a bit odd in "-S target" operation because of mentioning the repo.)
I agree that these warning messages are annoying and rather useless. However, I like the idea of having a simple wrapper to vercmp handling the force flag (and maybe the epoch idea in 10 years :P) Finally, why is it odd to mention the repo?
1. After your patch we won't display warning in 2) case neither (as you wrote in patch description). I am not sure this is better. I would simply inform user about both downgrade (but not in pkg_compare_versions!) and reinstall instead.
Could you be much more precise here? There are 3 different values returned by compare_versions, and 2 values for the needed flag, which makes 6 different combination. downgrade only applies when compare_versions == -1 and with both values of needed (because of point 2. below) reinstall happens when compare_versions == 0 and needed == 0 So you want to display these messages only in these cases? And nothing in the other cases? (like skipping when compare_versions == 0 and needed == 1)
2. The patch silently modifies (fixes?) --needed behavior (probably this is why you changed its description, but it wasn't clear to me first): Before your patch --needed prevented us from _downgrade_ too, now it will allow it.
Good point, I made this patch a while ago and I don't even know if I realized that. At least I don't remember anymore. Thinking about it now, I prefer the new behavior and see my change as a fix. But I agree this should clearly appear in the commit log.
On Fri, Aug 22, 2008 at 2:56 PM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
First, thanks for the feedback!
0. I don't like this _alpm_pkg_compare_versions() function at all, it has some annoying warning messages (why is the "forcing upgrade..." message important?), these reduce its usability (hardwired "upgrade" word etc.). This function is just a vercmp + force check + printing some (useless?) warnings. (The second "downgrade" warning also seems a bit odd in "-S target" operation because of mentioning the repo.)
I agree that these warning messages are annoying and rather useless.
However, I like the idea of having a simple wrapper to vercmp handling the force flag (and maybe the epoch idea in 10 years :P)
Btw, in your patch (without downgrade messages) we shouldn't check force in sync_addtarget, because force cannot affect "vercmp != 0" result. (I assume that --needed filters out reinstalls only). So pkg_vercmp (or strcmp;-) is enough here imho (without upgrade/downgrade distinction).
Finally, why is it odd to mention the repo?
OK. This is not odd, just strange. Clearly, this was designed for -Su. No other -S messages uses this "from repo extra" phrasing.
1. After your patch we won't display warning in 2) case neither (as you wrote in patch description). I am not sure this is better. I would simply inform user about both downgrade (but not in pkg_compare_versions!) and reinstall instead.
Could you be much more precise here?
There are 3 different values returned by compare_versions, and 2 values for the needed flag, which makes 6 different combination.
downgrade only applies when compare_versions == -1 and with both values of needed (because of point 2. below)
reinstall happens when compare_versions == 0 and needed == 0
So you want to display these messages only in these cases? And nothing in the other cases? (like skipping when compare_versions == 0 and needed == 1)
I am talking about "-S target" not about -Su (sync_newversion). 1. Target is newer: usual case, no warning 2. Reinstall was requested (local_ver == target_ver): Skipping/Reinstalling foo... (1.0-1 => 1.0-1) 3. Target is older: Downgrading foo... (2.0-1 => 1.0-1) [These => notations can be confusing with force flagged packages.] I am a bit unsure about downgrade warning idea (after thinking a bit). (However, atm if pkg_compare_versions is used, we get a downgrade warning.) It would be cool (imho), but in fact we use downgrade/upgrade distinction nowhere else. (see -U, resolvedeps added packages (edge), many event/debug messages and so on.) Bye
On Fri, Aug 22, 2008 at 4:55 PM, Nagy Gabor <ngaba@bibl.u-szeged.hu> wrote:
I am talking about "-S target" not about -Su (sync_newversion). 1. Target is newer: usual case, no warning 2. Reinstall was requested (local_ver == target_ver): Skipping/Reinstalling foo... (1.0-1 => 1.0-1) 3. Target is older: Downgrading foo... (2.0-1 => 1.0-1)
Ok then, I guess we more or less keep the same behavior. We just need to make a better distinction between 2 and 3, which is why I changed the _alpm_pkg_compare_versions function. Here is a new patch (inlined for comments, attached to be sure that it will apply cleanly)
From 0cbe750a2fbaf0e43055d8c2c9a1b3dcec7089b9 Mon Sep 17 00:00:00 2001 From: Xavier Chantry <shiningxc@gmail.com> Date: Sat, 31 May 2008 15:06:30 +0200 Subject: [PATCH] Cleanup of _alpm_pkg_compare_versions.
* Change the return values to be more informative. It was previously boolean, only indicating if one package was newer than the other or not. Now it is a simple wrapper to vercmp, handling the force flag. * Remove the verbose output. This belongs somewhere else. * Don't display the "up to date -- skipping" and "up to date -- reinstalling" messages, when the local version is newer than the sync one. * Fix the behavior of --needed option to not skip a target when the local version is newer, and clarify its description. * Add a new alpm_pkg_has_force function This allows us to access the pkg->force field like any other package fields. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> --- doc/pacman.8.txt | 2 +- lib/libalpm/alpm.h | 1 + lib/libalpm/package.c | 37 ++++++++++++++++++------------------- lib/libalpm/sync.c | 20 +++++++++++++------- src/pacman/pacman.c | 2 +- 5 files changed, 34 insertions(+), 28 deletions(-) diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt index 0a632ea..6f071ba 100644 --- a/doc/pacman.8.txt +++ b/doc/pacman.8.txt @@ -308,7 +308,7 @@ linkman:pacman.conf[5]. to date. *\--needed*:: - Only install the targets that are not already installed and up-to-date. + Don't reinstall the targets that are already up-to-date. *\--ignore* <'package'>:: Directs pacman to ignore upgrades of package even if there is one diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index fbef057..16b48a0 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -224,6 +224,7 @@ size_t alpm_pkg_changelog_read(void *ptr, size_t size, /*int alpm_pkg_changelog_feof(const pmpkg_t *pkg, void *fp);*/ int alpm_pkg_changelog_close(const pmpkg_t *pkg, void *fp); unsigned short alpm_pkg_has_scriptlet(pmpkg_t *pkg); +unsigned short alpm_pkg_has_force(pmpkg_t *pkg); off_t alpm_pkg_download_size(pmpkg_t *newpkg); diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 49238ea..b1b688b 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -295,6 +295,20 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_groups(pmpkg_t *pkg) return pkg->groups; } +unsigned short SYMEXPORT alpm_pkg_has_force(pmpkg_t *pkg) +{ + ALPM_LOG_FUNC; + + /* Sanity checks */ + ASSERT(handle != NULL, return(-1)); + ASSERT(pkg != NULL, return(-1)); + + if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) { + _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC); + } + return pkg->force; +} + alpm_list_t SYMEXPORT *alpm_pkg_get_depends(pmpkg_t *pkg) { ALPM_LOG_FUNC; @@ -827,32 +841,17 @@ void _alpm_pkg_free(pmpkg_t *pkg) FREE(pkg); } -/* Is pkgB an upgrade for pkgA ? */ -int _alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg) +/* Compare the versions of two packages, handling the force flag */ +int _alpm_pkg_compare_versions(pmpkg_t *pkg1, pmpkg_t *pkg2) { int cmp = 0; ALPM_LOG_FUNC; - if(pkg->origin == PKG_FROM_CACHE) { - /* ensure we have the /desc file, which contains the 'force' option */ - _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC); - } - - /* compare versions and see if we need to upgrade */ - cmp = alpm_pkg_vercmp(alpm_pkg_get_version(pkg), alpm_pkg_get_version(local_pkg)); + cmp = alpm_pkg_vercmp(alpm_pkg_get_version(pkg1), alpm_pkg_get_version(pkg2)); - if(cmp != 0 && pkg->force) { + if(cmp < 0 && alpm_pkg_has_force(pkg)) { cmp = 1; - _alpm_log(PM_LOG_WARNING, _("%s: forcing upgrade to version %s\n"), - alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg)); - } else if(cmp < 0) { - /* local version is newer */ - pmdb_t *db = pkg->origin_data.db; - _alpm_log(PM_LOG_WARNING, _("%s: local (%s) is newer than %s (%s)\n"), - alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg), - alpm_db_get_name(db), alpm_pkg_get_version(pkg)); - cmp = 0; } return(cmp); diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 7a577a1..b78e7d3 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -182,7 +182,7 @@ pmpkg_t SYMEXPORT *alpm_sync_newversion(pmpkg_t *pkg, alpm_list_t *dbs_sync) } /* compare versions and see if spkg is an upgrade */ - if(_alpm_pkg_compare_versions(pkg, spkg)) { + if(_alpm_pkg_compare_versions(pkg, spkg) > 0) { _alpm_log(PM_LOG_DEBUG, "new version of '%s' found (%s => %s)\n", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg), alpm_pkg_get_version(spkg)); @@ -326,18 +326,24 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy local = _alpm_db_get_pkgfromcache(db_local, alpm_pkg_get_name(spkg)); if(local) { - if(_alpm_pkg_compare_versions(local, spkg) == 0) { - /* spkg is NOT an upgrade */ + int cmp = _alpm_pkg_compare_versions(spkg, local); + if(cmp == 0) { if(trans->flags & PM_TRANS_FLAG_NEEDED) { + /* with the NEEDED flag, packages up to date are not reinstalled */ _alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- skipping\n"), alpm_pkg_get_name(local), alpm_pkg_get_version(local)); return(0); } else { - if(!(trans->flags & PM_TRANS_FLAG_DOWNLOADONLY)) { - _alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- reinstalling\n"), - alpm_pkg_get_name(local), alpm_pkg_get_version(local)); - } + _alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- reinstalling\n"), + alpm_pkg_get_name(local), alpm_pkg_get_version(local)); + } + } else if(cmp < 0) { + /* local version is newer */ + pmdb_t *db = spkg->origin_data.db; + _alpm_log(PM_LOG_WARNING, _("%s: local (%s) is newer than %s (%s)\n"), + alpm_pkg_get_name(local), alpm_pkg_get_version(local), + alpm_db_get_name(db), alpm_pkg_get_version(spkg)); } } diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index 33df4e1..04b5e49 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -130,7 +130,7 @@ static void usage(int op, const char * const myname) printf(_(" -u, --sysupgrade upgrade all packages that are out of date\n")); printf(_(" -w, --downloadonly download packages but do not install/upgrade anything\n")); printf(_(" -y, --refresh download fresh package databases from the server\n")); - printf(_(" --needed only upgrade outdated or not yet installed packages\n")); + printf(_(" --needed don't reinstall up to date packages\n")); printf(_(" --ignore <pkg> ignore a package upgrade (can be used more than once)\n")); printf(_(" --ignoregroup <grp>\n" " ignore a group upgrade (can be used more than once)\n")); -- 1.5.6.4
* Change the return values to be more informative. It was previously boolean, only indicating if a sync package was newer than a local package. Now it is a simple wrapper to vercmp, handling the force flag. * Remove the verbose output from _alpm_pkg_compare_versions. The "force" message is not so useful. The "package : local (v1) is newer than repo (v2)" message can be moved to -Su operation. For the -S operation, it is better to have something like : "downgrading package from v1 to v2" * Don't display the "up to date -- skipping" and "up to date -- reinstalling" messages, when the local version is newer than the sync one. * Fix the behavior of --needed option to not skip a target when the local version is newer, and clarify its description. * Add a new alpm_pkg_has_force function This allows us to access the pkg->force field like any other package fields. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> --- doc/pacman.8.txt | 2 +- lib/libalpm/alpm.h | 1 + lib/libalpm/package.c | 38 +++++++++++++++++++------------------- lib/libalpm/sync.c | 30 +++++++++++++++++++++--------- src/pacman/pacman.c | 2 +- 5 files changed, 43 insertions(+), 30 deletions(-) diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt index 0a632ea..6f071ba 100644 --- a/doc/pacman.8.txt +++ b/doc/pacman.8.txt @@ -308,7 +308,7 @@ linkman:pacman.conf[5]. to date. *\--needed*:: - Only install the targets that are not already installed and up-to-date. + Don't reinstall the targets that are already up-to-date. *\--ignore* <'package'>:: Directs pacman to ignore upgrades of package even if there is one diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index fbef057..16b48a0 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -224,6 +224,7 @@ size_t alpm_pkg_changelog_read(void *ptr, size_t size, /*int alpm_pkg_changelog_feof(const pmpkg_t *pkg, void *fp);*/ int alpm_pkg_changelog_close(const pmpkg_t *pkg, void *fp); unsigned short alpm_pkg_has_scriptlet(pmpkg_t *pkg); +unsigned short alpm_pkg_has_force(pmpkg_t *pkg); off_t alpm_pkg_download_size(pmpkg_t *newpkg); diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 49238ea..eaef688 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -295,6 +295,20 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_groups(pmpkg_t *pkg) return pkg->groups; } +unsigned short SYMEXPORT alpm_pkg_has_force(pmpkg_t *pkg) +{ + ALPM_LOG_FUNC; + + /* Sanity checks */ + ASSERT(handle != NULL, return(-1)); + ASSERT(pkg != NULL, return(-1)); + + if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) { + _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC); + } + return pkg->force; +} + alpm_list_t SYMEXPORT *alpm_pkg_get_depends(pmpkg_t *pkg) { ALPM_LOG_FUNC; @@ -827,32 +841,18 @@ void _alpm_pkg_free(pmpkg_t *pkg) FREE(pkg); } -/* Is pkgB an upgrade for pkgA ? */ -int _alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg) +/* Is spkg an upgrade for locapkg? */ +int _alpm_pkg_compare_versions(pmpkg_t *spkg, pmpkg_t *localpkg) { int cmp = 0; ALPM_LOG_FUNC; - if(pkg->origin == PKG_FROM_CACHE) { - /* ensure we have the /desc file, which contains the 'force' option */ - _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC); - } - - /* compare versions and see if we need to upgrade */ - cmp = alpm_pkg_vercmp(alpm_pkg_get_version(pkg), alpm_pkg_get_version(local_pkg)); + cmp = alpm_pkg_vercmp(alpm_pkg_get_version(spkg), + alpm_pkg_get_version(localpkg)); - if(cmp != 0 && pkg->force) { + if(cmp < 0 && alpm_pkg_has_force(spkg)) { cmp = 1; - _alpm_log(PM_LOG_WARNING, _("%s: forcing upgrade to version %s\n"), - alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg)); - } else if(cmp < 0) { - /* local version is newer */ - pmdb_t *db = pkg->origin_data.db; - _alpm_log(PM_LOG_WARNING, _("%s: local (%s) is newer than %s (%s)\n"), - alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg), - alpm_db_get_name(db), alpm_pkg_get_version(pkg)); - cmp = 0; } return(cmp); diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 7a577a1..4a705b5 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -170,6 +170,7 @@ pmpkg_t SYMEXPORT *alpm_sync_newversion(pmpkg_t *pkg, alpm_list_t *dbs_sync) { alpm_list_t *i; pmpkg_t *spkg = NULL; + int cmp; for(i = dbs_sync; !spkg && i; i = i->next) { spkg = _alpm_db_get_pkgfromcache(i->data, alpm_pkg_get_name(pkg)); @@ -182,14 +183,20 @@ pmpkg_t SYMEXPORT *alpm_sync_newversion(pmpkg_t *pkg, alpm_list_t *dbs_sync) } /* compare versions and see if spkg is an upgrade */ - if(_alpm_pkg_compare_versions(pkg, spkg)) { + cmp = _alpm_pkg_compare_versions(spkg, pkg); + if(cmp > 0) { _alpm_log(PM_LOG_DEBUG, "new version of '%s' found (%s => %s)\n", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg), alpm_pkg_get_version(spkg)); return(spkg); - } else { - return(NULL); } + if (cmp < 0) { + pmdb_t *db = spkg->origin_data.db; + _alpm_log(PM_LOG_WARNING, _("%s: local (%s) is newer than %s (%s)\n"), + alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg), + alpm_db_get_name(db), alpm_pkg_get_version(spkg)); + } + return(NULL); } /** Get a list of upgradable packages on the current system @@ -326,18 +333,23 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy local = _alpm_db_get_pkgfromcache(db_local, alpm_pkg_get_name(spkg)); if(local) { - if(_alpm_pkg_compare_versions(local, spkg) == 0) { - /* spkg is NOT an upgrade */ + int cmp = _alpm_pkg_compare_versions(spkg, local); + if(cmp == 0) { if(trans->flags & PM_TRANS_FLAG_NEEDED) { + /* with the NEEDED flag, packages up to date are not reinstalled */ _alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- skipping\n"), alpm_pkg_get_name(local), alpm_pkg_get_version(local)); return(0); } else { - if(!(trans->flags & PM_TRANS_FLAG_DOWNLOADONLY)) { - _alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- reinstalling\n"), - alpm_pkg_get_name(local), alpm_pkg_get_version(local)); - } + _alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- reinstalling\n"), + alpm_pkg_get_name(local), alpm_pkg_get_version(local)); + } + } else if(cmp < 0) { + /* local version is newer */ + _alpm_log(PM_LOG_WARNING, _("downgrading package %s (%s => %s)\n"), + alpm_pkg_get_name(local), alpm_pkg_get_version(local), + alpm_pkg_get_version(spkg)); } } diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index 33df4e1..04b5e49 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -130,7 +130,7 @@ static void usage(int op, const char * const myname) printf(_(" -u, --sysupgrade upgrade all packages that are out of date\n")); printf(_(" -w, --downloadonly download packages but do not install/upgrade anything\n")); printf(_(" -y, --refresh download fresh package databases from the server\n")); - printf(_(" --needed only upgrade outdated or not yet installed packages\n")); + printf(_(" --needed don't reinstall up to date packages\n")); printf(_(" --ignore <pkg> ignore a package upgrade (can be used more than once)\n")); printf(_(" --ignoregroup <grp>\n" " ignore a group upgrade (can be used more than once)\n")); -- 1.6.0
participants (3)
-
Nagy Gabor
-
Xavier
-
Xavier Chantry