VNC quick start

本文详细介绍了如何在CentOS系统上设置和使用VNC实现远程桌面登录,包括安装GNOME桌面、配置VNC服务、安装VNC客户端、调整分辨率以及处理常见问题如防火墙限制和内存消耗。

对于需要图形化界面的情况,仅仅ssh登录是不够的,需要桌面登录。VNC提供了linux桌面登录的解决方案。使用VNC首先要在需要登录的host上安装、启用服务,然后在本地的windows、linux环境使用VNC view客户端登录到服务器上。本文的示例均为centos上的小白操作。

操作步骤

  1. 希望VNC能够访问远程桌面,那么系统首先要有桌面;如果没有,进行安装,这一步需要的时间比较长。
    yum groupinstall GNOME Desktop

  2. 希望服务器提供VNC服务,自然需要在服务器端安装VNC服务;
    yum install -y tigervnc tigervnc-server

  3. 希望在远程访问服务器的桌面,即使用vnc服务,相应的,需要在本地(客户端)安装vnc客户端软件,我这里安装的是realvnc view,百度下载正常安装即可;

  4. 通过ssh连接开启vnc服务

    # 可以直接vncserver,不使用:index,服务会分配一个index给服务请求,需要在桌面上使用图形界面,需要把$DISPLAY环境变量设置成这个序号
    vncserver :13
    

在客户端使用ip:index进行连接。如果不是使用realvnc,比如使用xmanager,index是5900+index,因为vnc服务使用的端口是从5900开始的。

到这里,我们已经可以歪歪扭扭的用上远程桌面连接了。

实用命令/操作

  1. 调整远程桌面分辨率,开启vnc的时候使用- geometry命令
    vncserver -geometry 2000x1200
  2. 查看vncserver服务列表
    vncserver -list
  3. 关闭vncserver服务
    vncserver -kill :indx
  4. vncserver密码忘记了
    删除服务器home下的./vnc目录
  5. 希望对vncserver进行配置
    参看服务器home下的./vnc/config文件,这个文件是对vncserver服务的默认配置。

使用中遇到的问题

连不上

我这边是用vnc去连接云服务器的,第一次vnc可以连上,第二次连不上了,然后在云服务器上把防火墙关了又可以了连上了。关闭防火墙命令:
systemctl stop firewalld

远程桌面卡

VNC吃内存严重,入门的轻量云服务器吃不消,打开一个firefox CPU就拉满了。如果要使用VNC,需要选用高级一些的云服务器。

远程桌面打开GUI应用报错

可以看一下环境变量DISPLAY环境变量的设置是不是正确的。DISPLAY环境变量的格式:IP:vnc_session_port.0
IP为空,表示运行于本机。

用到的其它命令

# 查看vnc端口
netstat -aon| grep vnc
# 查看vnc线程
ps -ef | grep vnc
# 管理系统服务
systemctl start/stop/status/enable    xxx
# 查看vnc安装情况
rpm -qa | grep vnc
# 查看本机系统版本
cat /etc/redhat-release

参考

https://developer.aliyun.com/article/974020

