V4if 's Blogwebsite

kali rolling 问题修复

发表于2015-12-02
默认

kali rolling下遇到的一些常见问题归类整理,并给出对应的修复办法

“0%[Waiting for headers]”问题的解决

sudo apt-get install software
时一直等,最后以失败告终
解决:
起初,修改了更新源,还是没有解决
后来
cd /var/cache/apt/archives
rm -rf parial
勉强解决

完美解决 Linux 下 Sublime Text 中文输入

1.保存下面的代码为sublime_imfix.c

/*
sublime-imfix.c
Use LD_PRELOAD to interpose some function to fix sublime input method support for linux.
By Cjacker Huang <jianzhong.huang at i-soft.com.cn>

gcc -shared -o libsublime-imfix.so sublime_imfix.c  `pkg-config --libs --cflags gtk+-2.0` -fPIC
LD_PRELOAD=./libsublime-imfix.so sublime_text
*/
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
typedef GdkSegment GdkRegionBox;

struct _GdkRegion
{
  long size;
  long numRects;
  GdkRegionBox *rects;
  GdkRegionBox extents;
};

GtkIMContext *local_context;

void
gdk_region_get_clipbox (const GdkRegion *region,
            GdkRectangle    *rectangle)
{
  g_return_if_fail (region != NULL);
  g_return_if_fail (rectangle != NULL);

  rectangle->x = region->extents.x1;
  rectangle->y = region->extents.y1;
  rectangle->width = region->extents.x2 - region->extents.x1;
  rectangle->height = region->extents.y2 - region->extents.y1;
  GdkRectangle rect;
  rect.x = rectangle->x;
  rect.y = rectangle->y;
  rect.width = 0;
  rect.height = rectangle->height; 
  //The caret width is 2; 
  //Maybe sometimes we will make a mistake, but for most of the time, it should be the caret.
  if(rectangle->width == 2 && GTK_IS_IM_CONTEXT(local_context)) {
        gtk_im_context_set_cursor_location(local_context, rectangle);
  }
}

//this is needed, for example, if you input something in file dialog and return back the edit area
//context will lost, so here we set it again.

static GdkFilterReturn event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer im_context)
{
    XEvent *xev = (XEvent *)xevent;
    if(xev->type == KeyRelease && GTK_IS_IM_CONTEXT(im_context)) {
       GdkWindow * win = g_object_get_data(G_OBJECT(im_context),"window");
       if(GDK_IS_WINDOW(win))
         gtk_im_context_set_client_window(im_context, win);
    }
    return GDK_FILTER_CONTINUE;
}

void gtk_im_context_set_client_window (GtkIMContext *context,
          GdkWindow    *window)
{
  GtkIMContextClass *klass;
  g_return_if_fail (GTK_IS_IM_CONTEXT (context));
  klass = GTK_IM_CONTEXT_GET_CLASS (context);
  if (klass->set_client_window)
    klass->set_client_window (context, window);

  if(!GDK_IS_WINDOW (window))
    return;
  g_object_set_data(G_OBJECT(context),"window",window);
  int width = gdk_window_get_width(window);
  int height = gdk_window_get_height(window);
  if(width != 0 && height !=0) {
    gtk_im_context_focus_in(context);
    local_context = context;
  }
  gdk_window_add_filter (window, event_filter, context); 
}

2.编译动态库:
gcc -shared -o libsublime_imfix.so sublime_imfix.c pkg-config --libs --cflags gtk+-2.0 -fPIC
(编译环境和GTK的dev包请自行安装)
apt-get install build-essential
apt-get install libgtk2.0-dev
3.设置 LD_PRELOAD 并启动 Sublime Text:
LD_PRELOAD=./libsublime_imfix.so sublime_text
为了不用每次启动Sublime Text都打这么一长串东西,写了个启动Sublime的脚本:

#!/bin/bash
subl_home="~/software/sublime_text_3"
ld_lib="$subl_home/libsublime_imfix.so"
sh -c "LD_PRELOAD=$ld_lib $subl_home/sublime_text"

将脚本保存为subl_fcitx,chmod +x,然后cp到/usr/bin/目录下直接执行就可以了

看视频自动黑屏休眠问题

setting->power->blankscrenn(锁屏时间)设置为never

hexo静态博客部署问题

1.npm install hexo-cli -g安装完成之后hexo命令会放在node/bin文件夹下,需要添加软链接或者更改环境变量才可以使用hexo命令
2.hexo deploy时Deployer not found : git错误
–安装 npm install hexo-deployer-git –save
–将deploy 的 type由github改为git

64位开启32位架构,ia32-libs问题

该软件包已经被其他版本替代,只要启用32位架构就可以了,不用安装ia32-libs,在安装32位软件的过程中会自动安装需要的依赖。
启用32位架构:
dpkg –add-architecture i386
sudo apt-get update
不用ia32-libs也能开到兼容32位,如果实在不行可以用下面命令安装其他版本替代
apt-get install libgtk2.0-0:i386
apt-get install lib32ncurses5

解决Could not get lock

/var/cache/apt/archives/lock
在apt-get upgrade的时候,遇到:
E: Could not get lock /var/cache/
apt/archives/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the download directory
解决办法如下:

sudo rm -rf /var/cache/apt/archives/lock
sudo apt-get update

然后apt-get就恢复正常了。

解决dpkg status database is lock…

原因是包管理器没有正确关闭。需要重启计算机或者重新打开终端 输入:

sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a

然后重新安装包。

缩短终端目录

平时我们使用linux终端命令行的时候,常常会被一个问题困扰,那就是文件路径过长,有时候甚至超过了一行,这样看起来非常别扭,其实只要两步就可以解决这个问题:
1.修改.bashrc文件(用户根目录下)
vim 打开.bashrc文件,找到如下这行:

if [ "$color_prompt " = yes ]; then
    PS1 ='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W \[\033[00m\]\$ '
else
    PS1 ='${debian_chroot:+($debian_chroot)}\u@\h:\W \$ '

将上面这行代码中的小写w改为大写的W,保存退出(wq)
2.在终端下执行 source .bashrc
完成上面两步操作之后,重新进入到一个目录,此时在终端下只显示当前文件所在目录名称。

kali修复 add-apt-repository

add-apt-repository是一个导入ppa源的工具,不知为何kali-linux去掉了

安装依赖

apt-get install python-software-properties

编辑vim add-apt-repository

#!/bin/bash
if [ $# -eq 1 ]
    NM=`uname -a && date`
    NAME=`echo $NM | md5sum | cut -f1 -d" "`
then
    ppa_name=`echo "$1" | cut -d":" -f2 -s`
    if [ -z "$ppa_name" ]
    then
        echo "PPA name not found"
        echo "Utility to add PPA repositories in your debian machine"
        echo "$0 ppa:user/ppa-name"
    else
        echo "$ppa_name"
        echo "deb http://ppa.launchpad.net/$ppa_name/ubuntu lucid main" >> /etc/apt/sources.list
        apt-get update >> /dev/null 2> /tmp/${NAME}_apt_add_key.txt
        key=`cat /tmp/${NAME}_apt_add_key.txt | cut -d":" -f6 | cut -d" " -f3`
        apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
        rm -rf /tmp/${NAME}_apt_add_key.txt
    fi
else
    echo "Utility to add PPA repositories in your debian machine"
    echo "$0 ppa:user/ppa-name"
fi

继续执行

cp add-apt-repository.sh /usr/sbin/add-apt-repository
chmod o+x /usr/sbin/add-apt-repository
chown root:root /usr/sbin/add-apt-repository