ubuntu系统安装微信过程与问题解决记录


之前,在Linux系统安装微信一般都是使用 electron构建的,比如 electronoic-wechat

而深度系统出来之后,对微信、QQ等的适配比较好,可以通过deepin进行安装,但是这种方式可能依赖比较多。

另外,还有通过docker进行安装的。

electronic wechat

electronic wechat是一个开源项目,地址https://github.com/geeeeeeeeek/electronic-wechat。该项目由第三方社区发布,不是官方微信团队发布的产品,其本质是对网页版微信的一种封装。

这种方式前几年还可以使用,但是由于最近两年微信风控趋严,网页版微信登录被禁,因此这种方式也就无法正常使用。登录时,一般会出现如下信息:

由于安全原因,此微信号不能使用网页版微信。你可以前往微信官网 https://weixin.qq.com/ 下载客户端登录。

deepin-wine

使用deepin的安装步骤如下:

  1. 更新软件源
# 更新软件源
$ sudo apt-get update  
  1. 添加仓库

首次使用时,需要运行如下一条命令将移植仓库添加到系统中。

wget -O- https://deepin-wine.i-m.dev/setup.sh | sh
  1. 安装应用

执行完上面的命令,就可以正常地通过apt-get命令进行应用安装、更新和卸载清理了。

比如安装微信只需要运行下面的命令,

sudo apt-get install com.qq.weixin.deepin

将com.qq.weixin.deepin替换为下列包名,可以继续安装其他应用:

应用	包名
微信	com.qq.weixin.deepin
QQ	com.qq.im.deepin
TIM	com.qq.office.deepin
钉钉	com.dingtalk.deepin
阿里旺旺	com.taobao.wangwang.deepin
QQ音乐	com.qq.music.deepin
QQ视频	com.qq.video.deepin
爱奇艺	com.iqiyi.deepin

deepin支持更丰富的应用,详细的列表参见https://deepin-wine.i-m.dev。

Wine-HQ安装

参考:
Ubuntu16.04LTS安装Wine的官方终极解决方案
脚本安装wechat

docker-wechat

  1. 安装docker
sudo apt update && apt install docker.io
  1. 加入用户组
    通过将用户添加到docker用户组可以将sudo去掉,命令如下:
#添加docker用户组
sudo groupadd docker     
#将登陆用户加入到docker用户组中
sudo gpasswd -a $USER docker     
 #更新用户组
newgrp docker    
#测试docker命令是否可以使用sudo正常使用
docker ps  -a

重启系统后生效,如果不是特别着急,可以先重启然后再做docker操作。
需要添加用户组的原因:在用户权限下docker 命令需要 sudo ,否则出现以下问题:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/images/create?fromImage=zixia%2Fwechat&tag=3.3.0.115: dial unix /var/run/docker.sock: connect: permission denied
  1. 安装docker-wechat
# 通过dochat启动docker-wechat
curl -sL https://gitee.com/mirrors/dochat/raw/main/dochat.sh | bash
  1. 脚本启动wechat
    通过上面curl -sL https://gitee.com/mirrors/dochat/raw/main/dochat.sh | bash命令的方式启动dochat,会出现下面总结问题中的目录权限不够的问题,这里启动之前先运行xhost +命令,并编写启动脚本放在~/soft/wechat/wechat_start.sh文件中,脚本内容如下:
#bin/bash
#When you encounter problem that the app exit with code 5 on openSUSE Leap, you need to disable X server access control to allow any user to connect to the X server before you start the app. Use below command to disable it:
xhost +
#运行docker通过指定参数
docker run \
 --name WeChat \
 --rm \
 -i \
 \
 -v "$HOME/DoChat/WeChat Files/":'/home/user/user/WeChat Files/' \
 -v "$HOME/DoChat/Applcation Data":'/home/user/user/.wine/drive_c/users/user/Application Data/' \
 -v /tmp/.X11-unix:/tmp/.X11-unix \
 \
 -e DISPLAY \
 \
 -e XMODIFIERS=@im=fcitx \
 -e GTK_IM_MODULE=fcitx \
 -e QT_IM_MODULE=fcitx \
 -e GID="$(id -g)" \
 -e UID="$(id -u)" \
 \
 --ipc=host \
 --privileged \
 \
 zixia/wechat

以后想要在ubuntu系统查看微信信息,运行微信脚本即可:

cd ~/soft/wechat
sh wechat_start.sh
  1. 查看docker运行状态
docker ps -a 
  1. 停止已运行容器
    如果通过运行上面的启动脚本,提示容器已经存在,可以通过docker ps -a查看各个容器的运行状态并找到对应容器的id,如果容器的STATUS状态不是Exited,则可以通过如下docker stop 容器id 的方式停止该容器(docker stop命令对已经推出的容器不起作用)。
docker stop containerId

然后,再次运行上面的启动微信的脚本即可。

常用docker命令

docker 常用命令总结

存储库

Ubuntu在默认情况下只启用主存储库,不同的应用有不同的依赖,如果要访问更多软件,可能就需要添加其他存储库。

目前,ubuntu系统支持的主要有Main、Restricted、Universe、Multiverse、Partner几种存储库。

Main

安装Ubuntu时,这是默认启用的存储库,主存储库仅包含FOSS(免费和开源软件),可以自由分发而不受任何限制。

Ubuntu开发人员完全支持此存储库中的软件,Ubuntu提供安全更新,直到你的系统达到使用寿命。

Universe

此存储库还包含免费和开源软件,但Ubuntu不保证此类软件的定期安全更新。

此类别的软件由社区打包和维护,Universe存储库拥有大量的开源软件,因此你可以通过apt包管理器访问大量软件。

Multiverse

Multiverse包含不是FOSS的软件,由于许可和法律问题,Ubuntu默认情况下无法启用此存储库,无法提供修复和更新。

可以配置是否要使用Multiverse存储库并检查你是否有权使用该软件。

Restricted

Ubuntu试图只提供免费和开源软件,但在支持硬件方面并不总是这样。受限制的存储库由专有驱动程序组成。

Partner

该存储库由Ubuntu为其合作伙伴打包的专有软件组成,早些时候,Ubuntu曾经通过这个存储库提供Skype。

第三方存储库和PPA(个人包存档,Ubuntu不提供)

如果想要添加其他存储库,可以通过sudo add-apt-repository命令添加,比如:

# 如果想要启用Universe存储库,请使用:
sudo add-apt-repository universe
# 如果想要启用Multiverse存储库,请使用以下命令:
sudo add-apt-repository multiverse
# 如果想要启用Restricted存储库,请使用:
sudo add-apt-repository restricted

添加存储库后,必须使用sudo apt update命令,以便系统使用包信息创建本地缓存。

如果要删除存储库,只需添加-r,如sudo add-apt-repository -r universe。

问题

在通过deepin-wine的方式安装wechat时,有些依赖可能无法正常下载,此时可以添加相关存储库、更换源等。

更换源

安装ubuntu系统后,默认的安装源下载速度可能比较慢,可以更换为国内的软件源,国内比较知名的软件源有清华、中科大、阿里、163等,这些软件源的访问速度在国内还是比较快的。

sudo vim /etc/apt/sources.list

比如,我的ubuntu系统是16.04(可以通过lsb_release -a查看)

#tsing hua mirror site
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse restricted universe

PS:不同发行版的Linux 操作系统的不同版本也是不一样的,可以先到清华大学开源软件镜像根据自己的发行版,找到对应的软件源版本添加到/etc/apt/sources.list。

系统升级

sudo apt-get update
sudo apt-get upgrade

依赖众多

添加完软件源、存储库后,运行sudo apt-get install com.qq.weixin.deepin命令安装微信,出现下面的问题。

错误:1 http://cn.archive.ubuntu.com/ubuntu xenial InRelease
  暂时不能解析域名“cn.archive.ubuntu.com”
