xbps-bin: it's possible to reinstall any pkg with '-f' option.
This commit is contained in:
parent
6ad7289d68
commit
a5d9eb9853
4
NEWS
4
NEWS
@ -1,5 +1,9 @@
|
||||
xbps-0.11.0 (???):
|
||||
|
||||
* xbps-bin(8): it is possible now to reinstall a package even if it's
|
||||
installed with the '-f' option. If reinstalling the same package version,
|
||||
only unexistent files or files not matching its hash will be extracted.
|
||||
|
||||
* While unpacking a binary package, always check that file to be extracted
|
||||
exists on filesystem, if true and its hash is matched, skip extraction.
|
||||
|
||||
|
6
TODO
6
TODO
@ -3,12 +3,6 @@ libxbps:
|
||||
- properties: (hold) still unimplemented.
|
||||
- properties: (update-first) still unimplemented.
|
||||
|
||||
xbps-bin:
|
||||
- Add a flag (or use -f install) to force reinstallation of any
|
||||
installed package (if same version is available) and preserve
|
||||
requiredby entries, but overwritting those files that weren't
|
||||
matched by the hash.
|
||||
|
||||
xbps-repo:
|
||||
- New target to clean binpkgs in cachedir that aren't available on
|
||||
any registered repository or its hash doesn't match.
|
||||
|
@ -45,7 +45,7 @@ struct list_pkgver_cb {
|
||||
};
|
||||
|
||||
/* from transaction.c */
|
||||
int install_new_pkg(const char *);
|
||||
int install_new_pkg(const char *, bool);
|
||||
int update_pkg(const char *);
|
||||
int remove_pkg(const char *, bool, bool);
|
||||
int autoupdate_pkgs(bool, bool);
|
||||
|
@ -70,11 +70,12 @@ main(int argc, char **argv)
|
||||
int i, c, flags, rv;
|
||||
bool yes, purge, debug, reqby_force, force_rm_with_deps, recursive_rm;
|
||||
bool install_auto, install_manual, show_download_pkglist_url;
|
||||
bool reinstall;
|
||||
|
||||
rootdir = cachedir = conffile = option = NULL;
|
||||
flags = rv = 0;
|
||||
reqby_force = yes = purge = force_rm_with_deps = false;
|
||||
recursive_rm = debug = false;
|
||||
recursive_rm = debug = reinstall = false;
|
||||
install_auto = install_manual = show_download_pkglist_url = false;
|
||||
|
||||
while ((c = getopt(argc, argv, "AC:c:dDFfMo:pRr:Vvy")) != -1) {
|
||||
@ -98,6 +99,7 @@ main(int argc, char **argv)
|
||||
force_rm_with_deps = true;
|
||||
break;
|
||||
case 'f':
|
||||
reinstall = true;
|
||||
flags |= XBPS_FLAG_FORCE_CONFIGURE;
|
||||
flags |= XBPS_FLAG_FORCE_REMOVE_FILES;
|
||||
break;
|
||||
@ -227,7 +229,7 @@ main(int argc, char **argv)
|
||||
usage(xhp);
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
if ((rv = install_new_pkg(argv[i])) != 0)
|
||||
if ((rv = install_new_pkg(argv[i], reinstall)) != 0)
|
||||
goto out;
|
||||
|
||||
rv = exec_transaction(yes, show_download_pkglist_url);
|
||||
|
@ -240,7 +240,7 @@ autoremove_pkgs(bool yes, bool purge)
|
||||
}
|
||||
|
||||
int
|
||||
install_new_pkg(const char *pkg)
|
||||
install_new_pkg(const char *pkg, bool reinstall)
|
||||
{
|
||||
prop_dictionary_t pkgd;
|
||||
char *pkgname = NULL, *pkgpatt = NULL;
|
||||
@ -273,10 +273,14 @@ install_new_pkg(const char *pkg)
|
||||
}
|
||||
prop_object_release(pkgd);
|
||||
if (state == XBPS_PKG_STATE_INSTALLED) {
|
||||
printf("Package '%s' is already installed.\n", pkgname);
|
||||
goto out;
|
||||
if (!reinstall) {
|
||||
printf("Package '%s' is already installed.\n",
|
||||
pkgname);
|
||||
goto out;
|
||||
}
|
||||
} else {
|
||||
printf("Package `%s' needs to be configured.\n", pkgname);
|
||||
}
|
||||
printf("Package `%s' needs to be configured.\n", pkgname);
|
||||
}
|
||||
if ((rv = xbps_transaction_install_pkg(pkgpatt)) != 0) {
|
||||
if (rv == ENOENT) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
.Dd December 15, 2011
|
||||
.Dd December 20, 2011
|
||||
.Os Void GNU/Linux
|
||||
.Dt xbps-bin 8
|
||||
.Sh NAME
|
||||
@ -59,6 +59,7 @@ target. If set, package will be removed even if other packages are currently
|
||||
depending on it, i.e package is a dependency of any other installed package.
|
||||
.It Fl f
|
||||
Used currently in the
|
||||
.Em install ,
|
||||
.Em purge ,
|
||||
.Em reconfigure
|
||||
and
|
||||
@ -71,7 +72,11 @@ removal of package files even if its hash does not match in the
|
||||
.Em purge
|
||||
and
|
||||
.Em remove
|
||||
targets.
|
||||
targets. If set, package(s) will be reinstalled even if its state is
|
||||
.Em installed
|
||||
when used with the
|
||||
.Em install
|
||||
target.
|
||||
.It Fl M
|
||||
Sets the
|
||||
.Em automatic-install
|
||||
|
Loading…
Reference in New Issue
Block a user