艾莉亚的猫 Time is limited, To be a better man

Repack a .deb archive

长话短说,我要将.deb文件解包,替换上我的补丁文件,然后再重新打包回来。这样我可以其它电脑上安装,或者将修正的包文件发给我的朋友。我要怎么做呢?

只需要以下5条命令:

mkdir -p extract/DEBIAN

dpkg-deb -x package.deb extract/

dpkg-deb -e package.deb extract/DEBIAN

[…do something, e.g. edit the control file…]

mkdir build

dpkg-deb -b extract/ build/


  • 第一条命令创建了一个名为“extract”文件夹和一个名为“DEBIAN”的子文件夹;

  • 第二条命令会从你的.deb包提取一些文件到“extract”文件夹;

  • 第三条命令会解压.deb包的内容到“DEBIAN”子文件夹,在那里你就可以修改/补丁你想要的文件;

  • 第四条命令建立一个名为“build”的文件夹;

  • 而第五条命令会将修改后的文件重新构建到一个新的.deb包中,并在 “build” 文件夹中生成。

Git Submodule的使用

这两天在看facebook放在github上的开源项目,C++还挺多的。让我发现了git submodule这个东西,这里拿来说说。

Git子模块功能允许你将一个Git仓库当作另外一个Git仓库的子目录,允许你克隆另外一个仓库到你的项目中并且保持你的提交相对独立。这样既不会造成代码的冗余,也不丢弃公共代码库的维护历史,真的很牛逼

这里拿我的Winterfell工程做测试,来熟悉一下git submodule的操作

为当前工程添加子模块

git submodule add https://github.com/google/snappy git_submodule_test

执行此命令后,当前目录下新增.gitmodules文件和git_submodule_test目录,进入目录可以看到snappy的源码。.gitmodules文件内容如下

Ubuntu14.04安装QQ国际版

最近重装了两台机子的操作系统,一个安装Centos,一个还是Ubuntu,用于平时工作。今天在网上找了个国际QQ的教程,很不错,自己备份一下。

安装依赖库

sudo apt-get install libgtk2.0-0:i386

64位机还需要执行下面命令

sudo apt-get install lib32ncurses5

解压安装wineqqintl

1 先去网上下载一个wine-qqintl.zip

2 解压zip包,进入目录可以看到三个debian包

sudo apt-get install -f

sudo dpkg -i wine-qqintl_0.1.3-2_i386.deb

sudo dpkg -i ttf-wqy-microhei_0.2.0-beta-2_all.deb

sudo dpkg -i fonts-wqy-microhei_0.2.0-beta-2_all.deb

接着你就可以运行QQ了,其中设置了常用功能,比较精简,CPU占用少。

我的.vimrc配置文件

我的vim使用应该是比大多数Linux后端工程师玩得溜的,别问我为什么,我只会这个:-( 如果你工作中接触Linux,那还是要学习一下Vim,不建议大家去安装VIM插件,感觉不是很给力,主要还是学习成本。

这里给出一些tips:

是否要设置自动缩进,见仁见智

ctags配置、状态栏、高亮当前行都挺好

autocmd BufWritePre,BufRead 谨慎使用,特别是修改的代码有版本控制

有些坑还是要说一说的,比如 jk 映射 你可要小心,举个栗子吧(你正要输入的字符类似"asdfghjkl",发现粗大事了)

另外,如果你试着去屏蔽掉方向键,开始可能会很不适应

这里展示下我自己的vim配置,供参考:

我的GIT配置文件

Git有一个工具被称为git config,它允许你获得和设置配置变量,用以控制Git的外观和操作的各个方面,这些变量可以被存储在三个不同的位置:

/etc/gitconfig 文件

~/.gitconfig 文件,这是我的GIT文件配置,如下:

[user]
    email = jiangzheahu@126.com
    name = jiangzhe

[push]
    default = matching

[color]
    ui = true

[core]
    editor = vim

[alias]
    co = checkout
    ci = commit
    st = status
    br = branch -v
    rt = reset --hard
    unstage = reset HEAD^
    uncommit = reset --soft HEAD^
#l = log --pretty=oneline -- abbrev-commit --graph --decorate
    l = log --pretty=format:'%h : %s' --topo-order --graph
    g = grep -n --color -E
    cp = cherry-pick -x
    nb = checkout -b
    amend = commit --amend
    who = shortlog -n -s --no-merges

#'git add -u' handles deleted files, but not new files
#'git add .' handles any current and new files, but not deleted
#'git addall' noe handles all changes
    addall = !sh -c 'git add . && git add -u'

#Handy shortcuts for rebasing
    rc = rebase --continue
    rs = rebase --skiip
    ra = reabse --abort

位于git目录的config文件(也就是 .git/config),这里稍微瞅瞅:

[core]
    repositoryformatversion = 0 
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = https://github.com/yangtze736/yangtze736.github.io
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master