Skip to content

mbr/pimp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Python Install Magic Package

Python packaging is complicated and often clashes with distro package managers. To make things worse, now there's pimp. It uses pip and distutils http://docs.python.org/2/library/distutils.html to download packages from PyPI and build RPMs out of them, which it installs using the system's package management.

Requirements and Installation

Every self-respecting pimp needs a Fedora (purple color recommended), no other distributions have even been tested. To install pimp, first install pip and virtualenv using yum:

yum install python-pip virtualenv

After that, we'll bootstrap pimp with itself:

TMPDIR=`mktemp -d` && virtualenv --distribute $TMPDIR && \
$TMPDIR/bin/pip install pimp -U &&\
$TMPDIR/bin/pimp --python /usr/bin/python install pimp -U &&\
rm -rf $TMPDIR

This will create temporary directory and a new virtual environment in it, install pimp from PyPI, use pimp to package itself, install that package and remove the temporary directory.

The good parts

/usr/local aside, there shouldn't be any files in your /usr directory that aren't managed by the package manager (and even then I'm not even fond of installing stuff into /usr/local). When you use pip to install packages system-wide, they end up /usr, without the local-part.

pimp tries to remedy this situation, by giving you a way to install packages through auto-generated rpm-packages that can be uninstalled cleanly.

The bad parts

As of spring 2013, Python packaging is a complete mess (just google distutils, distutils2, setuptools, distlib, packaging, pip, easy_install or any other crazy piece of software messing with packages). Since pimp largely relies on some of these, there are a few issues described below. The general message here is though, only use pimp for the one thing it is intended: Installing the occasional script system-wide.

Only use PyPI-packages

pip does not support local filesystem packages or checkouts using git+git://-urls in the same way it does PyPI downloads. This makes it hard to support these, so for now, only PyPI packages are supported.

RPM-names

For reasons unknown, distutils' bdist_rpm command allows a lot of customization - but not the RPM name. Your best is hoping that you do not run into a naming conflict with another package. On the bright side, you'll be warned by rpm beforehand and nothing should break.

Useful things

pimp sets the release-version of every package it creates to pimp. This means that you can list all packages installed by it using:

rpm -qa release="pimp"

Uninstalling all these is just as simple:

sudo rpm -ve `rpm -qa release="pimp"`

About

pimp installs magic packages. Install rpm packages from PyPi. No refunds.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages