如果按照知乎体,此文应该叫做:《在Mate Desktop 1.20.0里编译1.20.1,是一种什么样的体验?》
先说一下配置。昨天(20180401)刚出的每日构建版 debian-testing-amd64-netinst.iso,安装的时候选择了mate桌面。看About,乃1.20.0版的。今天看到DistroWatch提及1.20.1版,于是想update之。没想到一升,两小时过去了。时间倒是不久,经验增加了略微。
.configure
1st兵来:最后三行:
./configure: line 3263: intltool-update: command not found
checking for intltool >= 0.50.1... found
configure: error: Your intltool is too old. You need intltool 0.50.1 or later.
将挡:apt install intltool
2nd兵来:
configure: error: no acceptable C compiler found in $PATH
将挡:缺C编译器。命令虽然长,但敲得太多以致倒背如流:apt install build-essential
3rd兵来:
configure: error: The pkg-config script could not be found or is too old.
将挡:缺少补啥呗。apt install pkg-config
4th兵来:
configure: error: Package requirements (dconf >= 0.13.4) were not met:
No package 'dconf' found
将挡:这个apt库里没有,只能到GNU里找源码编译了。当前最新版本=0.28,远远高于它要求的0.13.从目录可知,其属于GNome。
依赖关系来了:dconf需要meson,meson需要ninja。(这些过程较复杂,另撰它文再叙)
5th兵来:
configure: error: "no (requires X development libraries)"
将挡:找了好一顿,apt install libx11-dev,才是正解。
6th兵来:
configure: error: Package requirements (gdk-pixbuf-2.0 gtk+-3.0 >= 3.22.0 glib-2.0 >= 2.50.0 gio-2.0 >= 2.26.0 ) were not met。No package 'gdk-pixbuf-2.0' found。 No package 'gtk+-3.0' found。
将挡:apt-get install libgtk2.0-dev libgtk-3-dev
mate-desktop 1.20.1
===================
prefix: /usr/local
exec_prefix: ${prefix}
libdir: ${exec_prefix}/lib
bindir: ${exec_prefix}/bin
sbindir: ${exec_prefix}/sbin
sysconfdir: ${prefix}/etc
localstatedir: ${prefix}/var
datadir: ${datarootdir}
source code location: .
compiler: gcc
cflags: -g -O2
Maintainer mode: no
Use *_DISABLE_DEPRECATED: no
Build mate-about: yes
Use external pnp.ids: no (internal)
Startup notification support: no
XRandr support: yes
Build introspection support: no
Build gtk-doc documentation: no
之后就是 make && make install,装完看“关于”,升到1.20.1了。截图为证:
总结:
等于是把GNome桌面差不多装了一遍。那假如下次官网又发布了1.20.2,怎么办?那得分很多种情况了。
首先,强烈建议安装GNome桌面环境,这样可以少装很多依赖(比如:dconf/meson/ninja)
其次,如果是在1.20.1的基础上增量升级的,那上面的依赖库都不需要装了。可能直接.configure即可。
但假如就是从当前的1.20.0的基础上全面升级,那就要把上面的依赖库再装一次. 不走源码逐个编译,直接一键装齐:
apt install intltool build-essential pkg-config ninja meson libc-bin libgtk2.0-dev libgtk-3-dev