Cirurgia de pacote deb

Eu mantenho muitos pacotes no Path. Normalmente gosto de construir do zero usando a incrível ferramenta FPM escrita por Jordan Sissel. Às vezes eu gosto de fazer cirurgias em pacotes deb existentes do Ubuntu. É assim que eu atualizo o pacote supervisor Ubuntu / Debian desatualizado da versão 3.0a8-1.1 para a versão 3.0b1 mais recente.

  1. Prepare seu espaço de trabalho. Configure um novo servidor Ubuntu 12.04 vagrant. Certifique-se de ter o FPM e o python-setuptools instalados.

    vagrant init precise64
    vagrant up

    vagrant ssh

    sudo aptitude install
    -y build-essential python-setuptools
    sudo gem install fpm
  2. Baixe o pacote supervisor-3.0a mais antigo do seu apt repo explode-lo.

    mkdir -pv src/supervisor-3.0a/
    cd src
    /supervisor-3.0a/
    aptitude download supervisor

    ar xv supervisor_3
    .0a8-1.1_all.deb
  3. Construa o pacote supervisor-3.0b mais recente usando fpm e exploda-o.

    cd ..
    mkdir
    -pv supervisor-3.0b/
    cd supervisor
    -3.0b/
    fpm
    -s python -t deb supervisor
    ar xv python
    -supervisor_3.0b1_all.deb
    tar xvfz data
    .tar.gz
    tar xvfz control
    .tar.gz
  4. É hora de juntar os dois pacotes novamente. Estaremos usando a base do pacote Ubuntu original com scripts init, post e pré com binários do pacote mais recente.

    cd ../..
    mkdir
    -pv path-supervisor_3.0b_all/DEBIAN
    cd path
    -supervisor_3.0b_all/
    tar xvfz
    ../src/supervisor-3.0a/data.tar.gz
    tar xvfz
    ../src/supervisor-3.0a/control.tar.gz -C DEBIAN/
  5. Agora que temos uma base original não tarada, vamos substituir os binários pela versão 3.0b mais recente.

    rm -rv usr/
    mv
    -v ../src/supervisor-3.0b/usr .
  6. Atualize os arquivos md5 e de controle.

    find usr/ -type f -exec md5sum {} ; > DEBIAN/md5sums
    vi DEBIAN
    /control
  7. É hora de construir o pacote deb.

    cd ../
    dpkg
    -deb --build path-supervisor_3.0b_all/
    dpkg
    --info path-supervisor_3.0b_all.deb

    Package: path-supervisor
    Version: 3.0b1
    Architecture: all
    Maintainer: Richard Nghiem <richard@path.com>
    Installed-Size: 2382
    Depends: python-setuptools, python-meld3 (>= 0.6.5)
    Section: admin
    Priority: extra
    Homepage: http://supervisord.org/
    Description: A system for controlling process state
    Supervisor is a system for controlling and maintaining process state,
    similar to what init does
    , but not intended as an init replacement.
    .
    It will manage individual processess or groups of processes that
    need to be started
    and stopped in order, and it is possible to
    control individual process state via an rpc mechanism
    , thus allowing
    ordinary users to restart processes
    .