=head1 NAME

urpmi.recover - manages repackaging of old RPMs and rollbacks

=head1 SYNOPSIS

    urpmi.recover --checkpoint [--noclean]
    urpmi.recover --list '1 week ago'
    urpmi.recover --rollback '1 hour ago'
    urpmi.recover --disable [--noclean]

=head1 DESCRIPTION

B<urpmi.recover> is a tool to help management of RPM rollbacks. It has
three main functions:

C<urpmi.recover --checkpoint> is used to define a point in your system
that you consider stable, and to start storing info that will enable you
to rollback installations and upgrades to this state.

C<urpmi.recover --list> is used to list chronologically all installations
and upgrades on your system. (It has two variants, C<--list-all> and
C<--list-safe>.)

C<urpmi.recover --rollback> is used to roll back installations and
upgrades to a previous point in the past (at most until your checkpoint.)

=head1 OPTIONS

=over 4

=item --checkpoint

Define the repackaging checkpoint. From now on, using rpm and/or
urpmi/urpme to install, upgrade or remove packages, the older packages
will be stored in F</var/spool/repackage>, or whatever directory you set
the C<%_repackage_dir> rpm macro to. This way one can use them for
rollbacks.

Technically, using this option writes a file
F</etc/rpm/macros.d/urpmi.recover.macros> that overrides the rpm macros
used to set up the repackaging functionalities of rpm. You can change
C<%_repackage_dir> there if you want to. Note that you'll probably need
plenty of space to store repackaged rpms for a long timeframe.

You can also choose to turn off repackaging by setting
C<%_repackage_all_erasures> to 0 in this file. (Of course if you do so
rollbacks won't be possible anymore.)

=item --noclean

C<--checkpoint> defines a new checkpoint and removes everything in the
repackage directory. To prevent this cleaning, use the C<--noclean>
option.

=item --list <date>

Lists all installations and upgrades from now since the provided date,
grouped by installation transactions. The date parser is quite elaborated,
so you can give a date in ISO format or close to it (C<YYYY-MM-DD
hh:mm:ss>) or a duration (e.g. "1 day ago").

=item --list-all

Lists all installations and upgrades known to the RPM database.

=item --list-safe

Lists all installations and upgrades up to the date of the checkpoint.

=item --rollback <date>

=item --rollback <number of transactions>

Roll back the system to the given date (see C<--list> for accepted date
formats), or rolls back the given number of transactions.

=item B<--urpmi-root> I<directory>

Use the file system tree rooted for urpmi database and rpm install. Contrary
to B<--root>, the urpmi configuration comes from the rooted tree.

=item --disable

Turn off repackaging. Unless C<--noclean> was also specified, this cleans
up the repackage directory as well. To turn it on again, use
C<--checkpoint>.

=back

=head1 BUGS

When enabled, you can't install and repackage delta rpms (rpms generated
with the C<makedeltarpm> tool.) Also, if you install a delta rpm, you
won't be able to rollback past this point. A sound advice would be to
completely avoid delta rpms if you're planning to use urpmi.recover.

=head1 FILES

    /etc/rpm/macros.d/urpmi.recover.macros

=head1 AUTHOR

Rafael Garcia-Suarez, 

Copyright (C) 2006 Mandriva SA

=head1 SEE ALSO

urpmi(8), urpme(8)
