Ubuntu

Table of Contents

1 写在前面

千万不要抱有一朝一兮就可以搞定的想法。最好的话身边有一个群体,大家都使用Ubuntu这个东西。这样如果有什么问题的话,大家就比较容易找到解决办法,直到自己完全适应为止。推荐安装下面这些软件:

UPDATE(2017-10-04): 这几天又重新安装ubuntu,觉得这个东西很多组件都没有带上。转了一圈之后觉得deepin可能还不错,所以就试试这个东西。用下来感觉还不错,几个比较方便的东西:

  1. 自带了搜狗输入法
  2. vpn支持l2tp, 这点非常重要
  3. AppStore里面带了很多使用了Wine包装过的程序,比如微信和QQ等

感觉deepin非常适合中国人民使用。相比Ubuntu来说,本地化工作做的好太多了。

Desktop Applications:

  • sudo apt-get install emacs24
  • sudo apt-get install vlc # 视频
  • sudo apt-get install okular # pdf阅读
  • sudo apt-get install kchmviewer # chm阅读
  • #sudo apt-get install kdenlive # 视频编辑
  • #sudo apt-get install recordmydesktop # 录制桌面
  • sudo apt-get install zsh
  • sudo apt-get install vim
  • sudo apt-get install fcitx
  • sudo apt-get install fcitx-googlepinyin
  • sudo apt-get install im-config
  • sudo apt-get install alarm-clock-applet # 定时闹钟
  • sudo apt-get install virtualbox
  • sudo apt-get install virtualbox-guest-additions-iso
  • sudo apt-get install nautilus-dropbox
  • sudo apt-get install shadowsocks-qt5

Development Applications:

  • sudo apt-get install linux-tools-common
  • sudo apt-get install linux-base
  • sudo apt-get install software-properties-common
  • sudo apt-get install openjdk-7-jdk
  • sudo apt-get install openjdk-7-doc
  • sudo apt-get install git
  • sudo apt-get install ntp
  • sudo apt-get install rar
  • sudo apt-get install curl
  • sudo apt-get install rsync
  • sudo apt-get install screen
  • sudo apt-get install maven
  • sudo apt-get install scons
  • sudo apt-get install cmake
  • sudo apt-get install ccache
  • sudo apt-get install samba
  • sudo apt-get install nginx
  • sudo apt-get install docker.io
  • sudo apt-get install graphviz
  • sudo apt-get install gdebi-core
  • sudo apt-get install openvpn
  • sudo apt-get install openssh-server
  • sudo apt-get install mysql-server
  • sudo apt-get install redis-server
  • sudo apt-get install markdown
  • sudo apt-get install p7zip-full

Performance Tuning:

  • sudo apt-get install htop
  • sudo apt-get install sysstat
  • sudo apt-get install iotop
  • sudo apt-get install iftop
  • sudo apt-get install google-perftools

Python Libraries:

  • sudo apt-get install python-dev
  • sudo apt-get install python-doc
  • sudo apt-get install ipython
  • sudo apt-get install ipython-doc
  • sudo apt-get install ipython-notebook
  • sudo apt-get install python-setuptools
  • sudo apt-get install python-pip
  • sudo apt-get install python-redis
  • sudo apt-get install python-mysqldb
  • sudo apt-get install python-gevent
  • sudo apt-get install python-m2crypto
  • sudo apt-get install gunicorn

C++ Libraries:

  • sudo apt-get install libboost-all-dev
  • sudo apt-get install libevent-dev
  • sudo apt-get install libssl-dev
  • sudo apt-get install libaio-dev
  • sudo apt-get install libgoogle-perftools-dev

2 系统配置

2.1 察看ubuntu内部版本

lsb_release -a

➜  note git:(master) ✗ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04 LTS
Release:        12.04
Codename:       precise

#note@2014-11-17: upgrade to 'trusty'

➜  ~  lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 14.04.1 LTS
Release:	14.04
Codename:	trusty

2.2 重启机器

似乎Ubuntu下面限制用户进行重启,可以使用sudo reboot重启机器。

2.3 关闭机器

关闭机器同样需要超级权限,可以使用sudo shutdown 0立即关闭机器。

