genymotion Qt error in Ubuntu

When I was trying to install Genymotion on Ubuntu 14.04, I got this error

Installing log handler
Logging activities to file: /home/****
Aborted (core dumped)

the log file /home/xx/.Genymotion/genymotion.log has the following message:

... [Genymotion] [Fatal] Cannot mix incompatible Qt library (version 0x40806) with this library (version 0x40804)

The reason of this error is that Genymotion has its own Qt library which is not compatable with the system Qt library.

To fix this error, we need to let genymotion use system's Qt library. The following commands can fix this issue

sudo apt-get install libxi-dev libxmu-dev
# go to your genymotion directory
mkdir QtLibs && mv *Qt*.so* QtLibs

可自动安装依赖的Ubuntu离线包安装工具 gdebi

可自动安装依赖的Ubuntu离线包安装工具 gdebi

Ubuntu下,通用的在线包管理工具是apt,但是对于下载好的离线deb包,我们通常会用dpkg -i xxx.dev来安装,但是这样常常会遇到依赖包不存在而无法安装的错误。dpkg不会为我们自动解决包依赖的问题,也不会自动下载安装所依赖的包。 gdebi是一个类似的管理工具,但是会自动下载安装依赖。

对于一个离线包,只需要使用下面的命令即可自动下载安装,包括所有依赖包

    gdebi package_name.deb

可以使用下面这条命令安装这个工具

    sudo apt-get install gdebi

better-package-tool-gdebi

解决搜狗输入法Ubuntu 14.04下黑块状态条

搜狗的Linux输入法正式版发布之时,恰好Ubuntu 14.04 LTS也刚刚发布正式版。尝试安装搜狗的Linux输入法之后,出现了一个小小的问题:输入法状态条是一个黑色块。

我的Linux桌面用的是i3平铺式桌面管理器,多显示器环境下非常好用,强烈推荐。除此之外,GUI底层用的是KDE。

做了一番功课之后,结果发现因为搜狗要支持皮肤,所以那个状态条是半透明状态的。而我目前的默认环境下不支持compositor窗口管理器,无法处理半透明窗口的效果,于是就只能显示一个黑色块。

解决办法是安装Compton,以支持窗口的半透明效果。Ubuntu默认情况下没有可用的APT源,有两种办法安装:一个是从源码编译(不赘述),另外一个是使用一个第三方的源。

安装第三方源并安装compton

sudo apt-add-repository ppa:richardgv/compton 
sudo apt-get update && sudo apt-get install compton

配置compton

编辑文件 ~/.compton.conf,输入如下内容

backend = "glx";
paint-on-overlay = true;
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
vsync = "opengl-swc"; 

# These are important. The first one enables the opengl backend. The last one
# is the vsync method. Depending on the driver you might need to use a
# different method.
# The other options are smaller performance tweaks that work well in most
# cases. 
# You can find the rest of the options here:
# https://github.com/chjj/compton/wiki/perf-guide, and here:
# https://github.com/chjj/compton/wiki/vsync-guide


# Shadow
shadow = false;          # Enabled client-side shadows on windows.
no-dock-shadow = true;      # Avoid drawing shadows on dock/panel windows.
no-dnd-shadow = true;       # Don't draw shadows on DND windows.
clear-shadow = true;        # Zero the part of the shadow's mask behind the window (experimental).
shadow-radius = 7;      # The blur radius for shadows. (default 12)
shadow-offset-x = -7;       # The left offset for shadows. (default -15)
shadow-offset-y = -7;       # The top offset for shadows. (default -15)
shadow-exclude = [
    "! name~=''",
    "n:e:Notification",
    "n:e:Plank",
    "n:e:Docky",                                                                                                                                                                                                 
    "g:e:Synapse",                                                                                                                                                                                               
    "g:e:Kupfer",                                                                                                                                                                                                
    "g:e:Conky",                                                                                                                                                                                                 
    "n:w:*Firefox*",                                                                                                                                                                                             
    "n:w:*Chrome*",                                                                                                                                                                                              
    "n:w:*Chromium*",                                                                                                                                                                                            
    "class_g ?= 'Notify-osd'",                                                                                                                                                                                   
    "class_g ?= 'Cairo-dock'",                                                                                                                                                                                   
    "class_g ?= 'Xfce4-notifyd'",                                                                                                                                                                                
    "class_g ?= 'Xfce4-power-manager'"                                                                                                                                                                           
];                                                                                                                                                                                                            

# The shadow exclude options are helpful if you have shadows enabled. Due to                                                                                                                                  
# the way compton draws its shadows, certain applications will have visual                                                                                                                                    
# glitches                                                                                                                                                                                                    
# (most applications are fine, only apps that do weird things with xshapes or                                                                                                                                 
# argb are affected).                                                                                                                                                                                         
# This list includes all the affected apps I found in my testing. The "!                                                                                                                                      
# name~=''" part excludes shadows on any "Unknown" windows, this prevents a                                                                                                                                   
# visual glitch with the XFWM alt tab switcher.                                                                                                                                                               

# Fading
fading = true; # Fade windows during opacity changes.
fade-delta = 4; # The time between steps in a fade in milliseconds. (default 10).
fade-in-step = 0.03; # Opacity change between steps while fading in. (default 0.028).
fade-out-step = 0.03; # Opacity change between steps while fading out. (default 0.03).
#no-fading-openclose = true; # Fade windows in/out when opening/closing

detect-client-opacity = true; # This prevents opacity being ignored for some apps. For example without this enabled my xfce4-notifyd is 100% opacity no matter what.

# Window type settings
wintypes:
{
  tooltip = { fade = true; shadow = false; };
};

重点是其中 shadow 一项的值设置为 false 。

自启动

最后,修改i3配置文件 ~/.i3/config,在最后加入下面的代码,实现自动启动compton和搜狗输入法

# auto start commands
exec --no-startup-id fcitx -r
exec --no-startup-id fcitx-qimpanel
exec --no-startup-id compton -b

安装完成了,系统也顺便带了半透明和淡入淡出效果。

Setup Ghost blog system on Ubuntu

Installation

Make sure you have install all required package

sudo apt-get install npm nodejs

Goto https://ghost.org/download/ , download the latest zip file

$ wget https://ghost.org/zip/ghost-0.4.2.zip
$ unzip ../ghost-0.4.2.zip -d ghost
$ cd ghost
$ npm install --production
...
$ npm start

> ghost@0.4.2 start /home/simon/downloads/ghost
> node index

Ghost is running in development... 
Listening on 127.0.0.1:2368 
Url configured as: http://my-ghost-blog.com 
Ctrl+C to shut down

Now you can browse your own Ghost blog at http://127.0.0.1:2368

It's very possible that you got the below error when you run npm install --production

> sqlite3@2.2.0 install /home/simon/downloads/ghost/node_modules/sqlite3                                         
> node-pre-gyp install --fallback-to-build                                                                       

/usr/bin/env: node: No such file or directory                                                                    
npm WARN This failure might be due to the use of legacy binary "node"                                            
npm WARN For further explanations, please read                                                                   
/usr/share/doc/nodejs/README.Debian                                                                              

npm ERR! sqlite3@2.2.0 install: `node-pre-gyp install --fallback-to-build`                                       
npm ERR! `sh "-c" "node-pre-gyp install --fallback-to-build"` failed with 127                                    
npm ERR!                                                                                                         
npm ERR! Failed at the sqlite3@2.2.0 install script.                                                             
npm ERR! This is most likely a problem with the sqlite3 package,                                                 
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-pre-gyp install --fallback-to-build
npm ERR! You can get their info via:
npm ERR!     npm owner ls sqlite3
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.11.0-13-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "--production"
npm ERR! cwd /home/simon/downloads/ghost
npm ERR! node -v v0.10.15
npm ERR! npm -v 1.2.18
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/simon/downloads/ghost/npm-debug.log
npm ERR! not ok code 0

This error is caused by the wrong node command symblic link in your system. To fix this, run the following command, then run npm install --production again.

sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

It should work now.

Configuration

After start the Ghost successfully, you need to go to administration page to configure your Blog or write a new post.

First, go to http://127.0.0.1:2368/ghost/. It will redirect to sign up page.

Then, type your inforamtion and 'Sign Up', you will be redirect to the administration page.

Forecast::IO 599 Internal Exception

Forecast.io provide great public weather data service API. They also provide SDK for many languages which is very friendly to developers.

However if you are using their Perl module Forecast::IO, maybe you will have this error when you try to install it

Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/forecast.t .. # Please enter your Forecast.io API key: 
xxxxxxxxxxxxxxxxxxxx
Request to 'https://api.forecast.io/forecast/xxxxxxxxxxxxxxxxxxxx/43.6667,-79.4167,1373241600?units=auto' failed: 599 Internal Exception
# Looks like your test exited with 255 before it could output anything.
t/forecast.t .. Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 6/6 subtests

The root cause of this error is Forecast::IO use HTTP::Tiny for HTTP request. And HTTP::Tiny need Net::SSLeay module to access HTTPS url. If the module was not installed HTTP::Tiny would only say 599 error and you can't know the real reason unless you look into the code and try it like below.

$ perl -e "use HTTP::Tiny; use Data::Dumper; print Dumper(HTTP::Tiny->new>get('https://api.forecast.io/forecast/xxxxxxxxxxxxxxxxxxxx/43.6667,-79.4167,1373241600?units=auto'));"
$VAR1 = {
          'success' => '',
          'headers' => {
                         'content-type' => 'text/plain',
                         'content-length' => 53
                   },
          'status' => 599,
          'content' => 'Net::SSLeay 1.49 must be installed for https support',
          'reason' => 'Internal Exception',
          'url' => 'https://api.forecast.io/forecast/xxxxxxxxxxxxxxxxxxxx/43.6667,-79.4167,1373241600?units=auto'
        };

This is really a confused way to report this error.

Anyway, to fix this issue you only need to install the module Net::SSLeay

sudo perl -MCPAN -e 'install Net::SSLeay'