내 프로젝트에서 데비안을 사용하기 위해 debuild 명령을 실행하려고 합니다. 그러나 debuild 명령을 실행하면 다음과 같은 오류가 발생합니다.
hoseopjeong@hoseopjeong-VirtualBox:~/Documents/HoseopJeong_debian_lab9/debianlaboration9-0.0$ debuild
dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: source package debianlaboration9
dpkg-buildpackage: source version 0.0-1
dpkg-buildpackage: source distribution UNRELEASED
dpkg-buildpackage: source changed by Ho Seop Jeong <my email>
dpkg-source --before-build debianlaboration9-0.0
dpkg-buildpackage: host architecture i386
fakeroot debian/rules clean
dh clean
dh_testdir
dh_auto_clean
make -j1 distclean
make[1]: Entering directory '/home/hoseopjeong/Documents/HoseopJeong_debian_lab9/debianlaboration9-0.0'
rm -f electrotest
make[1]: Leaving directory '/home/hoseopjeong/Documents/HoseopJeong_debian_lab9/debianlaboration9-0.0'
dh_clean
rm -f debian/debhelper-build-stamp
rm -f debian/debianlaboration9.substvars
rm -f debian/debianlaboration9.*.debhelper
rm -rf debian/debianlaboration9/
rm: cannot remove 'debian/debianlaboration9/usr/electrotest_standalone': Permission denied
dh_clean: rm -rf debian/debianlaboration9/ returned exit code 1
debian/rules:9: recipe for target 'clean' failed
make: *** [clean] Error 25
dpkg-buildpackage: error: fakeroot debian/rules clean gave error exit status 2
debuild: fatal error at line 1376:
dpkg-buildpackage -rfakeroot -D -us -uc failed
내 메이크파일은 다음과 같습니다.
prefix = /usr/local
all: electrotest
electrotest: ./src/electrotest_standalone.c
gcc -o electrotest_standalone ./src/electrotest_standalone.c -lm
install:electrotest
install -D electrotest_standalone \
$(DESTDIR)$(prefix)/bin/electrotest_standalone
clean:
-rm -f electrotest
distclean:clean
uninstall:
-rm -f $(DESTDIR)$(prefix)/bin/electrotest_standalone
PHONY: all install clean distclean uninstall
이것은 내 데비안 규칙 파일입니다
#!/usr/bin/make -f
# You must remove unused comment lines for the released package.
export DH_VERBOSE = 1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
%:
dh $@
#override_dh_auto_install:
# dh_auto_install -- prefix=/usr
#override_dh_install:
# dh_install --list-missing -X.pyc -X.pyo
override_dh_auto_install:
dh_auto_install -- prefix=/usr
그래서 터미널에서 생성된 오류를 볼 때 제가 올바르게 이해했다면 debuild는 makefile에 정의된 clean을 실행하여 debian 폴더 내에 생성된 elecrotest를 제거하려고 시도합니다. 그러나 폴더는 권한이 제한된 폴더이며 정리 후에는 권한 거부 오류가 표시됩니다.
이 게시물을 확인했습니다디빌드가 정리를 수행하는 것을 방지하는 방법은 무엇입니까?대답 중 하나는 다음과 같습니다.
override_dh_clean:
하지만 이것이 빌드에 문제를 일으킬 수 있다고 생각하기 때문에 이것이 올바른 접근 방식인지 확실하지 않습니다. 데비안 생성 폴더에 대한 권한을 변경하는 유일한 방법은 chmod를 사용하는 것입니까? 아니면 이 문제를 해결할 수 있는 현명한 아이디어가 있습니까? 해결책을 찾고 있는 것이 아닙니다..해결책이 필요합니다.
AB가 댓글에서 언급했듯이 저는 그렇게 했고 ls -ld debian/debianlaboration9/usr/
이 결과를 얻었습니다.
drwxr-xr-x 2 root root 4096 jun 14 03:19