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
하지만 궁금한 점이 있으시면 언제든지 댓글을 남겨주세요.