执行服务脚本后运行日志如下: SMPlayer控制服务端已启动,监听路径:/tmp/smplayer_control.sock 执行命令: open 参数: /home/user/videos/sample.mp4 qt.qpa.xcb: could not connect to display qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb. 执行命令: play 参数: Service 'org.mpris.MediaPlayer2.smplayer' does not exist. 执行命令: pause 参数: Service 'org.mpris.MediaPlayer2.smplayer' does not exist. 执行命令: play 参数: Service 'org.mpris.MediaPlayer2.smplayer' does not exist. 执行命令: stop 参数: qt.qpa.xcb: could not connect to display qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb. Aborted 执行命令: close 参数: qt.qpa.xcb: could not connect to display qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb. Aborted
06-11
<think>我们正在解决SMPlayer在执行命令时出现的Qt平台插件'xcb'无法加载的问题。根据引用信息,我们可以参考以下线索:引用[2]提到在友善的根文件系统中,/user/local/smplayer/bin目录中的smplayer脚本有问题,需要将/bin目录下的qt4脚本复制过来并修改最后三行。这可能暗示我们需要调整脚本或环境变量。引用[3]提到了Qt平台插件无法初始化的问题,用户尝试设置环境变量QT_PLUGIN_PATH等没有成功,而优快云上有一些解决方案,比如放在同级目录(但不管用)。根据我们的知识,Qt应用程序在Linux上遇到xcb插件无法加载的问题,通常是因为缺少依赖库或者Qt插件路径设置不正确。解决方案可能包括:1.确保安装了必要的依赖包(如libxcb-xinerama0,以及其他xcb相关库)。2.设置环境变量QT_DEBUG_PLUGINS=1来调试插件加载问题。3.检查Qt插件的路径是否正确,通过环境变量QT_PLUGIN_PATH指定。但是,引用[3]中提到设置QT_PLUGIN_PATH等环境变量无效,所以可能需要其他方法。另一个思路是检查应用程序运行时是否能够找到xcb平台插件。通常,xcb平台插件位于Qt安装目录的plugins/platforms目录下(例如:/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/)。如果应用程序在运行时找不到这个目录,就需要设置环境变量。由于用户提到SMPlayer,我们可以尝试以下步骤:步骤1:安装xcb依赖库在终端中运行:```bashsudoapt-getupdatesudoapt-getinstalllibxcb-xinerama0```可能还需要其他相关库,如`libxcb1`,`libxcb-randr0`,`libxcb-xtest0`,`libxcb-sync0`,`libxcb-shape0`等。可以尝试安装:```bashsudoapt-getinstall--reinstalllibxcb-xinerama0libxcb-icccm4libxcb-image0libxcb-keysyms1libxcb-randr0libxcb-render-util0libxcb-shape0libxcb-sync1libxcb-xfixes0libxcb-xkb1libxcb-cursor0```步骤2:设置环境变量首先,我们可以尝试设置QT_QPA_PLATFORM_PLUGIN_PATH环境变量,指向包含xcb插件的目录。例如,如果xcb插件在`/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/`,则设置:```bashexportQT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins```注意:路径应指向platforms目录的上一级(即plugins目录)。或者,使用QT_PLUGIN_PATH(但引用[3]中用户设置无效):```bashexportQT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins```步骤3:使用调试模式查看详细错误运行SMPlayer之前,设置:```bashexportQT_DEBUG_PLUGINS=1```然后运行SMPlayer,查看终端输出,它会显示查找插件的过程以及失败的原因。步骤4:复制插件到应用程序目录(如果上述方法无效)将platforms目录(包括其中的libqxcb.so)复制到SMPlayer可执行文件所在目录下的plugins/platforms目录(即创建目录结构:smplayer_root/plugins/platforms/),然后设置环境变量:```bashexportQT_QPA_PLATFORM_PLUGIN_PATH=$(pwd)/plugins```或者将插件目录放在可执行文件的同级或上级目录的合适位置。步骤5:如果使用了脚本启动(如引用[2]中提到的脚本问题),检查并修改启动脚本。可能需要在脚本中设置环境变量。步骤6:如果SMPlayer是使用静态编译的Qt构建的,则可能不需要设置这些路径,但动态链接的Qt程序需要。根据引用[2]的线索,他们通过替换脚本来解决问题,我们可以尝试以下方法:找到SMPlayer的启动脚本(可能在/user/local/smplayer/bin/smplayer),检查脚本内容。如果脚本中有关于Qt环境变量的设置,确保正确;或者按照引用[2]的方式,用另一个脚本(如qt4)替换,并修改最后三行(启动命令)。由于具体替换为什么内容引用[2]没有给出,我们可以尝试在脚本中添加环境变量设置:例如,在脚本开头添加:```bashexportQT_QPA_PLATFORM_PLUGIN_PATH=/path/to/your/qt/plugins```如果没有效果,也可以尝试将脚本中启动命令的部分改为:```bashexec/path/to/your/smplayer_executable"$@"```注意:以上步骤需要根据实际系统环境进行调整。由于问题具体环境复杂,可能需要用户尝试多种方案。请根据调试信息(QT_DEBUG_PLUGINS)的输出进一步定位问题。最后,建议用户也可以参考引用[4]中提到的QT基于VLC开发视频播放器的相关文档,但主要问题在于Qt平台插件。生成相关问题:1.如何通过调试信息解决Qt平台插件无法加载的问题?2.还有哪些常见原因导致Qt应用程序无法加载xcb插件?3.在Linux中如何正确设置Qt插件的环境变量?</think> ### 解决 SMPlayer 的 Qt 平台插件 "xcb" 无法加载的问题 根据您提供的错误信息和引用内容,这个问题通常由环境变量配置或依赖库缺失引起。以下是系统化的解决方案: #### ✅ 核心解决方案 1. **设置环境变量** ```bash # 在终端执行(临时生效) export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins/ export QT_DEBUG_PLUGINS=1 # 调试用 ``` ```bash # 永久生效(添加到 ~/.bashrc) echo 'export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins/' >> ~/.bashrc source ~/.bashrc ``` 2. **验证插件路径** ```bash # 检查 xcb 插件是否存在 ls /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so ``` 如果不存在,安装依赖库: ```bash sudo apt-get install --reinstall qml-module-qtquick2 qt5-default libxcb-xinerama0 ``` #### ⚠️ 补充排查步骤 - **检查依赖库完整性** ```bash sudo apt --fix-broken install sudo dpkg -l | grep -E 'qt5|libxcb' # 检查关键包 ``` - **替换启动脚本** 如引用[2]所述,若 `smplayer` 脚本异常: ```bash cp /bin/qt4 /usr/local/smplayer/bin/smplayer # 替换问题脚本 sed -i '$ s/.*/exec smplayer-real "$@"/' /usr/local/smplayer/bin/smplayer # 参考修改最后三行 ``` - **调试日志分析** 执行前设置 `QT_DEBUG_PLUGINS=1`,运行 SMPlayer 查看终端输出的具体加载错误[^3]。 #### 📁 文件结构修复 若环境变量无效,手动创建插件链接: ```bash sudo mkdir -p /usr/local/smplayer/plugins/platforms/ sudo ln -s /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so /usr/local/smplayer/plugins/platforms/ ``` #### 💡 应用测试 参考引用[4]建议: ```bash # 运行测试视频 smplayer --no-config /path/to/test_video.mp4 ``` 🔍 **延伸提示**:如果使用 VLC 内核开发(如引用[1][4]),确保 `VLCPlayer` 未干扰 Qt 模块初始化。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值