Problema ao criar o pacote da biblioteca

7

Estou com problemas para criar um pacote para uma biblioteca compartilhada.

Eu corri dh_make e editei os arquivos. No entanto, quando vou construir o pacote, recebo o seguinte:

******@******-laptop:~/Documents/temp/jsoncpp/jsoncpp-0.5.0$ debuild
 dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value: 
dpkg-buildpackage: set LDFLAGS to default value: -Wl,-Bsymbolic-functions
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: source package jsoncpp
dpkg-buildpackage: source version 0.5.0-1
dpkg-buildpackage: source changed by ****** 
dpkg-buildpackage: host architecture amd64
 fakeroot debian/rules clean
dh  clean
   dh_testdir
   dh_auto_clean
   dh_clean
 dpkg-source -b jsoncpp-0.5.0
dpkg-source: info: using source format '1.0'
dpkg-source: info: building jsoncpp using existing jsoncpp_0.5.0.orig.tar.gz
dpkg-source: info: building jsoncpp in jsoncpp_0.5.0-1.diff.gz
dpkg-source: info: building jsoncpp in jsoncpp_0.5.0-1.dsc
 debian/rules build
dh  build
   dh_testdir
   dh_auto_configure
   dh_auto_build
make[1]: Entering directory '/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0'
test -d obj || mkdir obj
g++ -I ./include -c -o obj/json_reader.o src/lib_json/json_reader.cpp
g++ -I ./include -c -o obj/json_writer.o src/lib_json/json_writer.cpp
g++ -I ./include -c -o obj/json_value.o src/lib_json/json_value.cpp
ar -r libjsoncpp.a obj/json_reader.o obj/json_writer.o obj/json_value.o
ar: creating libjsoncpp.a
make[1]: Leaving directory '/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0'
   dh_auto_test
 fakeroot debian/rules binary
dh  binary
   dh_testroot
   dh_prep
   dh_installdirs
   dh_auto_install
make[1]: Entering directory '/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0'
sudo cp -r include/json --target-directory=/usr/include
ERROR: ld.so: object 'libfakeroot-sysv.so' from LD_PRELOAD cannot be preloaded: ignored.
cp libjsoncpp.a /usr/lib/libjsoncpp.a
cp: cannot create regular file '/usr/lib/libjsoncpp.a': Permission denied
make[1]: *** [install] Error 1
make[1]: Leaving directory '/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0'
dh_auto_install: make -j1 install DESTDIR=/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0/debian/tmp returned exit code 2
make: *** [binary] Error 29
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
debuild: fatal error at line 1340:
dpkg-buildpackage -rfakeroot -D -us -uc failed

O problema parece estar aqui:

  

ERRO: ld.so: o objeto 'libfakeroot-sysv.so' de LD_PRELOAD não pode ser pré-carregado: ignorado.
  cp libjsoncpp.a /usr/lib/libjsoncpp.a
  cp: não é possível criar o arquivo regular '/usr/lib/libjsoncpp.a': Permissão negada

... mas não tenho a menor idéia do problema.

O makefile é aqui , se necessário.

    
por Nathan Osman 04.08.2010 / 00:37

2 respostas

4

O Makefile que você está usando não está respeitando a variável DESTDIR - os pacotes nunca devem ser instalados diretamente no / usr no momento da compilação, mas sim colocar os arquivos em uma árvore temporária. Você mencionou que adicionou o Makefile sozinho - o caso usual é que você precisa fazer com que ele use a variável DESTDIR como um prefixo para todos os caminhos de instalação. Tendo olhado para as instruções de compilação do pacote, o pacote usa scons como um sistema de compilação, que é uma substituição das classificações para make. O dh_make provavelmente não tem um template para construir pacotes com isso, então você deve procurar por pacotes que o usem para construção, como o yafray, e veja suas debian / rules

Como as compilações de pacotes nunca são feitas como raiz, é melhor que esse erro seja exibido & amp; corrigido em vez de ter um pacote sobrescrevendo arquivos importantes à medida que o pacote é criado em um sistema de desenvolvedor desavisado.

    
por ajmitch 04.08.2010 / 04:34
0

Como você percebeu que os problemas estão aqui:

cp libjsoncpp.a /usr/lib/libjsoncpp.a

Você está chamando debbuild como usuário normal, que não tem direitos para gravar nesse diretório. Se você tentar sudo debbuild , deve funcionar.

    
por qbi 04.08.2010 / 01:51