2.4 重启unity

unity restart &

#note: 这种方式可以work但是似乎问题比较多,如果unity出现问题还是重启系统比较方便

2.5 设置字符界面启动

  • 编辑文件/etc/default/grub
  • GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"修改成GRUB_CMDLINE_LINUX_DEFAULT="quiet splash text"
  • 运行sudo update-grub

2.6 绑定静态IP

修改/etc/network/interfaces

auto eth0
iface eth0 inet static
address 10.18.102.200
netmask 255.255.255.0
gateway 10.18.102.254

修改/etc/nsswitch.conf

hosts:          files dns
networks:       files

然后重启网络

sudo /etc/init.d/networking restart

2.7 修改主机名称

  • sudo hostname <name>
  • vim /etc/hostname

2.8 root密码

初次启动的时候需要使用sudo passwd root来修改root密码

使用passwd -d <user>可以用来删除密码

2.9 deb使用

安装deb使用命令 sudo dpkg -i test.deb. (使用dpkg并不会自动下载.deb所需要的依赖. 这个工作可以通过gdebi来完成)

通常我们不太清楚一个deb安装了哪些文件,尤其是doc的话可能不知道放置在什么位置上面。我们可以通过搜索引擎查找这个包,然后在 http://packages.ubuntu.com/ 下面找到这个包以及对应的文件列表信息。

doc存放位置通常在/usr/share/doc/<package>/下面。

使用alien在deb和rpm之间转换

  • 安装alien
  • rpm转deb sudo alien -d test.rpm
  • deb转rpm sudo alien -r test.deb

看了一下alien的help还可和下面几个包格式互转

  • slp
  • lsb
  • tgz
  • pkg

甚至可以直接调用alien -i test.rpm直接安装而不需要转换。

使用dpkg –listfiles可以查看安装了哪些文件


使用apt-cache depends <package>可以查看<package>的依赖,rdepends则可是查看反向依赖

➜  debs git:(devel-yan) ✗ apt-cache rdepends tcpdump
tcpdump
Reverse Depends:
  tcpdump:i386
  kubuntu-active
  tcpdump:i386
  ulogd2-pcap
  tcptrace
  tcpstat
  tcpflow
  ssldump
  python-scapy
  python-ns3-dbg
  python-ns3
  pcapfix
  nstreams
  kubuntu-active
  iptotal
  dhcpdump
  core-network-gui
  core-network
  chaosreader
 |bittwist
  ubuntu-standard
➜  debs git:(devel-yan) ✗ apt-cache depends tcpdump
tcpdump
  Depends: libc6
  Depends: libpcap0.8
  Depends: libssl1.0.0
  Suggests: apparmor
  Conflicts: tcpdump:i386

关于制作deb包,下面两个链接比较有帮助

2.10 The System Running In Low Graphics Mode

http://simpledeveloper.com/system-running-in-low-graphics-mode/

  • CTRL + ALT + F1 切换到terminal
  • # sudo apt-get -d install –reinstall gdm
  • # sudo apt-get remove –purge gdm
  • # sudo apt-get install gdm
  • # sudo reboot

2.11 apt-get: Waiting for headers

http://askubuntu.com/questions/156650/apt-get-update-very-slow-stuck-at-waiting-for-headers

可能是因为网络链接不太好,也可能是因为源服务器不太稳定。如果确定是自己源服务器不太稳定的话,那么可以更换源服务器。

Update Manager -> Settings -> Ubuntu Software -> Download from Other -> Select Best Server

2.12 /sbin/insserv: No such file or directory

这个命令会在chkconfig(用于配置是否自动启动)里面用到.

➜  nginx  sudo chkconfig lighttpd off
/sbin/insserv: No such file or directory

解决办法是做个软链接 "sudo ln -s /usr/lib/insserv/insserv /sbin/insserv"

2.13 允许/禁止服务自动启动

chkconfig可以用来配置服务是否自动启动 sudo chkconfig <service> on/off

另外使用chkconfig还可以用来查看当前服务自动启动情况

