Nat*_*man 7 package-management
我在为共享库创建包时遇到了一些问题。
我运行dh_make并编辑了文件。但是,当我去构建包时,我得到以下信息:
******@******-笔记本电脑:~/Documents/temp/jsoncpp/jsoncpp-0.5.0$ debuild dpkg-buildpackage -rfakeroot -D -us -uc dpkg-buildpackage:将 CFLAGS 设置为默认值:-g -O2 dpkg-buildpackage:将 CPPFLAGS 设置为默认值: dpkg-buildpackage:将 LDFLAGS 设置为默认值:-Wl,-Bsymbolic-functions dpkg-buildpackage:将 FFLAGS 设置为默认值:-g -O2 dpkg-buildpackage:将 CXXFLAGS 设置为默认值:-g -O2 dpkg-buildpackage: 源包 jsoncpp dpkg-buildpackage:源版本 0.5.0-1 dpkg-buildpackage: 源代码更改为****** dpkg-buildpackage:主机架构 amd64 fakeroot debian/规则干净 卫生干净 dh_testdir dh_auto_clean dh_clean dpkg-source -b jsoncpp-0.5.0 dpkg-source:信息:使用源格式“1.0” dpkg-source: info: 使用现有的 jsoncpp_0.5.0.orig.tar.gz 构建 jsoncpp dpkg-source:信息:在 jsoncpp_0.5.0-1.diff.gz 中构建 jsoncpp dpkg-source:信息:在 jsoncpp_0.5.0-1.dsc 中构建 jsoncpp Debian/规则构建 dh 构建 dh_testdir dh_auto_configure dh_auto_build make[1]: 进入目录`/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0' 测试 -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:创建 libjsoncpp.a make[1]: 离开目录`/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0' dh_auto_test fakeroot debian/rules 二进制文件 dh 二进制 dh_testroot dh_prep dh_installdirs dh_auto_install make[1]: 进入目录`/home/******/Documents/temp/jsoncpp/jsoncpp-0.5.0' 须藤 cp -r 包含/json --target-directory=/usr/include 错误:ld.so:无法预加载来自 LD_PRELOAD 的对象“libfakeroot-sysv.so”:忽略。 cp libjsoncpp.a /usr/lib/libjsoncpp.a cp:无法创建常规文件`/usr/lib/libjsoncpp.a':权限被拒绝 make[1]: *** [安装] 错误 1 make[1]: 离开目录`/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 返回退出代码 2 make: *** [二进制] 错误 29 dpkg-buildpackage: error: fakeroot debian/rules binary 给出错误退出状态 2 解构:第 1340 行的致命错误: dpkg-buildpackage -rfakeroot -D -us -uc 失败
问题似乎在这里:
错误:ld.so:无法预加载来自 LD_PRELOAD 的对象“libfakeroot-sysv.so”:忽略。
cp libjsoncpp.a /usr/lib/libjsoncpp.a
cp:无法创建常规文件`/usr/lib/libjsoncpp.a':权限被拒绝
……但我一点也不知道问题是什么。
如果需要,makefile 在这里。
您使用的 Makefile 不考虑 DESTDIR 变量 - 软件包不应在构建时直接安装到 /usr 中,而是将文件放入临时树中。您已经提到您自己添加了 Makefile - 通常的情况是您需要使其使用 DESTDIR 变量作为所有安装路径的前缀。查看了包构建指令后,发现该包使用 scons 作为构建系统,它是 make 的某种替代品。dh_make 很可能没有用于构建软件包的模板,因此您应该寻找使用它来构建的软件包,例如 yafray,并查看它们的 debian/rules
由于包构建永远不会以 root 身份完成,因此最好显示并纠正此错误,而不是让包覆盖重要文件,因为包是在毫无戒心的开发人员系统上构建的。
| 归档时间: |
|
| 查看次数: |
4086 次 |
| 最近记录: |