我们安装的 tigervnc 会安装两个 vnc 的 server,一个叫 vncserver,另外一个叫 x0vncserver,前者依赖 Xvnc 工具,这个工具的编译方法也在那个BUILDING.txt 里,两个都能用,如果需要编译 Xvnc 可以跳到后面去
安装x0vncserver
1、下载源码
Releases · TigerVNC/tigervnc · GitHub
2、安装依赖 (参考源码目录里的 BUILDING.txt)
我之前安装过一些依赖,下面这个依赖不一定全,具体还是参照上面的 BUILDING.txt
yum install zlib-devel cmake libjpeg-turbo-devel make libtool gcc-c++
# 解决这个编译问题,这个不安装,使用 x0vncserver 就只能看不能操作
# No XTest extension. x0vncserver will be view-only.
yum install libXtst-devel
# 解决这个编译问题
# No Xrandr extension. x0vncserver will not be able to resize session.
yum install libXrandr-devel
# 解决这个编译问题
# No DAMAGE extension. x0vncserver will have to use the slower polling method.
yum install libXdamage-devel
# 貌似 fltk 可选安装
yum install fltk-devel
# 其中还提到 tls
yum install gnutls-devel
3、安装代码
# 进入源码目录,root权限
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -Wno-dev .
make
make install
上面路径默认安装到 /usr
4、使用 tigervnc
首先打开图形化的终端(非xshell这种终端),需要桌面的
接着在终端设置vnc密码,中间有个 view-only,输入n 就行了
vncpasswd
启动命令 (默认端口 5900)
x0vncserver PasswordFile=/root/.vnc/passwd
中间那个文件是我们设置vncpassword之后,就会自动创建到你的用户目录下
如果你开启服务后没有报错,然后vnc客户端又连不上,看看是不是防火墙之类的网络问题
systemctl stop firewalld
----------------------------------------------------------分界线-----------------------------------------------------------
编译Xvnc
安装依赖 (前文中 x0vncserver 的依赖也要安装)
yum install libdrm-devel libxkbfile-devel libXfont2-devel libxshmfence-devel doxygen xmlto fop xorg-x11-xtrans-devel xorg-x11-server-source patch
# 解决这个编译问题
# No package 'pixman-1' found
yum install pixman-devel
# 解决这个编译问题
# No package 'gl' found
yum install xorg-x11-server-devel
# 解决这个编译问题
# utils.c:1992:31: fatal error: security/pam_appl.h: No such file or directory
yum install pam-devel
安装过程
1、解压tigervnc源码
2、进入tigervnc源码目录
3、执行 (这里不创建 build 目录)(先安装x0vncserver)
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -Wno-dev .
make
make install
4、执行
cp -R /usr/share/xorg-x11-server-source/* unix/xserver/
cd unix/xserver/
xorg-x11-server-source 是我们yum安装的包,我们需要看看它的版本
# yum list | grep xorg-x11-server-source
xorg-x11-server-source.noarch 1.20.4-18.el7_9 @updates
我的版本是1.20,接下来执行的命令就跟这个版本有关
5、执行 (120指的是xorg-x11-server-source的版本,其他版本要换成其他的)
patch -p1 < /root/tigervnc-1.10.0/unix/xserver120.patch
(/root/tigervnc-1.10.0 是源码目录,你可以替换成你的源码的目录,后面也是如此)
6、执行
autoreconf -fiv
./configure --with-pic --without-dtrace --disable-static --disable-dri \
--disable-xinerama --disable-xvfb --disable-xnest --disable-xorg \
--disable-dmx --disable-xwin --disable-xephyr --disable-kdrive \
--disable-dri2 --enable-glx \
--disable-config-hal --disable-config-udev \
--with-default-font-path="catalogue:/etc/X11/fontpath.d,built-ins" \
--with-xkb-path=/usr/share/X11/xkb \
--with-xkb-output=/var/lib/xkb \
--with-xkb-bin-directory=/usr/bin \
--with-serverconfig-path=/usr/lib64/xorg \
--disable-devel-docs \
--prefix=/usr/
这个编译方法在源码目录里的 BUILDING.txt,我删减了一些用不了的编译选项,增加了 --prefix=/usr/ ,即安装目录,和 --disable-devel-docs ,后面这个是禁用文档,因为编译的时候会报错,也用不上就禁了,报错下面这个
make[2]: *** 没有规则可以创建“all-am”需要的目标“Xserver-spec.xml”。 停止。
7、最后
make TIGERVNC_SRCDIR=/root/tigervnc-1.10.0/
make install
启动命令
vncserver 的启动关闭命令是,下面的1是端口,代表5901,如果是2就是5902,以此类推,记得设置 vncpassword
# 启动
vncserver :1
# 关闭
vncserver -kill :1
yum 直接安装的 tigervnc 是带Xvnc的,也就是能用vncserver (部分包有 Xvnc 没有 vncserver)
yum install tigervnc-server-minimal
未解决的问题
configure的时候报错缺少
configure: WARNING:
***********************************************
Neither HAL nor udev backend will be enabled.
Input device hotplugging will not be available!
***********************************************
看了一下centos的源没有这个 hal 和 udev 的库,就没有安装
可能出现的问题
1、找不到头文件
dri3.c:29:24: fatal error: drm_fourcc.h: No such file or directory
执行
cp -r /usr/include/libdrm/* /usr/include/
2、先编译 tigervnc,不然报错
make[2]: *** 没有规则可以创建“libvnc.la”需要的目标“/root/tigervnc-1.10.0//common/network/libnetwork.la”。 停止。
首先是确保你做了第二步的cmake和make,其次,检查你是否是创建了build目录再cmake的,如果你不小心创建了,这种情况下需要手动指定build目录在继续编译(报错之后)(tigervnc 官方说不喜欢cmake之前创建目录,喜欢直接源码使用cmake)
TIGERVNC_BUILDDIR=/root/tigervnc-1.10.0/build