➜  nginx  chkconfig
distcc                   on
docker                   off
lighttpd                 off
mysql                    off
nginx                    on
ntp                      on
ondemand                 on
openvpn                  on
redis-server             off
resolvconf               off
rsync                    on
rsyslog                  off
samba                    off
samba-ad-dc              off
saned                    on
screen-cleanup           off
screen-cleanup.dpkg-new  off
sendsigs                 0
smbd                     off
speech-dispatcher        on
ssh                      off
sudo                     on
sysstat                  on
virtualbox               on
virtualbox-guest-utils   on
virtualbox-guest-x11     on

#note@2014-11-30: ubuntu后期版本移除了这个组件,使用sysv-rc-conf来代替. 使用–list可以列出所有当前服务

➜  .private  sudo sysv-rc-conf --list
collectl     0:off1:off2:on3:on4:on5:on6:off
distcc       0:off1:off2:on3:on4:on5:on6:off
docker
mysql        2:off3:off4:off5:off
ntp          1:off2:on3:on4:on5:on
rc.local     2:on3:on4:on5:on
reboot       6:on
redis-server 0:off1:off2:off3:off4:off5:off6:off
resolvconf
rsync        2:on3:on4:on5:on
rsyslog
samba
sudo         2:on3:on4:on5:on
sysstat      2:on3:on4:on5:on
urandom      0:on6:onS:on
virtualbox   0:off1:off2:on3:on4:on5:on6:off
virtualbox-g 0:off1:off2:on3:on4:on5:on6:off

然后使用sudo sysv-rc-conf <service> on/off 来配置是否自动启动

2.14 修改分区

可以使用Ubuntu Disk工具来修改分区。

修改分区之后可能会在启动时候出现错误,显示这些分区不存在无法挂载。可能的原因是这些分区的UUID发生变化,但是在/etc/fstab里面却没有更新过来。

我们可以手工编辑/etc/fstab来更正,可以使用blkid查看各个设备的UUID

➜  ~  blkid
/dev/sda1: UUID="26971214-3b4d-455c-ab3d-cefae2d8cfd8" TYPE="ext4"
/dev/sda5: LABEL="swap" UUID="cd6de3d9-6a98-46c2-9875-de12251fe82e" TYPE="swap"
/dev/sda6: LABEL="extra" UUID="6ac0d95d-b2fc-426f-bf7b-4a3669442ea6" TYPE="ext4"
/dev/sdb2: UUID="4ed192d5-884b-43a4-904b-fb9cb5f193b2" TYPE="ext4"

2.15 设置apt源

好的apt源可以加快软件安装,节省不少时间。默认源mirrors.ubuntu.com离中国比较远所以下载会很慢。

Ubuntu Software Center -> Edit -> Software Sources -> Ubuntu Sofware(Download from)

点击Select Best Server来让自动选择最好的服务器。如果是中国的话可能163.com或者是aliyun.com会比较好点。修改完成后记得要apt-get update.

3 桌面应用

3.1 amarok循环播放

在amarok的右下角有task progression的图标,选择repeat track即可。

3.2 设置输入法切换

在Preferences里面:

  • Input Method 里面添加 SunPinyin
  • 然后在General里面的Keyboard Shortcuts里面设置Enable or disable设置切换按键
    • Release+Shift_L 左边的Shift键
    • Constrol+space control和空格键
    • 这些都和windows输入法的默认配置很像。

#note: 在Emacs里面需要安装ibus.el以及ibus-agent。但是现在不知道为什么左边的Shift键在Emacs里面一直不能使用。

#note: ibus.el只能支持到了ubuntu12.04, 升级到14.04之后就不能再使用了。所以现在只能使用emacs -nw在终端下工作:(

3.3 自动启动输入法

另外系统默认是不会自动启动ibus的,可以在System Settings里面的Language Support里面设置Input method为ibus, 这样ibus就可以自动启动了。如果emacs需要使用ibus的话,那么ibus-daemon必须先于emacs启动。可能这样agent才能够工作。

3.4 google docs不能输入中文

似乎sunpinyin在google docs下面工作不是很好。使用原来的pinyin就没有问题。what a shame!

3.5 设置默认浏览器

