데비안 패키지 문제: '/'에 설치되는 파일

데비안 패키지 문제: '/'에 설치되는 파일

최근에 PPA를 배치하기 위해 작은 Python 유틸리티를 패키지하려고 시도했으며 거의 ​​작동했지만 패키지를 /usr/bin대신 바이너리(chmod +x Python 스크립트)를 설치하는 데 문제가 있습니다. , 에 설치됩니다 /. 이 디렉토리 구조가 있습니다 ->http://db.tt/0KhIYQL.

내 패키지 Makefile은 다음과 같습니다.

TARGET=usr/bin/txtrevise

make:
      chmod +x $(TARGET)

install:
      cp -r $(TARGET) $(DESTDIR)

$(DESTDIR)내가 이해한 바에 따르면, 나는 debuild를 실행할 때 debian 하위 디렉터리에 파일을 배치하는 데 이를 사용했습니다 .

usr/bin내 패키지의 루트 디렉터리에 있는 폴더에 실행 파일인 txtrevise 스크립트가 있습니다. 나는 Makefile과 usr/bin/textrevise내 tarball인 txtrevise_1.1.original.tar.gz도 가지고 있습니다.

그러나 이것을 빌드하고 데비안 패키지 내부를 살펴보면 txtrevise는 항상 usr/bin 대신 패키지의 루트에 위치하고 /usr/bin 대신 /에 설치됩니다.

스크립트를 어떻게 디빌드하고 올바른 위치에 배치합니까?

답변1

문제는 호출에 있습니다. 이렇게 하면 cp $(TARGET) $(DESTDIR)디렉터리 아래의 파일이 복사됩니다. 즉, 접두사를 건너뜁니다. 다음과 같은 디렉터리 구조를 유지해야 합니다.textrevise$(DESTDIR)/usr/bin

install:
    # ensure the destination directory exists
    mkdir -p $(DESTDIR)/usr/bin
    # copy the program to its final destination
    cp $(TARGET) $(DESTDIR)/$(TARGET)
    # ensure the program and directories have the correct permissions
    chmod a+rx $(DESTDIR)/$(TARGET)

다른 사람이 사용할 패키지를 만들 때 모든 디렉터리와 바이너리에 대한 권한이 다음을 기반으로 하는지도 확인해야 합니다.데비안 정책;이 경우에는 및 스키마 (및 디렉토리 sum ) $(DESTDIR)/usr/bin/textrevise에 속 하려고 합니다 .root:root0755$(DESTDIR)/usr$(DESTDIR)/usr/bin

한 번 살펴보고 싶을 수도 있습니다 설치하다더 간결한 Makefile 섹션을 작성하기 위해 설치된 파일의 소유자, 그룹 및 모드를 더 효과적으로 제어할 수 있는 명령입니다.

관련 정보