Cave

cave is the new git-like commandline tool of Paludis. It is enabled by default starting from sys-apps/paludis-0.48.2 onwards.

Here is a short documentation of cave, where we have highlighted information that is provided indirectly in other documentations. If you plan to use it seriously, you should RTFM and check the paludis website.

Usage
cave has a set of commands that you can see with

Installating and uninstalling packages
To install a package, you might wonder what dependencies it will pull, or you can request installation directly.

To request installation of a package, do:

The default action of resolve is to print what cave would do when you execute the resolution.

If you want to perform an installation, you can first wonder what it would do:

the, tune your use flags, and proceed to installation.

The resume ability of cave is useful. This is a fact : the more packages you want to install, the more installation failures could happen. You can use the --resume-file $file argument to cave resolve in order to manage resuming. Example:

now a breakage happens, you find the root cause and continue

There are predefined sets of packages : system, world and installed-packages.

To uninstall a package, you can use the uninstall command or use the equivalent cave resolve \!package (note the backslash, used to escape the ! which is special in most shells). If you want to uninstall a package that has dependencies used only by the package that is going to be uninstalled, you can purge those dependencies within the same command.

$depspec can be a package or a paludis glob such as category/* or even */*' (still safe).

If you want to uninstall a package on which other installed packages depend, cave will warn you. You then have two choices: remove them too with --remove-if-dependent $depspec or ignore this fact and risk breakage with --uninstalls-may-break $depspec.

Maintenance
The cave command purge finds packages that are needed by nothing in your world. It is safe to use it... if you trust the gentoo developers : if some dependencies were not correctly specified in a package, they could be detected as stale and would be uninstalled. But if that's the case, you wouldn't be able to install the package because of that too.

The cave command fix-linkage finds the packages to reinstall when you have library breakage.

ebuild development, troubleshooting
The perform command is a lower-level command used to perform installations. It can be used directly, in which case you get something roughly equivalent (but safer and more powerful) than accessing the ebuild tool with portage.

Clean Installation of Stuff not in ebuilds
The import command allows for proper installation of packages which have no ebuilds and that you would want to install, nevertheless.

Repository data synchronization
By default, cave sync will perform parallel synchronization for your repositories. If you encounter a problem, you can use the --sequential option, which will help you to troubleshoot typical issues, such as new certificate acceptance prompts. cave sync $repo can also be used, but most of the time you don't bother.

Migration from the paludis tool
Here are the similar or equal paludis-commands to this examples, so that you can easily compare if you are familiar with paludis.

Resolve
If you are satisfied with the list, you can make cave execute the updates with -x (--execute)

Fix linkage
Like reconcilio and revdep-rebuild you can also add the path to an .so with --library, which will make cave-fix-linkage check the linkage to this file, not to all broken linkages.

If you don't want to upgrade packages while fixing the linkage, you can use --exact.

Miscellaneous information
Every cave-command has it's own man-page named in the same scheme. To get the page for "cave sync", use "man cave-sync". To get the page for "cave resolve", use "man cave-resolve". Etc. Make sure you read the man-pages to get all information on the commands, for some commands there are many options.

If you are missing CAVE_OPTIONS (like PALUDIS_OPTIONS in paludis), you might want to use an alias for specific commands.

add this to your bashrc or something like this

Enable --resume-file by default
~/.bashrc