System Settings =》 Details 里面可以设置默认浏览器。至于emacs里面的话可以使用如下配置。

(setq browse-url-generic-program (executable-find "chromium-browser")
      browse-url-browser-function 'browse-url-generic)

3.6 thunderbird配置gmail

  • pop3 pop.gmail.com SSL/TLS 995 normal password
  • smtp smtp.gmail.com SSL/TLS 465 normal password
  • #note: 需要确认gmail允许pop3来访问
  • 不过似乎现在thunderbird已经非常智能了,只要输入username以及email的话就可以自动进行配置了。nice!!!(现在看起来选择iamp模式也没有什么问题)
  • server settings =>
    • 1) leave mesages on server until I delete them. (对于imap模式来说的话,就使用默认移动到Trash下面即可)
    • 2) empty trash on exit.
    • 3) check for new messages at startup.
    • 4) check for new messages every 10 minutes.
  • copies and folders => 1) cc these email addresses: dirtysalt1987@gmail.com(如果使用imap模式可以不使用)
  • composition and addressing => 1) start my reply above the quote and place my signature below the quote.
  • 设置签名

3.7 thunderbird的Inbox文件过大

在安装新的操作系统时候,可能需要将原来的邮件全部迁移过去。thunderbird迁移邮件非常方便。在C:\Documents and Settings\\Application Data\Thunderbird\Profiles\wkq5wydz.default\Mail\ 下面会有你这个pop-server对应的文件,比如Inbox(对应thunderbird的收件箱),Drafts(对应thunderbird的草稿箱)等。将这些文件直接copy过去就OK了。不得不说这点非常方便:)

但是我们会遇到一个问题就是Inbox文件太大了。而且如果我们在thunderbird下面删除收件箱里面内容的话,会发现这个Inbox文件其实没有发生变化。原因是因为thunderbird采用标记删除,所以原来的邮件内容依然是保存的(也就是说如果我们通过修改Inbox里面的标记位是可以恢复的,而且这个工作不难,因为阅读Inbox的内容就会发现里面保存的文本格式。不过谨慎选用编辑器,不要将Inbox内容全部载入不然内存会爆掉的)。 解决这个问题非常简单,就是在thunderbird下面针对这个文件夹右键点击压缩。对于草稿箱和其他的文件夹是一样的操作。而且在thunderbird下面有工具->选项->高级->网络&磁盘空间里面,可以选择如果超过过大的话就会进行压缩。

作为后端开发者,觉得thunderbird这样做是很正常的。有几种方式:

  1. 一种是用小碎片文件来解决,每个小碎片文件对应一个邮件,但是这样邮件太多的话性能和碎片会成为问题,但是增加和删除都非常方便
  2. 另外就是使用大文件来追加写,然后针对每封邮件进行索引。索引可以保存在内存里面并且定期dump出去,启动时候检查索引是否和文件对应,不对应的话那么可能需要增量做一部分索引。但是这样删除会成为问题,标记删除可能就是最好的办法了。所以需要用户手动或者是通过程序判断磁盘文件大小来触发压缩。
  3. 使用数据库本质上和2是一样的,只不过可以在一定程度上简化代码。在删除方便可能还是使用压缩删除。如果是我自己做的话那么可能考虑使用sqlite来做。单机可以embed,并且通过SQL来进行检索或者是其他操作。

#note: 其实thunderbird超过一定大小就会自动提醒是否需要压缩

3.8 窗口常用快捷键

  • Ctrl+Alt+T // 打开一个terminal。
  • Ctrl+Alt+上下左右 // 在不同的workspace之间切换。

3.9 调整字体大小

System Settings =》 Universal Access里面的Seeing部分可以用来调整字体大小。但是只有等级没有具体的数字可以进行调整。 可以通过安装gnome-tweak-tool并且运行之来进行微调。

参考链接 http://ltek.dyndns.org/wordpress/?p=282

3.10 调整边栏大小

System Settings => Appearance => Launcher icon size.

3.11 调整skype字体大小

http://www.mintos.org/network/modify-skype-font.html

  • 安装qt4-config # sudo apt-get install qt4-qtconfig
  • 修改字体(font size=12)和外观(Clearlooks)
  • 点击qt4-config的菜单栏保存
  • 重启skype即可观察到字体修改效果