忽略:2 https://deepin-wine.i-m.dev  InRelease
命中:3 https://deepin-wine.i-m.dev  Release
忽略:4 https://deepin-wine.i-m.dev  Release.gpg
错误:5 https://packages.microsoft.com/ubuntu/16.04/prod xenial InRelease
  Could not resolve host: packages.microsoft.com
错误:6 http://cn.archive.ubuntu.com/ubuntu xenial-updates InRelease            
  暂时不能解析域名“cn.archive.ubuntu.com”
错误:7 http://packages.ros.org/ros/ubuntu xenial InRelease                     
  暂时不能解析域名“packages.ros.org”
错误:8 http://security.ubuntu.com/ubuntu xenial-security InRelease             
  暂时不能解析域名“security.ubuntu.com”
错误:9 http://packages.microsoft.com/repos/code stable InRelease               
  暂时不能解析域名“packages.microsoft.com”
错误:10 http://ppa.launchpad.net/eivnaes/network-manager-sstp/ubuntu xenial InRelease
  无法连接上 ppa.launchpad.net:80 (2001:67c:1560:8008::19),连接超时
错误:11 http://ppa.launchpad.net/git-core/ppa/ubuntu xenial InRelease          
  不能连接到 ppa.launchpad.net:http:
0% [正在连接 cn.archive.ubuntu.com (2001:67c:1562::15)]                        
0% [正在连接 cn.archive.ubuntu.com (2001:67c:1562::15)]
命中:12 http://cn.archive.ubuntu.com/ubuntu xenial-backports InRelease
正在读取软件包列表... 完成    
W: 无法下载 http://cn.archive.ubuntu.com/ubuntu/dists/xenial/InRelease  暂时不能解析域名“cn.archive.ubuntu.com”
W: 无法下载 http://cn.archive.ubuntu.com/ubuntu/dists/xenial-updates/InRelease  暂时不能解析域名“cn.archive.ubuntu.com”
W: 无法下载 http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease  暂时不能解析域名“security.ubuntu.com”
W: 无法下载 http://ppa.launchpad.net/eivnaes/network-manager-sstp/ubuntu/dists/xenial/InRelease  无法连接上 ppa.launchpad.net:80 (2001:67c:1560:8008::19),连接超时
W: 无法下载 http://ppa.launchpad.net/git-core/ppa/ubuntu/dists/xenial/InRelease  不能连接到 ppa.launchpad.net:http:
W: 无法下载 https://packages.microsoft.com/ubuntu/16.04/prod/dists/xenial/InRelease  Could not resolve host: packages.microsoft.com
W: 无法下载 http://packages.ros.org/ros/ubuntu/dists/xenial/InRelease  暂时不能解析域名“packages.ros.org”
W: 无法下载 http://packages.microsoft.com/repos/code/dists/stable/InRelease  暂时不能解析域名“packages.microsoft.com”
W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。
忽略:1 https://deepin-wine.i-m.dev  InRelease
命中:2 https://deepin-wine.i-m.dev  Release
忽略:3 https://deepin-wine.i-m.dev  Release.gpg
正在读取软件包列表... 完成
......

之后,是一堆依赖需要解决

下列软件包有未满足的依赖关系:
 com.qq.weixin.deepin:i386 : 依赖: deepin-wine6-stable:amd64 (>= 6.0.0.18-1)
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
$ sudo apt-get install deepin-wine6-stable:amd64
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 deepin-wine6-stable : 依赖: deepin-wine6-stable-i386 (= 6.0.0.19-1)
                       依赖: deepin-wine6-stable-amd64 (= 6.0.0.19-1) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
$ sudo apt-get install deepin-wine6-stable-amd64
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 deepin-wine6-stable-amd64 : 依赖: libc6 (>= 2.27) 但是 2.23-0ubuntu11.3 正要被安装
                             依赖: libgphoto2-6 (>= 2.5.10) 但是 2.5.9-3 正要被安装
                             依赖: libgphoto2-port12 (>= 2.5.10) 但是 2.5.9-3 正要被安装
                             依赖: libusb-1.0-0 (>= 2:1.0.21) 但是 2:1.0.20-1 正要被安装
                             依赖: libvkd3d1 (>= 1.0) 但是它将不会被安装
                             推荐: libcapi20-3 但是它将不会被安装
                             推荐: libosmesa6 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
$ sudo apt-get install deepin-wine6-stable-i386
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 deepin-wine6-stable-i386:i386 : 依赖: libc6:i386 (>= 2.28) 但是 2.23-0ubuntu11.3 正要被安装
                                 依赖: libgphoto2-6:i386 (>= 2.5.10) 但是它将不会被安装
                                 依赖: libgphoto2-port12:i386 (>= 2.5.10) 但是它将不会被安装
                                 依赖: libusb-1.0-0:i386 (>= 2:1.0.21) 但是它将不会被安装
                                 依赖: libvkd3d1:i386 (>= 1.0) 但是它将不会被安装
                                 推荐: libcapi20-3:i386 但是它将不会被安装
                                 推荐: libglu1-mesa:i386 但是它将不会被安装 或
                                         libglu1:i386
                                 推荐: libgsm1:i386 但是它将不会被安装
                                 推荐: libodbc1:i386 但是它将不会被安装
                                 推荐: libosmesa6:i386 但是它将不会被安装
                                 推荐: libsane:i386 但是它将不会被安装 或
                                         libsane1:i386 但无法安装它
                                 推荐: libsdl2-2.0-0:i386 但是它将不会被安装
                                 推荐: libv4l-0:i386 但是它将不会被安装
                                 推荐: libxslt1.1:i386 但是它将不会被安装
                                 推荐: libxxf86vm1:i386 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
......

安装和使用过程遇到的问题可以参考:https://github.com/zq1997/deepin-wine

Got permission denied while trying to connect to the Docker daemon socket at unix

在使用如下命令安装完docker,并运行dochat脚本以启动docker-wechat时

# 安装docker
sudo apt update && apt install docker.io
# 通过dochat启动docker-wechat
curl -sL https://gitee.com/mirrors/dochat/raw/main/dochat.sh | bash

会出现如下问题:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/images/create?fromImage=zixia%2Fwechat&tag=3.3.0.115: dial unix /var/run/docker.sock: connect: permission denied

大意是:docker进程使用Unix Socket而不是TCP端口。而默认情况下,Unix socket属于root用户,需要root权限才能访问。

解决方法1:
使用sudo获取管理员权限,运行docker命令

解决方法2:
docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令

#添加docker用户组
sudo groupadd docker     
#将登陆用户加入到docker用户组中
sudo gpasswd -a $USER docker     
 #更新用户组
newgrp docker    
#测试docker命令是否可以使用sudo正常使用
docker ps    

在重启系统后生效,再去运行脚本

无home目录权限

通过如下命令运行docker wechat

curl -sL https://gitee.com/mirrors/dochat/raw/main/dochat.sh | bash

会出现类似如下的问题提示:

Disabling patch for /home/user/.wine/drive_c/users/user/AppData/Roaming/Tencent/WeChat ...
Disabling patch for /home/user/.wine/drive_c/users/user/Application Data/Tencent/WeChat ...
mkdir: 无法创建目录 “/home/user/.wine/drive_c/users/user/Application Data/Tencent”: 权限不够

提示/home/user权限不够,明明home目录下都是当前用户的权限,新建user目录也不可以。
you need to disable X server access control to allow any user to connect to the X server before you start the app. Use below command to disable it:
遇到这个问题,在启动docker-wechat脚本之前,需要禁用X服务器访问控制,以允许任何用户连接到X服务器。使用下面的命令禁用它即可:

xhost +; sudo chown -R $USER $HOME/DoChat/

详见issues150

重新运行上面的命令,提示容器已经在使用过程中,需要先移除或者重命名:

Pulling the docker image...

3.3.0.115: Pulling from zixia/wechat
Digest: sha256:xxxxxxx
Status: Image is up to date for zixia/wechat:3.3.0.115

🚀 Pulling the docker image done.
🚀 Starting DoChat /dɑɑˈtʃæt/ ...

