Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Rage Against The Outdated Machine

Project Description

RATOM stands for "Rage Against The Outdated Machine".

Its purpose is to simply update all the things that need updating.

The primary use for RATOM is under current Python 2.x on a supported
operating system that uses one or more of the supported software.


* Supports Mac OSX, FreeBSD (freebsd-update, portsnap, pkg),
ClamAV/freshclam, Homebrew, Cask, Perlbrew, CPAN Minus, pyenv, pip,
rbenv, gem, npm, Metasploit Framework, Git repositories, and
Microsoft AutoUpdate via a plugin architecture
* Markdown-formatted output with all update and informational commands
shown with their output and in pretty terminal colors via the
`blessings <>`_ package; also
allows subsequent processing by redirecting or piping
* Dry run mode (``-n``) processes configuration file and command line
arguments, performs checks and intermediate processing, prints
commands to show what will run given configuration and system
settings, but doesn't actually update anything
* Configuration via ``~/.ratom/config.json`` or an argument to ``-c``
option; allows switching the ordering of plugins (not recommended),
explicit enabling or disabling of plugins, and specifying a
different path for the log file
* Logs intermediate processing commands and other informational
messages to the configured log location (``~/.ratom/ratom.log`` by
default) or an argument to ``-l`` option
* Shows full configuration details if ``--show-config`` option is used
* Each plugin provides a ``check`` function to determine whether to
run and a ``main`` function that performs the update
* Full documentation `online <>`_, or as
`HTML (gzipped tar)
or PDF (`view
via `Sphinx <>`_


* Show all configuration, commands, and output

* intermediate commands are shown in the log versus the output for
brevity's sake

* Use a modular plugin architecture, not only for code organization,
but to easily support more software
* Generating a report should be easy
* Run sequentially to avoid issues
* Halt when a command fails



pip install ratom

Can also install from either the binary distribution (or "wheel") or
source distribution files::

pip install ratom-1.0.0-py2-none-any.whl
pip install



usage: [-h] [-n] [-c PATH] [-l PATH] [--show-config]
[plugin [plugin ...]]

optional arguments:
-h, --help show this help message and exit

ratom options:
-n Dry run; don't actually update anything
-c PATH Use alternate configuration file; default:
-l PATH Log to PATH; default: ~/.ratom/ratom.log
--show-config Show full configuration details
plugin Specific plugin(s) to run in the specified order; default:
"macosx freebsd clamav homebrew cask perlbrew cpanm pyenv pip
rbenv gem npm msf git microsoft"; ignored if running a plugin


RATOM can be used in a few ways...

1. Install with pip and run via the installed ``ratom`` shim
2. Clone the Git repository or unzip the source distribution and run
either ``ratom/`` or one of the plugins directly
3. Do #2 but also add symlinks to somewhere in your PATH::

cd ~/bin
ln -s path/to/ratom/ratom/ ratom

4. Use the Python REPL (or programtically from other Python code).
Import ``ratom.all`` or a specific plugin, then call a ``main``
function and pass any arguments in command-line fashion via the
``argv`` argument or a configuration dictionary via the ``cfg``
Note that if you want to call a ``check`` function, you'll need to
import ``raton.common``.
See also the `API Reference`_.


$ python
>>> import ratom.all
>>> ratom.all.main()
>>> ratom.clamav.main()
>>> import ratom.clamav
>>> ratom.clamav.main()
>>> ratom.clamav.main(['-n'])
>>> import ratom.common
>>> ratom.clamav.check()


| Version | Date | Comments |
| 1.0.0 | 2016-05-25 | Initial release |
| 1.0.1 | 2016-05-25 | Fixed release script, rearranged |
| | | documentation |


Please report issues via
`Github Issues <>`_.

Better yet, fork the Github repository, fix the issue, and send a PR
(pull request)!


* `Github <>`_
* `PyPI <>`_
* `Documentation <>`_

To do

* support Debian/Ubuntu (apt-get), Red Hat/Fedora/CentOS (yum)...
* run ``brew upgrade --all`` with the pyenv version set to
'system' without using ``pyenv global``
* update Perl modules via CPANM for all perlbrew perls?
* update Python modules via pip for all pyenv pythons?
* update Ruby gems for all rbenv rubys?
Release History

Release History

History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


This version
History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
ratom-1.0.1-py2-none-any.whl (20.7 kB) Copy SHA256 Checksum SHA256 2.7 Wheel May 25, 2016 (23.9 kB) Copy SHA256 Checksum SHA256 Source May 25, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting