fpm não lida com dependências

2

Li os documentos e outros tutoriais para tentar obter fpm para lidar com dependências enquanto constrói pacotes debian, mas falha sempre.

meu build.sh

#!/bin/bash

# constants
ITERATION=1
CODEVER=0.006

DIRBUILD=/home/chicks/Documents/build-proxwrap
DIRGIT=/home/chicks/Documents/git/wrap_proxmox
DEPS=(
        "libio-prompt-perl (>= 0.997002-1)"
        "perl-doc (>= 5.18.2-2ubuntu1.1)"
        "liburi-escape-xs-perl (>= 0.11-1)"
        "libjson-perl (>= 2.61-1)"
        "libhttp-message-perl (>= 6.06-1)"
        "libwww-perl (>= 6.05-2)"
)

PATH="$PATH:/home/chicks/.gem/ruby/2.3.0/bin"

# clean dirs
rm -rf $DIRBUILD
mkdir -p $DIRBUILD || exit 1
mkdir -p $DIRBUILD/usr/bin || exit 1
mkdir -p $DIRBUILD/opt/lib/perl5 || exit 1

ARG_DEPS=""
for index in 'seq 1 5'
do
        ARG_DEPS="$ARG_DEPS -d 'deb:${DEPS[$index]}'"
done
#echo $DIRGIT
echo $ARG_DEPS

# build directory tree
cd $DIRBUILD/usr/bin
for file in $(cd $DIRGIT/bin; ls); do
        if echo $file | grep '.sh$' > /dev/null
        then
                echo leaving $file out of package
                continue
        fi
        cat $DIRGIT/bin/$file | sed -e "s/use lib '..\/lib';/use lib '\/opt\/lib\/perl5';/" > $file
        chmod +x $file
done

cd $DIRBUILD/opt/lib/perl5
cp -pr $DIRGIT/lib/* .
pwd
ls

# build package
cd $DIRGIT
OUTDEB=tm-proxwrap_${CODEVER}-${ITERATION}_amd64.deb
rm $OUTDEB
echo about to build $OUTDEB from $DIRBUILD
echo ""
echo running fpm -s dir -t deb -n tm_proxwrap -v $CODEVER $ARG_DEPS --iteration $ITERATION -C $DIRBUILD usr opt
fpm -s dir -t deb -n tm_proxwrap -v $CODEVER $ARG_DEPS --iteration $ITERATION -C $DIRBUILD usr opt
echo ""
ls -lh $OUTDEB
dpkg -c $OUTDEB

saída com mensagem de erro

Instalei o fpm 1.6.1 via gem no Ubuntu 16.04 LTS.

$ ./build.sh 
-d 'deb:perl-doc (>= 5.18.2-2ubuntu1.1)' -d 'deb:liburi-escape-xs-perl (>= 0.11-1)' -d 'deb:libjson-perl (>= 2.61-1)' -d 'deb:libhttp-message-perl (>= 6.06-1)' -d 'deb:libwww-perl (>= 6.05-2)'
leaving build.sh out of package
leaving install.sh out of package
/home/chicks/Documents/build-proxwrap/opt/lib/perl5
Net  Telmate
rm: cannot remove 'tm-proxwrap_0.006-1_amd64.deb': No such file or directory
about to build tm-proxwrap_0.006-1_amd64.deb from /home/chicks/Documents/build-proxwrap

running fpm -s dir -t deb -n tm_proxwrap -v 0.006 -d 'deb:perl-doc (>= 5.18.2-2ubuntu1.1)' -d 'deb:liburi-escape-xs-perl (>= 0.11-1)' -d 'deb:libjson-perl (>= 2.61-1)' -d 'deb:libhttp-message-perl (>= 6.06-1)' -d 'deb:libwww-perl (>= 6.05-2)' --iteration 1 -C /home/chicks/Documents/build-proxwrap usr opt
All flags should be before the first argument (stray flags found: ["-d", "-d", "-d", "-d", "--iteration", "-C"] {:level=>:warn}
Invalid package configuration: Cannot package the path './(>=', does it exist? {:level=>:error}

Recebi erros semelhantes ao sair de deb: . Quando eu não tinha os números de versão incluídos, eu precisava do deb: , mas isso levava a erros ao tentar instalar o pacote, porque não conseguia encontrar as dependências. Além de dependências, funciona bem.

  • existe uma maneira de obter fpm para aceitar minhas dependências?
  • existe um sistema mais fácil para construir pacotes Debian?
por chicks 06.07.2016 / 20:30

1 resposta

2

Mesmo que esteja ecoando os parâmetros de dependência com aspas, a mensagem de erro faz parecer que o fpm está perdendo aspas em seus nomes de dependência em algum lugar, pois parece estar tentando usar ./(>= como um arquivo. Experimente

DEPS=(
        '"libio-prompt-perl (>= 0.997002-1)"'
        '"perl-doc (>= 5.18.2-2ubuntu1.1)"'
        '"liburi-escape-xs-perl (>= 0.11-1)"'
        '"libjson-perl (>= 2.61-1)"'
        '"libhttp-message-perl (>= 6.06-1)"'
        '"libwww-perl (>= 6.05-2)"'
)

para adicionar uma camada extra de aspas e ver se isso ajuda.

    
por 06.07.2016 / 22:36