QNAP TS-409 Pro添加中文UTF8 locale
QNAP TS-409 Pro NAS中除了C和POSIX以外,不包含utf8的locale,PHP中也不包含iconv。即使是最新版本的3.0.1 Build 0708T也是如此。最直接的结果就是MLDonkey等软件的下载文件名出现乱码或者“_”符号。但QNAP却提供了手工安装locale的方法。但最新的3.0.1版本中,却没有locale和localedef文件,导致按照官方安装locale的方法,无法操作。经过论坛上的各种讨论,可以采用如下的方法来实现。
首先通过SSH登录NAS,找到locale和localedef命令,并创建对应的符号链接:
ll /mnt/HDA_ROOT/rootfs_2_3_6/usr/bin/locale* ln –s /mnt/HDA_ROOT/rootfs_2_3_6/usr/bin/locale /usr/sbin/locale ln –s /mnt/HDA_ROOT/rootfs_2_3_6/usr/bin/localedef /usr/sbin/localedef ll /usr/sbin/locale*
接下来下载Posix-locale文件(下载地址:http://wiki.qnap.com/w/images/7/77/Posix-locales.rar),解压后,上传到任意目录,并将LOCALES重命名为locales。为了节省系统盘空间,推荐在/share/HDA_DATA(或/share/MD0_DATA)中创建一个目录。
mkdir /share/HDA_DATA/i18n ln –s /share/HDA_DATA/i18n /usr/share/i18n cd /usr/share/i18n wget http://wiki.qnap.com/w/images/7/77/Posix-locales.rar unrar Posix-locales.rar mv LOCALES locales
创建/usr/lib/locale目录,该目录用于存储locale-archive文件(也可以使用符号链接)
剩下的步骤就可以创建新的locale了
localedef –i zh_CN –f UTF-8 zh_CN.utf8
如果需要其他的locale,只需要将zh_CN、UTF-8更换为其他的locale即可,具体的参数,可以查看/usr/share/i18n/locales和/usr/share/i18n/charmaps中的文件列表,最后的zh_CN.utf8可以自己指定。
检查新的locale
locale -a
此时即可生成新的zh_CN.utf8的locale,剩下的工作可以为locale-archive创一个符号链接,以便节省/分区的空间。
mv /usr/lib/locale/locale-archive /share/HDA_DATA/locale-archive ln –s /share/HDA_DATA/locale-archive /usr/lib/locale/locale-archive
特别说明
- QNAP NAS会在每次升级之后,重新在硬盘中写入操作系统,所以此过程需要在每次升级版本的时候操作一次。
- 为了避免在UTF8编码无效时,某些软件(如MLDonkey)出现乱码的问题,在操作/升级前,请先关闭所有的QPKG。
- HDA_DATA为不使用RAID配置的路径,如果启用RAID,则将更换为MD0_DATA。
关于MLDonkey
MLDonkey的启动脚本位于/share/HDA_DATA/.qpkg/MLDonkey/mldonkey.sh。该脚本通过/usr/bin/locale取得当前环境的LANG环境变量。我图省事儿,直接将此修改为:
export LANG=zh_CN.utf8




这么复杂,等我买了你来给我安装下吧
照着折腾了一遍 locale -a 也显示 zh_CN.utf8 加上了,重启后依然乱码
唉linux 果然不是普通人能用的啊
localedef -i zh_CN -f UTF-8 zh_CN.utf8
cannot read character map directory `/usr/share/i18n/charmaps’: No such file or directory
这是怎么回事,明明把压缩包里的/charmaps 和/locales 放到了/usr/share/i18n/下 老大 怎么解决
现在charmaps问题解决了 可是又个问题
[/usr/share/il8n/charmaps] # localedef -i zh_CN -f UTF-8 zh_CN.utf8
cannot open locale definition file `zh_CN’: No such file or directory
这什么意思
接下来
[/usr/share/charmaps] # localedef -i zh_CN -f UTF-8 zh_CN.utf8
cannot open locale definition file `i18n’: No such file or directory
@leslie , 提示信息是说文件或文件夹找不到,一个是看这些文件是不是在正确的路径里面,我印象中好像当时我是做了个symbol link
mkdir /mnt/HDA_DATA/i18n 这个目录无法创建,到我可以进入到各个子目录里创建 然后 ln –s /mnt/HDA_DATA/i18n /usr/share/i18n 但是cd 不进去 也是提示找不到文件夹或文件 被折腾疯了
之所以搞这个 是因为我用donkey ftp下载,只要是ftp://路径上有中文名 下载就自动暂定,按照你的这个utf8的转换 能解决这个问题吗?不行的话 我也不弄了 搞了2个通宵 要崩溃了
能不能给个详细的操作步骤,我linux实在不熟悉
“HDA_DATA为不使用RAID配置的路径,如果启用RAID,则将更换为MD0_DATA。”
这个是不是对应替换mkdir /mnt/HDA_DATA/i18n这句命令? 我的/mnt 里面只有/HDA_ROOT,/HDB_ROOT ,/etc 3个目录我试着创建/mnt/HDA_DATA 但重新启动这个目录就消失了
NAS在硬盘上存储的数据(/mnt/HDA_DATA)是都不会消失的,但/mnt等目录是在ROM里面的,重启就消失了。HDA_DATA是没有使用RAID的第一块硬盘,而如果启用RAID,则会变成MD0_DATA。这个目录是自动建立的。你必然会有一个HDA_DATA或者MD0_DATA。
我是用的Raid /mnt下没有HDA_DATA 我在/share 下有HDA_DATA 和 MD0_DATA 是不是
mkdir /mnt/HDA_DATA/i18n 改成mkdir /share/HDA_DATA/i18n
@leslie , 如果用RAID,要把所有的HDA换成MD0(参照特别说明的第三条)。至于/mnt/HDA_DATA和/share/HDA_DATA,是一个东西,symbol link。
[/usr/share/il8n] # cd /usr/share/il8n/charmaps
[/usr/share/il8n/charmaps] # ls
ANSI_X3.4-1968.gz* ISO-8859-13.gz* ISO-8859-2.gz* ISO-8859-6.gz* UTF-8*
ISO-8859-1.gz* ISO-8859-14.gz* ISO-8859-3.gz* ISO-8859-7.gz* UTF-8.gz*
ISO-8859-10.gz* ISO-8859-15.gz* ISO-8859-4.gz* ISO-8859-8.gz* zh_CN*
ISO-8859-11.gz* ISO-8859-16.gz* ISO-8859-5.gz* ISO-8859-9.gz*
[/usr/share/il8n/charmaps] # localedef -i zh_CN -f UTF-8 zh_CN.utf8
cannot open locale definition file `i18n’: No such file or directory
[/usr/share] # localedef -i zh_CN -f UTF-8 zh_CN.utf8
cannot read character map directory `/usr/share/i18n/charmaps’: No such file or directory
[/usr/share/il8n] # localedef -i zh_CN -f UTF-8 zh_CN.utf8
cannot read character map directory `/usr/share/i18n/charmaps’: No such file or directory