배경 지식을 제공하기 위해 wkhtmltopdf를 사용하여 로컬 파일을 파이프라인/게시를 위한 증거로 사용할 .html
파일로 변환합니다..pdf
그러나 생성된 이 HTML에는 일부 원격 스크립트와 소스가 있습니다. 따라서 wkhtmltopdf는 이를 Azure 파이프라인에 추가하려고 합니다. 우리 파이프라인은 RHEL을 실행합니다.
이제 버전 0.12.4에서 발생하는 버그는 일종의 SSL 버그이며 버전 0.12.5에서 수정되었습니다. 그래서 버전 0.12.6을 설치하려고 시도했는데 제대로 작동했지만 실행할 때 다음 오류가 발생했습니다.
tools/wkhtmltopdf: error while loading shared libraries: libpng15.so.15: cannot open shared object file: No such file or directory
CentOS/RHEL(YUM 및 RPM 패키지 관리자)의 경우 libpng-devel을 설치해야 한다는 것을 알았습니다. 그래서 나는 이것을 시도했습니다 :
yum --showduplicates list libpng-devel
yum -y install libpng-devel
RHEL 시스템에 버전이 설치 되었지만 libpng-devel-2:1.6.34-5.el8.x86_64
PDF를 구문 분석하려고 할 때 여전히 동일한 오류가 발생합니다.
나는 Linux에 대한 경험이 많지 않고 이 문제를 해결하는 방법을 잘 모릅니다. 또한 다른 버전이 있는지 검색해 보았습니다. 하지만 Windows 개발 시스템이 있으므로 무엇이든 시도하려면 파이프라인을 거쳐야 합니다(매회 약 10분 소요).
나는 또한 SE를 보았고 이것이 가까운 것으로 나타났습니다."공유 라이브러리 로드 오류: libpng15.so.15: 공유 개체 파일을 열 수 없습니다. 해당 파일이나 디렉터리가 없습니다."?그러나 답변으로 판단하면 다음에 무엇을 해야할지 잘 모르겠습니다.
TLDR: 그렇다면 이 오류를 어떻게 수정하나요? 도서관이 필요하지만 내가 생각하는 도서관이 옳지 않습니까?
편집: 우리는 Azure에서 RHEL을 실행 중이고 다른 누군가가 wkhtmltopdf 버전 0.12.6을 사용하여 아티팩트를 만들었습니다.
편집 2: 출력yum repolist
창고 ID | 창고 이름 |
---|---|
ubi-8-앱스트림 | ubi-8-앱스트림 |
ubi-8-바소스 | ubi-8-바소스 |
ubi-8-코드 레디 빌더 | Red Hat Universal Base Image 8(RPM) - CodeReady Builder |
ubi-8-바소스 | 41kB/초 - 3.8kB 00:00 |
ubi-8-바소스 | 3.9MB/초 - 798kB 00:00 |
ubi-8-앱스트림 | 51kB/초 - 4.2kB 00:00 |
ubi-8-앱스트림 | 8.0MB/초 - 2.6MB 00:00 |
Red Hat Universal Base Image 8(RPM) - CodeRea | 37kB/초 - 3.8kB 00:00 |
매개변수 불일치에 대한 출력 yum install wkhtmltopdf -y
: wkhtmltopdf 오류: 일치하는 항목을 찾을 수 없습니다: wkhtmltopdf
해결책:
업로드한 0.12.6 패키지가 깨져서 새 rpm 패키지를 업로드했더니 바로 작동하더군요.
답변1
설치한 버전으로 볼 때 libpng-devel
RHEL 8을 사용하고 있는 것으로 보입니다.
그런데 설치한 런타임 라이브러리 버전이 너무 오래되었습니다. 개발 패키지는 필요하지 않으며 런타임 라이브러리를 제공하는 일반 패키지만 있으면 됩니다.
appstream
저장소를 활성화했다고 가정하면 다음이 필요합니다.libpng15.i686
yum install libpng15.i686 -y
그러면 /usr/lib/libpng15.so.15
기계에서 볼 수 있습니다.
앞으로 라이브러리/헤더/바이너리 등을 제공하는 패키지를 살펴보고 싶다면
yum provides */file_name
답변2
이 오류는 "라이브러리 libpng15.so.15가 누락되었습니다"를 의미합니다. 귀하의 설치 설명은 한 라이브러리 버전을 다른 라이브러리 버전으로 간단히 바꿀 수 없다는 사실을 깨닫지 못하는 것처럼 들립니다.
프로그램에는 빌드된 것과 정확히 동일한 버전의 공유 라이브러리(또는 ABI 호환 버전, 그러나 기본적으로 "정확히 동일한 버전")가 필요합니다. 따라서 .15 버전용으로 빌드된 wkhtmltopdf를 다른 버전과 함께 사용할 수 없습니다!
따라서 보유하고 있는 libpng 버전과 정확히 일치하도록 빌드된 wkhtmltopdf를 다시 설치해야 합니다.
Linux 배포판의 핵심은 설치하는 소프트웨어가 필요한 라이브러리 버전을 가져오는지 확인하는 것입니다. 그러므로,
그래서 버전 0.12.6을 설치하려고했는데 작동합니다.
아니요, 그렇지 않습니다. 정확히 그렇게 보입니다. libpng와 같은 시스템 라이브러리를 ABI 호환되지 않는 버전으로 교체할 수는 없습니다.
답변3
나는 이것을 찾았고 그것은 나에게 효과적입니다.
sudo -i yum install compat-openssl10.x86_64