Work around pip installed pkgs on Rackspace image

The upstream rackspace image has a bunch of pip installed packages as
cloud-init was installed via pip due to a lack of available system
packages.  This can break further system package installs, such as
markdown, which fails with

---
 Error unpacking rpm package python-markdown-2.4.1-1.el7.noarch
  error: unpacking of archive failed on file
   /usr/lib/python2.7/site-packages/Markdown-2.4.1-py2.7.egg-info: cpio: rename
---

Because that is a directory for the pip-installed package, and a file
in the RPM

Remove all pip installed packages on rackspace images before we start
to work around this.  I have filed an upstream issue with Rackspace
(ticket-id 140804-ord-0000134) and the issue is being worked on.

Change-Id: Id12d175143ed3b8e024d057d65fa67505c08042a
This commit is contained in:
Ian Wienand 2014-08-04 15:44:58 +10:00
parent a36167e381
commit bdc90c5f02
2 changed files with 15 additions and 0 deletions

View File

@ -466,6 +466,13 @@ function is_arch {
[[ "$(uname -m)" == "$1" ]] [[ "$(uname -m)" == "$1" ]]
} }
# Quick check for a rackspace host; n.b. rackspace provided images
# have these Xen tools installed but a custom image may not.
function is_rackspace {
[ -f /usr/bin/xenstore-ls ] && \
sudo /usr/bin/xenstore-ls vm-data | grep -q "Rackspace"
}
# Determine if current distribution is a Fedora-based distribution # Determine if current distribution is a Fedora-based distribution
# (Fedora, RHEL, CentOS, etc). # (Fedora, RHEL, CentOS, etc).
# is_fedora # is_fedora

View File

@ -216,6 +216,14 @@ if is_ubuntu; then
echo 'APT::Acquire::Retries "20";' | sudo tee /etc/apt/apt.conf.d/80retry echo 'APT::Acquire::Retries "20";' | sudo tee /etc/apt/apt.conf.d/80retry
fi fi
# upstream Rackspace centos7 images have an issue where cloud-init is
# installed via pip because there were not official packages when the
# image was created (fix in the works). Remove all pip packages
# before we do anything else
if [[ $DISTRO = "rhel7" && is_rackspace ]]; then
(sudo pip freeze | xargs sudo pip uninstall -y) || true
fi
# Some distros need to add repos beyond the defaults provided by the vendor # Some distros need to add repos beyond the defaults provided by the vendor
# to pick up required packages. # to pick up required packages.