Freebsd 포팅 및 pkg-static

Freebsd 포팅 및 pkg-static

makemkv를 freebsd 10.2로 포팅할 예정이므로 다음 makefile을 작성했습니다.

# New ports collection makefile for:    makemkv
# Date created:             05 Mar 2012
# Date Updated:             10 April 2016
# Whom:                 kappei84
#
# $FreeBSD$
#

PORTNAME=   makemkv
PORTVERSION=    1.9.9
CATEGORIES= multimedia
DISTNAME=   ${PORTNAME}-oss-${PORTVERSION}${EXTRACT_SUFFIX}
MASTER_SITES=   http://www.makemkv.com/download/

# Prefix for the pkp-plist
#PLIST_SUB= DATADIR=${PREFIX}

# Missing qt4/qt5 dependency check in case the port is built with --enable-gui
BUILD_DEPENDS=  ffmpeg${FFMPEG_SUFX}:${PORTSDIR}/multimedia/ffmpeg${FFMPEG_SUFX}

MAINTAINER= 
COMMENT=    Make MKV from Blu-ray and DVD

GNU_CONFIGURE=  yes
OPTIONS_DEFINE= GUI

.include <bsd.port.options.mk>

.if ${PORT_OPTIONS:MGUI}
CONFIGURE_ARGS+=    --enable-gui
.else
CONFIGURE_ARGS+=    --disable-gui
.endif # GUI

# flags for the configure script
CPPFLAGS+=  -I${LOCALBASE}/include
LIBS+=      -L${LOCALBASE}/lib

MAKEFILE=   Makefile
USES= gmake
USE_OPENSSL=    yes
USE_LDCONFIG=   yes
USE_QT_VER= 4
QT_COMPONENTS=  qmake gui svg webkit xml moc uic rcc imageformats

do-install:
.if ${PORT_OPTIONS:MGUI}
    ${INSTALL_PROGRAM} ${WRKSRC}/out/${PORTNAME} ${PREFIX}/bin
.endif
.for i in libdriveio.so.0 libmakemkv.so.1 libmmbd.so.0
    ${INSTALL_PROGRAM} ${WRKSRC}/out/${i} ${PREFIX}/lib
.endfor
    @ cd ${PREFIX}/lib ; \
    ${LN} -sf libdriveio.so.0 libdriveio.so ; \
    ${LN} -sf libmakemkv.so.1 libmakemkv.so ; \
    ${LN} -sf libmmbd.so.0 libmmbd.so

.include <bsd.port.mk>

이 메이크파일은 세 가지 라이브러리를 생성하는 데 필요한 모든 소스 파일을 컴파일하고 생성하는 원본 애플리케이션의 Makefile을 참조합니다.libdriveio.so,libmakemkv.so.1그리고libmmbd.so.0에 복사됩니다/usr/로컬/lib설치 후. 아래 로그에서 볼 수 있듯이 이 시점까지는 모든 것이 잘 실행되었습니다.

gmake[2]: Leaving directory '/usr/ports/multimedia/makemkv/work/makemkv-oss-1.9.9'
===>  Staging for makemkv-1.9.9
===>   Generating temporary packing list
install  -s -m 555 /usr/ports/multimedia/makemkv/work/makemkv-oss-1.9.9/out/libdriveio.so.0 /usr/local/lib
install  -s -m 555 /usr/ports/multimedia/makemkv/work/makemkv-oss-1.9.9/out/libmakemkv.so.1 /usr/local/lib
install  -s -m 555 /usr/ports/multimedia/makemkv/work/makemkv-oss-1.9.9/out/libmmbd.so.0 /usr/local/lib

내가 얻지 못하는 것은 설치 후 실행되는 마지막 단계인 등록 단계입니다.

====> Compressing man pages (compress-man)
===>  Installing for makemkv-1.9.9
===>  Checking if makemkv already installed
===>   Registering installation for makemkv-1.9.9
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libdriveio.so: No such file or directory
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libdriveio.so.0: No such file or directory
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libmakemkv.so: No such file or directory
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libmakemkv.so.1: No such file or directory
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libmmbd.so.0: No such file or directory
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libmmbd.so: No such file or directory
*** Error code 74

Stop.
make[1]: stopped in /usr/ports/multimedia/makemkv
*** Error code 1

Stop.
make: stopped in /usr/ports/multimedia/makemkv

보시다시피 pkg-plist라는 파일에 나열된 일부 파일을 예상 경로에서 찾을 수 없어 설치가 실패합니다.

pkg-static이 확인해야 하는 기본 폴더를 피하거나 변경하는 방법이 있습니까? 첫 번째 포트이므로 이 단계를 수행하고 pkg-plist가 있어야 합니까? 아니면 기본 라이브러리가 올바른 경로에 복사되었으므로 해당 파일도 삭제할 수 있습니까?

답변1

귀하의 Makefile이 직접 설치를 시도하는 것 같습니다 ${PREFIX}. 이것은아니요요즘 일이 어떻게 이루어지나요?

에 설치해야 합니다 . 이는 대상 디렉토리가 미러링되는 ${STAGEDIR}${PREFIX}준비 영역입니다 . ${WRKDIR}호출된 기본 항목은 make install거기에서 파일을 가져오며, 이것이 등록이 작동하는 방식입니다.

자세한 내용은 여기를 참조하세요:

https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/special.html#staging

하지만 궁금한 점이 있으시면 언제든지 댓글을 남겨주세요.

관련 정보