bacardi and cola: it gets the job done

Way back in the day I worked on a product called Red Carpet. It was a software management tool for Linux, and later it morphed into a system for doing centralized management of systems across a network. I could lament about how great it was but how misunderstood it was and how it worked on both RPM and dpkg but I’ll skip all the sad sack stuff.

The point is, the real gem of Red Carpet was rug, the command-line client. It had an incredibly clean interface and wonderful search. It allowed you to install and remove packages at the same time from the command-line, something which (I think) you still can’t do with any of the existing tools. You could downgrade packages, install packages from a specific channel (or repository), download packages but not install them. You could add locks to channels or packages, preventing them from ever being touched even via dependency resolution. You could even refer to channels using acronyms (“SUSE Linux Enterprise Desktop” abbreviates to “sled” automatically). It was incredibly powerful and yet simple to use. It was indispensible for me and for a long time after it stopped being released for most distros I would find a way to wedge it in.

Recently I’ve switched to using yum and while it works pretty well, I’ve found it lacking in a lot of the ways I listed above.

Enter rum. Rum is a new frontend for yum which implements the rug commands and user interface, written by James Willcox, Tambet Ingo, and Chris Rivera. I’ve been using it during its one week development and I’m very impressed. It reuses a lot of code from rug, so the behavior is almost identical to the old tool. The only thing that takes getting used to is putting sudo in front of it. Oh, and not accidentally typing rug.

Anyway, snorp has a blog post about it. Go download packages for SUSE and Fedora. Or download the very small source. It requires yum 2.9.5 or newer.

Example output:

[joe@posthaste ~]$ sudo rum search beagle

S | Repository | Name                 | Version
--+------------+----------------------+-----------------------
i | dist       | beagle               | 0.2.3-40.32.i586
i | dist       | beagle-debuginfo     | 0.2.3-40.32.i586
i | dist       | beagle-evolution     | 0.2.3-40.32.i586
i | installed  | beagle-firefox       | 0.2.3-33.i586
v | dist       | beagle-firefox       | 0.2.3-40.32.i586
i | dist       | beagle-gui           | 0.2.3-40.32.i586
i | installed  | beagle-index         | 10.1_20060427-6.5.i586
v | dist       | beagle-index         | 10.1_20060427-6.7.i586
  | dist       | kio_beagle           | 0.2-16.3.i586
  | dist       | kio_beagle-debuginfo | 0.2-16.3.i586
v | dist       | libbeagle            | 0.2.3-40.32.i586
i | installed  | libbeagle            | 0.2.3-33.i586
v | dist       | libbeagle-devel      | 0.2.3-40.32.i586
i | installed  | libbeagle-devel      | 0.2.3-33.i586

And a list of commands:

[joe@posthaste ~]$ rum --help
Warning: No command found on command line.
Usage: rum <command> <options> ...

The following options are understood by all commands:
--version                    Print client version and exit
-V, --verbose                Verbose output
-p, --no-plugins             Don't load yum plugins
-C, --cache-only             Run entirely from cache, don't update cache
--normal-output              Normal output (default)
-t, --terse                  Terse output
--quiet                      Quiet output, print only error messages
--read-from-file=  Get args from file
--read-from-stdin            Get args from stdin
--ignore-rc-file             Don't read rum's startup file (~/.rumrc)
--ignore-env                 Ignore the RUM_ARGS environment variable
-?, --help                   Get help on a specific command

Package management commands:
  file-list (fl)        List files within a package
  info (if)             Show detailed information about a package
  info-conflicts (ic)   List a package's conflicts
  info-obsoletes (io)   List a package's obsoletes
  info-provides (ip)    List a package's provides
  info-requires (ir)    List a package's requires
  install (in)          Perform an install
  list-updates (lu)     List available updates
  lock-add (la)         Add a lock
  lock-list (ll)        List locks
  lock-remove (lr)      Remove a lock
  orphans (or)          List installed packages that don't exist in
                        repositories
  package-file (pf)     List packages that own the files provided
  packages (pa)         List the packages in a repo
  remove (rm)           Perform a removal
  search (se)           Search packages
  update (up)           Perform an update
  what-conflicts (wc)   List packages that conflict with what you specify
  what-provides (wp)    List packages that provide what you specify
  what-requires (wr)    List packages that require what you specify

System commands:
  clean (cl)            Clean cache
  disable (di)          Disable a repository
  enable (en)           Enable a repository
  refresh (ref)         Refresh the package cache
  repo-add (sa, ra)     Add a repository
  repo-delete (sd, rd)  Remove a repository
  repos (sl, ca, ch)    List active repositories

Other commands:
  help                  A list of all of the available commands

For more detailed information about a specific command,
run 'rum <command name> --help'.

Now we just need some sort of rum drinking game.

Comments are now closed.