Проблема, создающая пакет библиотеки

Я испытываю некоторые затруднения при создании пакета для общей библиотеки.

Я работал dh_make и отредактированный файлы. Однако, когда я иду для создания пакета, я получаю следующее:

******@******-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

Проблема, кажется, здесь:

ОШИБКА: ld.so: возразите, что 'libfakeroot-sysv.so' от LD_PRELOAD не может быть предварительно загружен: проигнорированный.
CP libjsoncpp.a/usr/lib/libjsoncpp.a
CP: не может создать регулярный файл '/usr/lib/libjsoncpp.a': Разрешение отклонено

... но у меня нет самой слабой идеи, какова проблема.

Make-файл здесь в случае необходимости.

7
задан 9 July 2012 в 17:09

2 ответа

Используемый вами Makefile не соответствует переменной DESTDIR - пакеты никогда не должны устанавливаться непосредственно в / usr во время сборки, а вместо этого помещать файлы во временное дерево. Вы упомянули, что добавили Makefile самостоятельно - обычно бывает так, что вам нужно, чтобы он использовал переменную DESTDIR в качестве префикса для всех путей установки. Изучив инструкции по сборке пакета, пакет использует scons в качестве системы сборки, которая является заменой для make. Скорее всего, dh_make не имеет шаблона для сборки пакетов с этим, поэтому вы должны искать пакеты, которые используют его для сборки, такие как yafray, и смотреть на их debian / rules

Поскольку сборки пакетов никогда не выполняются сделано как root, лучше показать эту ошибку & amp; исправлено, вместо того, чтобы пакет перезаписывал важные файлы, так как пакет собирается в системе ничего не подозревающего разработчика.

0
ответ дан 9 July 2012 в 17:09

Как вы выяснили, проблема заключается в следующем:

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

Вы звоните debbuild как обычный пользователь, который не имеет прав на запись в этот каталог. Если вы попробуете sudo debbuild, это должно сработать.

0
ответ дан 9 July 2012 в 17:09

Другие вопросы по тегам:

Похожие вопросы: