Samsung Linux on Dex 折腾记录——语言支持

玩过LOD的都知道,官方提供的镜像bug挺多的,其中最蛋疼的问题之一就是语言问题,不能设置系统语言就算了,安装的中文输入法也用不了,这里记录一下自己的解决过程。以免以后再折腾的时候麻烦。

首先,Linux On Dex 提供的默认镜像是Ubuntu 16.04的,但是用起来总是感觉不顺手,第一眼看上去好像跟桌面版没有什么区别,仔细使用过之后,发现很多桌面版的功能都没有,其中就包括我经常用的软件与更新(software & update)和语言支持(language support),第一个可以一键轻松的切换最快的软件源,第二个可以轻松地安装和切换系统语言,区域,自动安装配置输入法等。正常完整的Ubuntu,用这两个软件配置一下,基本就可以满足Ubuntu的基本的本地化需求了, 如果再算上一个,那就是应用商店了。如果这些都能满足,那么正常的日常办公,编程,上网应该就无压力了。但是,不知道三星工程师怎么想的,我找遍了菜单都没有发现这些功能的入口,我第一个想法就是精简掉了,其实在arm版的镜像中,精简是一件很常见的事情,我理解精简系统是为了提升性能,降低磁盘占用,但是没有必要把基本系统组件都给干掉吧,既然你已经提供了图形界面的支持,就应该做完整了吧,基本的系统设置界面应该要全吧,没办法既然已经精简掉了,那我们就只能手动把他装回来了,首先是更新软件源,这我就不多说了,网上教程很多,仅仅需要注意一下的是:使用的版本(xenial 16.04)和架构(arm64/aarch64),需要选择的是ubuntu-port的源。

接下来就是找软件包名,看起来好像是很简单的一件事,但是包名可不好找,因为根本就不知道搜什么关键词,经过我常年积累的搜索大法,还是从一堆广告中筛选出来了对应的包名,具体如下(有什么其他好方法请务必在下留言告诉我):

  • 软件与更新 software & update —— update-manager
  • 语言支持 language support —— gnome-language-selector
  • 控制面板 —— gnome-control-center
  • 应用商店 —— gnome-software
  • 界面优化工具—— gnome-tweak-tool

知道包名之后就可以轻松地通过 apt install 包名,进行对应软件包的安装了。

首先肯定进行的是 apt install gnome-language-selector ,命令一敲,发现当前包已经安装了,但是菜单里面仍然没有对应项目,那只能说明一个问题——选项被隐藏了。于是我立即打开菜单编辑工具,果然发现system settings 一项并没有勾上,勾上后返回,我果然发现了对应选项,然后满怀期待地点开了语言支持。事情并不像想象中的那么顺利,点开瞬间界面就闪退了,看来应该是有什么问题才会隐藏这个选项的,看来事情并不像想象中的那么简单,于是Google搜索,发现老外也有同样的问题,解决方案是安装其他的桌面环境,事实上经过我的测试,依旧是无法打开的,顶多能搞定个输入法,这里面具体测试过程相当繁琐,折腾了我很久,搞坏了好多镜像,顺便还发现国外xda论坛上还有人搞出来了其他系统的镜像,但是在当前问题上好像又没有多大用,所以这里就不写了,以后有时间在补充吧。

又回到了当前问题,既然软件运行不了,第一想到的就是调试了,软件本身肯定是没什么问题的,应该是环境问题导致的无法运行,先通过命令行运行看一下

Traceback (most recent call last):
File "/usr/bin/gnome-language-selector", line 22, in on_activate
options=options)
File "/usr/lib/python3/dist-packages/LanguageSelector/gtk/GtkLanguageSelector.py", line 185, in init
self.ac = aptdaemon.client.AptClient()
File "/usr/lib/python3/dist-packages/aptdaemon/client.py", line 1046, in init
self.bus = dbus.SystemBus()
File "/usr/lib/python3/dist-packages/dbus/_dbus.py", line 194, in new
private=private)
File "/usr/lib/python3/dist-packages/dbus/_dbus.py", line 100, in new
bus = BusConnection.new(subclass, bus_type, mainloop=mainloop)
File "/usr/lib/python3/dist-packages/dbus/bus.py", line 122, in new
bus = cls._new_for_bus(address_or_type, mainloop=mainloop)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Failed to connect to socket /var/run/dbus/system_bus_socket:  permission denied

这还不好办吗?直接root权限上起,果然运行起来了,需要注意的是,这里不能以root用户直接运行,必须以当前登录用户sudo 运行,否则会提示找不到显示设备的错误,这个是root用户没有配置显示环境造成的,报错如下:

root@localhost:/home/dextop# gnome-language-selector 
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused

(gnome-language-selector:29390): Gtk-WARNING **: cannot open display: :1

界面是出来了,不闪退了,提示语言支持不完整,我们点击安装,但是新的问题又出来了,安装的时候出现了/devro/pts/1 isn’t tty的错误,好在我们点击detail,我们可以获得它提供了具体的要软件列表,问题不大,我们一个个手动把他安装好了再说,然后就是安装中文的gnome界面软件包,同样用它自带的安装会出问题,我们手动安装 apt install language-pack-gnome-zh-hans ,然后apt就会自动把语言包依赖包给装好。装好之后就是设置语言和区域了,然而语言支持的图形界面程序依旧不给力,还是得用上命令行,这里我们熟人dpkg-reconfigure locales ,然后会弹出一个界面,我们在里面选择好zh_CN-UTF8确认即可,这时候我们的命令行应该就已经是中文的了,但是界面语言还没有变,我们注销在重新进入,好像依旧没什么变化,应该是没有彻底改过来,查看语言与区域配置文件 /etc/default/locale,发现有好几个还是en_US的,我们全部把它强制改成zh_CN ,这时退出再重进,发现界面也已经成功变成中文的了,但是有一个bug,就是终端打不开了,这时候不要慌,我们退出图形界面,进入APP的terminal模式,可以发现,有几个报错提示,仔细一看,问题也不大,进入相应文件,把里面的en_US全部改成zh_CN就正常了。

至此,语言修改应该差不多结束了,最后,输入sudo gnome-software,就能够直接安装想要的工具和软件了,同时也可以把不需要的软件给卸载了,这里需要注意一下,操作必须一个个地来,不能批量卸载和安装,不然容易出问题。

留下评论