3.12 vlc字幕乱码

Tools -> Preferences -> Subtitles & OSD

使用默认的编码(encoding)就行,然后选择font为"WenQuanYi Micro Hei"(默认的字体应该是不能够显示中文)

3.13 使用搜狗输入法

搜狗输入法依赖于fcitx框架,所以必须先安装好fcitx. 然后从搜狗输入法主页上下载deb进行安装。http://pinyin.sogou.com/linux/?r=pinyin

通常系统会安装多种输入法框架比如ibus/fcitx,所以我们必须配置使用什么输入法框架,这个工作可以通过im-switch/im-config来完成。

因为搜狗输入法是基于云的输入法,所以输入效果相比单机输入法比如sunpinyin会好很多。安装完成之后需要重启X.

#note: fcitx-googlepinyin也不错

4 编程环境

4.1 bash的tab自动补全

  • # sudo apt-get install bash-completion

但是我觉得这个自动补全有点不太好的就是,比如我cd ~/.ssh/想自动补全的话,我不仅仅是希望能够补全目录(虽然cd参数只能够是目录),我还希望可以显示文件(比如我想知道这个目录下面是否有Makefile或者是pom.xml),这样就可以快速判断某个文件是否在目录下面。不然我只能调回命令行开头,切换成为cat,然后跳回去使用两次tab进行自动补全(cat能够显示文件).

这个自动补全配置文件在/etc/bash_completion下面。阅读代码发现可能是和file_dir这个函数相关。调用时候使用file_dir -d的话只会显示目录,而file_dir的话就会显示所有。所以最简单的做法就是将file_dir -d全部替换成为file_dir. done!!!

4.2 加快ssh登陆

对于服务器的话可以修改/etc/ssh/sshd_config

UseDNS no

对于客户端的话可以修改/etc/ssh/ssh_config

GSSAPIAuthentication no
GSSAPIDelegateCredentials no

4.3 建立ssh信任关系

关于sshd机器之间的信任关系,很多文章都有介绍。大致方法就是:

  1. 在自己机器上面ssh-keygen生成~/.ssh/id_rsa{.pub}.其中.pub文件是公钥
  2. 然后将id_rsa.pub内容copy到另外机器下面的~/.ssh/authorized_keys里面(注意chmod 600)
  3. 接着本地的.pub文件就可以删除

这个密钥是可以在不同机器上面使用的,也就是说你只需要生成一次即可

我猜想大致工作过程应该是这样的:

  1. 在ssh建立连接的时候,本地ssh-client会读取~/.ssh/id_rsa内容
  2. 建立好连接之后会将rsa内容发给对端机器,对端机器针对authorized_keys进行验证
  3. 如果验证OK的话那么就认为是信任对方的。

具体这些文件放置位置都是可以配置的,关于如何配置可以看man ssh_config(client) / man sshd_config(server). 之前遇到问题就是,在/etc/sshd_config里面修改了认证文件的位置,不是放在authorized_keys里面而是放在cloud_keys里面!!!

对于这种东西我觉得还是使用默认的比较好,convention over configuration!!!


如果登陆过程中出现 "Agent admitted failure to sign using the key" 的话,可以尝试下面的命令

ssh-add   ~/.ssh/id_rsa

4.4 简化ssh登陆

简化ssh登陆第一个方式就是去除密码输出,这个可以通过配置信任关系完成。

简化ssh登陆第二个方式就是可以针对hostname,user以及port做别名,这个可以在~/.ssh/config里面配置

dirlt@dirlt-virtual-machine:~/.ssh$ cat config
Host git
Port 16024
HostName git.fm
User dirtysalt

这样之后通过ssh git的话就相当于ssh -l dirtysalt -p 16021 git.fm.非常方便。

4.5 修改默认shell

sudo chsh -s /bin/zsh dirlt

似乎需要重启才能够生效

4.6 关闭ssh host key检查

How to disable SSH host key checking http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

  • UserKnownHostsFile /dev/null
  • StrictHostKeyCheckin no

4.7 ssh identity file

如果你的ssh identity file配置很多的话,有时候登录会出现"Too many authentication failures"的错误。这是因为ssh会使用你所有添加的identity files来尝试验证(比如4个),但是服务器配置最多3次验证的话那么最后一个identity file就不会被验证了,即使这个identity file是正确的。更常见的情况是历史上你可能无意添加了许多identity file,可是这些file到现在基本上都过时了,所以你需要清理一下。

查看所配置的identity files很简单'ssh-add -l'. 使用选项-d可以删除某个file(-D可以删除所有)

➜  repo  ssh-add -l
2048 37:0d:f1:91:c8:96:97:9a:54:8b:da:66:41:19:9f:a3 /home/dirlt/.ssh/id_rsa (RSA)
2048 b9:56:e7:7d:83:d4:04:70:c4:bb:0b:9e:3d:05:63:a6 /home/dirlt/.ssh/github (RSA)
1024 c5:a4:a2:c0:8b:12:68:81:9e:dc:c0:30:79:f7:a8:f6 /home/dirlt/.ssh/lz5-devel (DSA)
➜  repo  ssh-add -d /home/dirlt/.ssh/id_rsa
Identity removed: /home/dirlt/.ssh/id_rsa ( dirlt@ubuntu)
➜  repo  ssh-add -l
2048 b9:56:e7:7d:83:d4:04:70:c4:bb:0b:9e:3d:05:63:a6 /home/dirlt/.ssh/github (RSA)
1024 c5:a4:a2:c0:8b:12:68:81:9e:dc:c0:30:79:f7:a8:f6 /home/dirlt/.ssh/lz5-devel (DSA)

还有一些entry不是直接对应file的, 所以没有办法使用ssh-add -d来删除。可以在"Passwords and Keys"这个应用程序里面删除掉。

4.8 cannot change locale

通常是因为对应的locale没有找到

bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)

可以通过生成对应locale文件来解决这个问题

➜  bin  sudo locale-gen zh_CN.UTF-8
[sudo] password for dirlt:
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
Generating locales...
  zh_CN.UTF-8... /usr/sbin/locale-gen: line 177: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
done
Generation complete.

5 开发工具

5.1 screen

我的配置文件

如何使用screen启动(查看)后台任务:

  • screen -D -R <session-name>
    • 如果会话存在那么会连上.
    • 如果会话不存在那么创建.
    • 如果会话被其他人attach, 可以强制attach.
  • 在会话里面执行命令
  • C-a d从这个会话里面detach出来

5.2 emacs

note@2016-01: 可以看看这个项目 spacemacs. 这个是liuxiang同学介绍给我的,集合了许多插件并且给出了比较好的默认配置,方便emacs初学者上手。这个项目对于我来说就稍微有点麻烦,因为我自己已经集合了许多插件和配置,我需要首先熟悉这个项目然后把自己原来的配置不断地port上去。对我来说,最好的方式还是看看spacemacs里面有哪些插件比较好,然后集成到自己项目里面来.

5.3 idea

  • 常用快捷键
    • 查找方法 Ctrl+F12
    • 查找类 Ctrl+N
    • 页面跳转 Ctrl+E
    • 查看声明 Ctrl+B
    • 察看实现 Ctrl+Alt+B
    • 跳回 Alt+(<-) 跳前Alt+(->)
    • 格式化 Ctrl+Alt+L (这个键和ubuntu的锁屏键冲突了,我修改到了Ctrl+Alt+\)
    • 导入某个类(光标在这个类上) Alt+Enter
    • 优化类的导入 Ctrl+Alt+O
  • 编辑区域右键"maven"这个选项
    • Reimport 可以重新导入maven配置
    • Generate Sources and Update Folders 重新生成sources并且更新文件夹
  • 目录右键"Mark Directory As" -> "Source Root" 可以将某个目录指定为源代码目录

5.4 bzr

配置项目

  • bzr branch <repo> # git clone.
    • # 每个分支都会有自己单独的revno
  • bzr pull # git pull
  • bzr push <repo> # git push
    • –create-prefix # create if not exist
    • –overwrite -rREVNO # 强制将远端回滚到此revno.
  • bzr config [parent_location|push_location|submit_branch]=<URL>

