Redmine 更新編譯 psych 時,發生在 CentOS 8 找不到 yaml.h 的錯誤,該怎麼辦呢?

嚴格地來說,自己是完全不知道為什麼突然會需要 psych 這個套件,只看到更新的過程中出現 Fetching psych 5.1.1.1 的訊息,接著就看到編譯 psych 的時候出現 yaml.h not found 的錯誤了,由於是第一次看到這個訊息,所以將解決這個問題的過程記錄下來做為日後類似訊息的參考之用。

問題分析與解決方案

由於自己安裝的系統是 CentOS 8 所以就先檢查一下是否有安裝 libyaml 相關的套件:

$ dnf list libyaml*
Updating Subscription Management repositories.
Last metadata expiration check: 1:18:45 ago on Wed 29 Nov 2023 01:45:41 AM UTC.
Installed Packages
libyaml.x86_64 0.1.7-5.el8 @baseos
Available Packages
libyaml.i686 0.1.7-5.el8 baseos

可以看到系統中是有安裝 libyaml 套件的,所以猜想找不到 yaml.h 應該是沒有安裝 libyaml-devel 套件吧! 所以就試著安裝看看:

$ dnf install libyaml-devel
Updating Subscription Management repositories.
Last metadata expiration check: 1:21:10 ago on Wed 29 Nov 2023 01:45:41 AM UTC.
No match for argument: libyaml-devel
Error: Unable to find a match: libyaml-devel

這就絕了,居然沒有 libyam-devel 套件可裝,這其實是不太可能發生的事情。所以找找看有沒有相關的資訊。於是乎就發現原來 libyaml-devel 被 CentOS 8 藏在 PowerTools 這個 repository 之中,而 CentOS 8 預設是不啟用 PowerTools repository 的,所以改用這樣安裝:

$ yum --enablerepo=powertools install libyaml-devel libffi-devel
Updating Subscription Management repositories.
CentOS Stream 8 - PowerTools 19 MB/s | 6.6 MB 00:00
Last metadata expiration check: 0:00:01 ago on Wed 29 Nov 2023 03:10:23 AM UTC.
Dependencies resolved.
===============================================================================
Package Architecture Version Repository Size
===============================================================================
Installing:
libffi-devel x86_64 3.1-24.el8 baseos 29k
libyaml-devel x86_64 0.1.7-5.el8 powertools 100k
Transaction Summary
===============================================================================
Install 2 Packages
Total download size: 129 k
Installed size: 1.0 M
Is this ok [y/N]: y
Installed:
libffi-devel-3.1-24.el8.x86_64 libyaml-devel-0.1.7-5.el8.x86_64
Complete!

接著再去更新 Redmine 就可以正確編譯 psych 5.1.1.1 囉!

參考資料

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料