在 RHEL 上使用 wkhtmltopdf 返回 libpng15.so.15 未找到共享庫
為了提供一點背景知識,我正在使用 wkhtmltopdf 將本地轉換
.html
為 a但是,生成的這個 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
這確實
libpng-devel-2:1.6.34-5.el8.x86_64
在 RHEL 機器上安裝了版本,但是在嘗試解析 PDF 時我仍然遇到相同的錯誤。我對 Linux 並沒有太多經驗,我真的不知道如何解決這個問題,我也嘗試搜尋還有哪些其他版本。但是我有一台 Windows 開發機器,所以嘗試任何事情都必須通過管道(每次大約需要 10 分鐘)。
我也查看了 SE,發現這很接近:“載入共享庫時出錯:libpng15.so.15:無法打開共享對象文件:沒有這樣的文件或目錄”?但是從答案中我不確定下一步該怎麼做。
TLDR:那麼我該如何解決這個錯誤呢?我需要圖書館,但這不是我認為的正確的圖書館?
編輯:我們在 Azure 中執行 RHEL,其他人製作了一個具有 wkhtmltopdf build 0.12.6 的 Artifact。
編輯 2:輸出自
yum repolist
參數不匹配的輸出
yum install wkhtmltopdf -y
:wkhtmltopdf 錯誤:無法找到匹配項:wkhtmltopdf解決方案:
上傳的 0.12.6 包壞了,我上傳了一個新的 rpm 包,直接就可以了。
此錯誤顯示“缺少庫 libpng15.so.15”。您的安裝描述聽起來很可能您沒有意識到您不能簡單地將一個庫版本換成另一個。
程序需要它們的共享庫與它們建構時使用的版本完全相同(或與 ABI 兼容的版本,但這基本上是“完全相同的版本”)。所以不能只使用針對 .15 版本建構的 wkhtmltopdf 和任何其他版本!
因此,您需要重新安裝完全針對您擁有的 libpng 版本建構的 wkhtmltopdf。
linux 發行版的全部意義在於確保您安裝的軟體引入了它需要的庫版本。因此,
所以我嘗試安裝有效的 0.12.6 版本
不,它沒有,這正是它的表現方式。您不能只將 libpng 等系統庫替換為與 ABI 不兼容的版本。
從
libpng-devel
您安裝的版本來看,您使用的是 RHEL 8。話雖如此,您安裝的執行時庫的版本太舊了。您不需要開發包,只需要提供執行時庫的正常包。
假設您
appstream
啟用了 repo,您需要libpng15.i686
yum install libpng15.i686 -y
之後,您將能夠
/usr/lib/libpng15.so.15
在機器上看到。將來,如果您想查看提供庫/標頭檔/二進製文件或其他任何內容的包,
yum provides */file_name