Ubuntu 18.04升級systemctl(systemd)到v245

我們知道systemctl是基於systemd的,因爲我裝機的時候是16.04,所以systemctl的版本才223,最近需要搞一個東西,對systemd的版本有要求,就升級了一下。其間踩了很多坑,就稍微記錄一下。

先到systemd的倉庫裏去下個源碼:https://github.com/systemd/systemd/releases,我選了v245,要升級就索性升到最新版,然後tar + configure一條龍,然後……然後就報錯了,提示exec: meson: not found

查了一下,meson是個python寫的構建工具。那還不簡單,apt-get裝一個就是了,apt-get install meson一氣呵成,然後再次configure……又報錯了。這次是什麼?Meson version is 0.45.1 but project requires >= 0.46.得,又是apt-get的問題。我們知道,apt-get爲了穩定,經常會給我們裝一些遠古版本的東西。我至今還記得當年apt-get給我裝了一個node 4。

那要怎麼安裝新版本的meson呢,手動下載編譯嗎?可以,但沒必要。不要忘了meson是py寫的,我們可以用pip來安裝(前提是有py的環境,怎麼裝py不是這裏的重點):pip install meson。這裏的pip是py3的pip,有可能你那叫pip3。

然後再次configure,又報錯了,這次是Program(s) ['gperf'] not found or not executable。這個也簡單,裝個gperf就是了,apt-get install gperf。這次的依賴好像可以用apt-get。

然後再次configure,又雙報錯了,這次是/usr/sbin/update-info-dir: 4: /etc/environment: Syntax error: Unterminated quoted string。想來想去也不知道是爲啥,查了半天也沒查到,乾脆去看看/etc/environment的內容:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en

?最後那個引號去哪了?

把最後的引號補上,再次configure,又雙叒報錯了,這次是Problem encountered: POSIX caps headers not found。查了一下,發現是少了sys/capability.h。

因爲我這是Ubuntu,就apt-get install libcap-dev裝了個libcap-dev(centos應該是libcap-devel),然後再次configure,又雙叒叕報錯了,這次是ERROR: Dependency "mount" not found, tried pkgconfig

那就裝一個,apt-get install libmount-dev,然後再次configure,這次終於好了。make && make install,然後systemctl --version驗證一下:

systemd 245 (245)
-PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS -ACL -XZ -LZ4 -SECCOMP +BLKID -ELFUTILS -KMOD -IDN2 -IDN -PCRE2 default-hierarchy=unified

搞定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章