* Package flag "keep" that prevents a package from being removed from
a user environment by an install or upgrade action. This is particularly useful if you have a version installed that you don't want to upgrade (e.g., because the newer versions are broken). Example: $ nix-env -u zapping --dry-run (dry run; not doing anything) upgrading `zapping-0.9.6' to `zapping-0.10cvs6' $ nix-env --set-flag keep true zapping $ nix-env -u zapping --dry-run (dry run; not doing anything) However, "-e" will still uninstall the package. (Maybe we should require the keep flag to be explicitly set to false before it can be uninstalled.)
This commit is contained in:
parent
a46db5d013
commit
89c1d2b202
2 changed files with 8 additions and 3 deletions
|
@ -72,8 +72,8 @@
|
||||||
|
|
||||||
<listitem><para>TODO: <command>nix-env</command>
|
<listitem><para>TODO: <command>nix-env</command>
|
||||||
<option>--set-flag</option>. Specific flags:
|
<option>--set-flag</option>. Specific flags:
|
||||||
<literal>active</literal>,
|
<literal>active</literal>, <literal>priority</literal>,
|
||||||
<literal>priority</literal>.</para></listitem>
|
<literal>keep</literal>.</para></listitem>
|
||||||
|
|
||||||
|
|
||||||
<listitem><para><command>nix-env -q</command> now has a flag
|
<listitem><para><command>nix-env -q</command> now has a flag
|
||||||
|
|
|
@ -482,8 +482,10 @@ static void installDerivations(Globals & globals,
|
||||||
i != installedElems.end(); ++i)
|
i != installedElems.end(); ++i)
|
||||||
{
|
{
|
||||||
DrvName drvName(i->name);
|
DrvName drvName(i->name);
|
||||||
|
MetaInfo meta = i->queryMetaInfo(globals.state);
|
||||||
if (!globals.preserveInstalled &&
|
if (!globals.preserveInstalled &&
|
||||||
newNames.find(drvName.name) != newNames.end())
|
newNames.find(drvName.name) != newNames.end() &&
|
||||||
|
meta["keep"] == "true")
|
||||||
printMsg(lvlInfo,
|
printMsg(lvlInfo,
|
||||||
format("replacing old `%1%'") % i->name);
|
format("replacing old `%1%'") % i->name);
|
||||||
else
|
else
|
||||||
|
@ -543,6 +545,9 @@ static void upgradeDerivations(Globals & globals,
|
||||||
{
|
{
|
||||||
DrvName drvName(i->name);
|
DrvName drvName(i->name);
|
||||||
|
|
||||||
|
MetaInfo meta = i->queryMetaInfo(globals.state);
|
||||||
|
if (meta["keep"] == "true") continue;
|
||||||
|
|
||||||
/* Find the derivation in the input Nix expression with the
|
/* Find the derivation in the input Nix expression with the
|
||||||
same name and satisfying the version constraints specified
|
same name and satisfying the version constraints specified
|
||||||
by upgradeType. If there are multiple matches, take the
|
by upgradeType. If there are multiple matches, take the
|
||||||
|
|
Loading…
Reference in a new issue