Установка FPM

Я использую CentOS 6, там есть сложности с старым Ruby, нужен rvm, чтобы обновить его.

yum groupinstall -y development
yum install ruby-devel gcc make rpm-build rubygems
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm reload
rvm install 2.1.0
rvm use 2.1.0 --default
gem install --no-ri --no-rdoc fpm

Пакуем зависимости

У меня зависимость от ipaddress, которого нет в epel.

fpm -s python -t rpm ipaddress

Пробуем собрать свой пакет

fpm -s python -t rpm netutils-linux

Чиним зависимости

Окей, PyYAML зовётся PyYAML, а не python-pyyaml (а импортируется как yaml), поэтому при установке имеем проблемы вида:

# yum install python-netutils-linux-2.3.1-1.noarch.rpm
...
Error: Package: python-netutils-linux-2.3.1-1.noarch (/python-netutils-linux-2.3.1-1.noarch)
           Requires: python-pyyaml
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

Спасёт нас удаление унаследованной питоньей зависимости и явное определение RPM-зависимости:

fpm -s python -t rpm -d PyYAML --python-disable-dependency pyyaml netutils-linux

Победа!

# yum install python-netutils-linux-2.3.1-1.noarch.rpm
...
Installed:
  python-netutils-linux.noarch 0:2.3.1-1
...
Complete!

Проблемы MacOS

Под MacOS fpm при конвертации python-репозитория в RPM-пакет делает RPM-пакет предназначенный для MacOS, который не устанавливается на CentOS. Решается сборкой RPM-пакета на внешнем сервере с CentOS.