3rd-party apt-key list for Ubuntu

## Google Chrome

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
sudo apt-get update
sudo apt-get install google-chrome-stable

## JDK 1.7

echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java7-installer

## NodeJS

sudo add-apt-repository ppa:chris-lea/node.js

## MongoDB

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

可自动安装依赖的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平铺式桌面管理器,多显示器环境下非常好用,[强烈推荐](http://i3wm.org)。除此之外,GUI底层用的是KDE。

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

解决办法是安装[Compton](https://github.com/chjj/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

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

LD_LIBRARY_PATH shouldn't contain the current directory

I am trying to build a self-contain GLIBC 2.7. It shows following error when I run ```configure```

checking whether ranlib is necessary... no
checking LD_LIBRARY_PATH variable... contains current directory
configure: error:
*** LD_LIBRARY_PATH shouldn't contain the current directory when
*** building glibc. Please change the environment variable
*** and run configure again.

my LD_LIBRARY_PATH is

echo LD_LIBRARY_PATH
/home/sliu/opt/lib:/home/sliu/opt/libexec/gcc/x86_64-unknown-linux-gnu/4.8.1:/home/sliu/opt/lib64:/home/sliu/opt/lib64/gcj-4.8.1-14:

The error message complains that LD_LIBRARY_PATH contain the current directory. However my LD_LIBRARY_PATH doesn't contain any "current directory". Actually, it's caused by the path seperate character ":" instead of "current directory". If you search LD_LIBRARY_PATH in ```configure```, you will find this comments

# Test if LD_LIBRARY_PATH contains the notation for the current directory
# since this would lead to problems installing/building glibc.
# LD_LIBRARY_PATH contains the current directory if one of the following
# is true:
# - one of the terminals (":" and ";") is the first or last sign
# - two terminals occur directly after each other
# - the path contains an element with a dot in it

Which means, **The LD_LIBRARY_PATH can not start or end with character ":".**

So this issue can be fixed by removing the last ':' character in LD_LIBRARY_PATH.

解决办法就是,去掉 LD_LIBRARY_PATH 最后的那个路径分隔符':'.

ibus-pinyin doesn't work in KUbuntu 13.10

ibus and ibus-pinyin doesn't work in KUbuntu 13.10. It looks like this

$ ibus-setup
ERROR:root:Could not find any typelib for Gtk
Traceback (most recent call last):
File "/usr/share/ibus/setup/main.py", line 29, in
from gi.repository import Gtk
ImportError: cannot import name Gtk

The problem is a dependency package is missing. This problem can be solved by this command: `sudo apt-get install gir1.2-gtk-3.0`.

phpMyAdmin login error to remote server

I have a fresh install of Ubuntu 13.10 and phpMyAdmin version 4:4.0.6-1 . I add a remote server in config.inc.php for multiple server management. But phpMyAdmin failed to login to remote server.

there are following error logs in `/var/log/apache2/error.log`

PHP Fatal error: Call to a member function getPresence() on a non-object in /usr/share/phpmyadmin/libraries/navigation/NavigationTree.class.php on line 1046

The code of `NavigationTree.class.php` at 1046 are

1039 } else if ((node->type == Node::CONTAINER 1040 && ( node->real_name == 'tables'
1041 || node->real_name == 'views' 1042 || node->real_name == 'functions'
1043 || node->real_name == 'procedures' 1044 || node->real_name == 'events')
1045 )
1046 && node->realParent()->getPresence(node->real_name) >= (int)GLOBALS['cfg'] ['NavigationTreeDisplayItemFilterMinimum'] 1047 ) { I am not sure the root cause of this issue. But I can fix this error by adding a check for if statment 1039 } else if ((node->type == Node::CONTAINER
1040 && ( node->realParent ) 1041 && ( node->real_name == 'tables'
1042 || node->real_name == 'views' 1043 || node->real_name == 'functions'
1044 || node->real_name == 'procedures' 1045 || node->real_name == 'events')
1046 )
1047 && node->realParent()->getPresence(node->real_name) >= (int)$GLOBALS['cfg']['NavigationTreeDisplayItemFilterMinimum']
1048 ) {

That's it.