docker: Error response from daemon: Conflict. The container name "/DoChat" is already in use by container "xxxxxxxxx". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

可以在启动docker-wechat脚本的时候,给容器起个新的名字。这种方式,每次运行都需要起一个新名字就显得比较麻烦。还可以停止运行的容器,重新运行启动脚本即可,运行命令如下:

# 查看容器运行状态
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES
18bf4exxx        zixia/wechat        "/entrypoint.sh /bin…"   About an hour ago   Exited (0) About an hour ago                       jovial_mayer
4ba6dbxxx       zixia/wechat        "/entrypoint.sh"         2 hours ago         
Up 2 hours                                         WeChat
008184xxx        zixia/wechat        "/entrypoint.sh"         2 hours ago         Exited (0) 2 hours ago                             DoChat

~/soft/wechat$ 
# 停止008184xxx容器
~/soft/wechat$ docker stop 008184xxx
008184xxx
~/soft/wechat$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES
18bf4exxx        zixia/wechat        "/entrypoint.sh /bin…"   About an hour ago   Exited (0) About an hour ago                       jovial_mayer
4ba6dbxxx        zixia/wechat        "/entrypoint.sh"         2 hours ago         
Up 2 hours                                         WeChat
008184xxx        zixia/wechat        "/entrypoint.sh"         2 hours ago         Exited (0) 2 hours ago                             DoChat
~/soft/wechat$ docker stop 4ba6dbxxx

4ba6dbxxx
~/soft/wechat$ 
~/soft/wechat$ 
# 可以看到4ba6dbxxx容器已经不见了
~/soft/wechat$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES
18bf4exxx        zixia/wechat        "/entrypoint.sh /bin…"   About an hour ago   Exited (0) About an hour ago                       jovial_mayer
008184xxx        zixia/wechat        "/entrypoint.sh"         2 hours ago         Exited (0) 2 hours ago                             DoChat
# 重新启动微信脚本即可
~/soft/wechat$ sh wechat_start.sh 
access control disabled, clients can connect from any host
[DoChat] 盒装微信 v0.14.4
Disabling patch for /home/user/.wine/drive_c/users/user/AppData/Roaming/Tencent/WeChat ...
Disabling patch for /home/user/.wine/drive_c/users/user/Application Data/Tencent/WeChat ...
[DoChat] WeChat 3.3.0.115
[DoChat] Starting...

WeChat.exe exit with code 0

$ docker run -it DoChat /bin/bash
docker: invalid reference format: repository name must be lowercase.
See 'docker run --help'.
ld@ld-TM1701:~$ docker run -it zixia/wechat /bin/bash
[DoChat] 盒装微信 v0.14.4
Disabling patch for /home/user/.wine/drive_c/users/user/AppData/Roaming/Tencent/WeChat ...
Disabling patch for /home/user/.wine/drive_c/users/user/Application Data/Tencent/WeChat ...
[DoChat] WeChat 3.3.0.115
[DoChat] Starting...
[DoChat] WeChat.exe exit with code 0
[DoChat] Found new version?
[DoChat] WeChat.exe exited

同上面目录权限不够的问题,在启动脚本之前,先运行如下命令:

xhost +

参考

ubuntu16.04安装微信完整版教程
linux禁用存储,Ubuntu存储库的定义及启用和禁用Ubuntu存储库的方法
安装完Ubuntu16.04后要做的事(更换源、更新驱动等)
deepin更新依赖错误_deepin的依赖太重了
Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法
Linux下BUG系列:解决deepin-wine依赖问题
docker-wechat
docker-qq
docker-wine-linux
docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at
docker 常用命令总结
Linux上使用Docker运行QQ和微信解决痛点(目前已无法使用)
Quick links for wine FAQ: running a program in Wine, running Wine from a terminal, running program as root, uninstalling an application, getting a debugging log, using a wineprefix, creating a 32 bit wineprefix
ubuntu docker安装
nvidia-smi指令报错:Failed to initialize NVML: Driver解决
docker wechat退出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

love666666shen

谢谢您的鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值