合并提交

  • bzr commit -m 'message'
  • bzr uncommit # 撤销一个commit
  • bzr revert # git checkout
  • bzr merge -r[a]..[b] <URL> # 合并revno=[a+1,b]修改

查看diff

  • bzr log/diff -r[a]..[b] # 察看revno=[a,b]修改信息
  • bzr status/st # 当前仓库状态
  • bzr revno # current revision number
  • bzr info # 当前仓库情况

5.5 image-magick

http://www.imagemagick.org/script/index.php

  • 调整图像大小比例
    • convert -resize 50%x50% input output
    • convert -resize 1000x input output # 等比例缩放,width = 1000
  • 垂直合并图片 convert -append input… output
  • 水平合并图片 convert +append input… output

6 虚拟机

6.1 vmware虚拟机增加磁盘空间

今天感觉自己的磁盘空间好像有点不够了,大部分数据都是在$HOME下面的,需要增加磁盘空间。

使用vmware disk expand似乎不太好用,虽然磁盘空间增大了,但是df -h发现识别的硬盘大小还是一样(可能需要重新格式化才行):(。

另外一个办法,就是在vmware下面再增加一个disk. 128G,识别为/dev/sdb。然后在linux下面

  1. fdisk为/dev/sdb创建分区,partition number=1.
  2. partprobe /dev/sdb1 (?具体什么用途我也不太清楚,inform OS partition table changed)
  3. mkfs.ext4 /dev/sdb1 格式化文件系统

产生这个硬盘之后,可以首先将自己的$HOME重命名,然后mount /dev/sdb1 $HOME.

接着将原来数据copy过去,最好使用cp -r .*这样可以copy隐藏文件。然后需要chown owner:owner .* -R来修改权限(因为这个步骤通常是root操作的)。然后将原来的数据删除即可。

之后为了自动挂载,修改/etc/fstab

/dev/sdb1 $HOME ext4 defaults 0 0

6.2 virtualbox安装windows虚拟机

安装windows虚拟机主要是为了方便一些需要在windows下面完成的操作,比如U盾。 另外windows下面也有一些第三方的软件在Linux下面比较匮乏比如EverBox, 虽然DropBox也非常不错但是相对来说还是国内服务器会比较好一些。

使用virtualbox,通过加载windows xp的镜像安装,这个非常简单。 或者是直接使用别人生成好的.vdi文件。vdi全称应该是virtual disk image。

#note: 升级内核或者是重装系统的话,可能会造成内核版本与默认源的virtualbox不匹配,可以从官网下载最新版本。参考链接 https://www.virtualbox.org/wiki/Linux_Downloads

6.3 virtualbox设置共享文件夹

设置共享文件夹主要是为了数据可以进行同步。通过windows虚拟机,安装同步软件比如GDrive。 然后通过共享文件夹,将GDrive的同步目录隐射到Linux文件系统上面,完成数据同步。

  • 首先挂载VBoxAdditions.iso,这个文件在/usr/share/virtualbox下面
  • 之后就会在虚拟机里面提示安装相关的驱动程序。
  • 完成之后在设置virtualbox的settings/share folder,创建本地share folder
  • 然后进入虚拟机“我的电脑”右键选择映射网络驱动器,通过浏览可以找到对应的网络驱动器。

我是参考这篇图文并茂的文章的 http://hi.baidu.com/hifinan/item/79f22545a8400ed3c1a592f3

6.4 virtualbox下使用U盾

首先需要在 https://www.virtualbox.org/wiki/Downloads VirtualBox Extension Pack,双击执行。 在Settings =》 USB选项里面勾选 Enable USB Controller 和 Enable USB2.0(EHCI) Controller。

然后我们需要添加vboxusers这个群组,同时将自己加入到这个群组内:

  • sudo groupadd vboxusers
  • sudo gpasswd -a dirlt vboxusers

接着重新启动ubuntu。

接着Settings =》 USB里面添加那些已经识别的设备,接着启动windows虚拟机就可以使用U盾了。

comments powered by Disqus