admin管理员组

文章数量:1588856

提供一种在linux下运行QQ的方式

Supported tags

light,latest (QQLight 7.9)

office (TIM 2.0)

准备工作

允许所有用户访问X11服务,运行命令:

xhost +

查看系统组ID

为了使用声音和对应的视频设备,需要具有系统特定组的权限,因此需要获得对应的组ID。

获取 audio 组 ID

$getent group audio | cut -d: -f3

63

这里取得的 63 就是 audio 组的组 ID,替换下面命令中对应的ID。

获取 video 组 ID

$getent group video | cut -d: -f3

44

更新

进入docker容器:docker exec -it qq bash

运行以下命令更新深度软件包:

apt-get update

# 更新企业版

# apt-get install -y deepin.qq.b.eim

# 更新QQ

apt-get install -y deepin.qq.im

# 更新轻聊版

# apt-get install -y deepin.qq.im.light

# 更新TIM

# apt-get install -y deepin.qq.office

运行QQ

docker-compose

建立 docker-compose.yml 文件,内容如下:

version: '2'

services:

qq:

image: bestwu/qq:office

container_name: qq

ipc: host

devices:

- /dev/snd #声音

volumes:

- /tmp/.X11-unix:/tmp/.X11-unix

- /home/peter/TencentFiles:/TencentFiles #使用自己的用户路径

environment:

- DISPLAY=unix$DISPLAY

- XMODIFIERS=@im=fcitx #中文输入

- QT_IM_MODULE=fcitx

- GTK_IM_MODULE=fcitx

- AUDIO_GID=63 # 可选 默认63(fedora) 主机audio gid 解决声音设备访问权限问题

- GID=$GID # 可选 默认1000 主机当前用户 gid 解决挂载目录访问权限问题

- UID=$UID # 可选 默认1000 主机当前用户 uid 解决挂载目录访问权限问题

然后在命令行运行:

docker-compose up -d

docker run

也可以使用 docker run 命令直接在命令行执行:

docker run -d --name qq \

--device /dev/snd --ipc="host"\

-v $HOME/TencentFiles:/TencentFiles \

-v /tmp/.X11-unix:/tmp/.X11-unix \

-e XMODIFIERS=@im=fcitx \

-e QT_IM_MODULE=fcitx \

-e GTK_IM_MODULE=fcitx \

-e DISPLAY=unix$DISPLAY \

-e AUDIO_GID=`getent group audio | cut -d: -f3` \

-e VIDEO_GID=`getent group video | cut -d: -f3` \

-e GID=`id -g` \

-e UID=`id -u` \

bestwu/qq:office

可以写入一个脚本来方便以后调用。

维护

停止容器

docker stop qq

删除容器

docker rmqq

如果容器没有退出需要强行删除,可以加 -f 参数

docker rm -f qq

已知问题

界面未显示异常

如果界面未显示,运行:

docker logs qq

如果出现如下错误:

X Error of failed request: BadAccess (attempt access private resource ***)

Major opcode of failed request:130(MIT-SHM)

这是因为本地的linux中默认开启了“MIT-SHM”共享X进程内存的功能,禁用该共享功能即可。

具体操作:

vi /etc/X11/xorg.conf

增加:

Section "Extensions"

Option "MIT-SHM" "Disable"

EndSection

重启系统

无声音

请尝试以下配置

version: '2'

services:

qq:

image: bestwu/qq:office

container_name: qq

volumes:

- /tmp/.X11-unix:/tmp/.X11-unix

- /run/user/1000/pulse/native:/run/user/1000/pulse/native

- /home/peter/TencentFiles:/TencentFiles

environment:

- DISPLAY=unix$DISPLAY

- PULSE_SERVER=unix:/run/user/1000/pulse/native

- XDG_RUNTIME_DIR=/run/user/1000

- QT_IM_MODULE=fcitx

- XMODIFIERS=@im=fcitx

- GTK_IM_MODULE=fcitx

- AUDIO_GID=63 # 可选 默认63(fedora) 主机audio gid 解决声音设备访问权限问题

- GID=$GID # 可选 默认1000 主机当前用户 gid 解决挂载目录访问权限问题

- UID=$UID # 可选 默认1000 主机当前用户 uid 解决挂载目录访问权限问题

docker run -d --name qq \

-v ${XDG_RUNTIME_DIR}/pulse/native:${XDG_RUNTIME_DIR}/pulse/native \

-v $HOME/TencentFiles:/TencentFiles \

-v /tmp/.X11-unix:/tmp/.X11-unix \

-e XMODIFIERS=@im=fcitx \

-e QT_IM_MODULE=fcitx \

-e GTK_IM_MODULE=fcitx \

-e PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native \

-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \

-e DISPLAY=unix$DISPLAY \

-e GID=`id -g` \

-e UID=`id -u` \

bestwu/qq:office

非gnome桌面无法显示界面

X Error of failed request: BadWindow (invalid Window parameter)

Major opcode of failed request: 20 (X_GetProperty)

Resource id in failed request: 0x0

Serial number of failed request: 10

Current serial number in output stream: 10

解决方法:安装gnome-settings-daemon,然后运行/usr/lib/gsd-xsettings

检测不到摄像头,不能视频

(TIM)同意加好友申请后崩溃

Wayland 显示服务器,截图功能异常

无法直接点击打开链接

无法拖拽发送文件。使用挂载目录方式,点击发送文件按钮,选择文件

本文标签: 能在qqDockerLinux