Table of Contents
- 1 ubuntu
- 1.1 写在前面
- 1.2 系统配置
- 1.2.1 察看ubuntu内部版本
- 1.2.2 重启机器
- 1.2.3 关闭机器
- 1.2.4 重启unity
- 1.2.5 设置字符界面启动
- 1.2.6 绑定静态IP
- 1.2.7 修改主机名称
- 1.2.8 root密码
- 1.2.9 deb使用
- 1.3 桌面应用
- 1.3.1 amarok循环播放
- 1.3.2 设置输入法切换
- 1.3.3 自动启动输入法
- 1.3.4 google docs不能输入中文
- 1.3.5 设置默认浏览器
- 1.3.6 thunderbird配置gmail
- 1.3.7 thunderbird的Inbox文件过大
- 1.3.8 窗口常用快捷键
- 1.3.9 调整字体大小
- 1.3.10 调整边栏大小
- 1.4 编程环境
- 1.4.1 bash的tab自动补全
- 1.4.2 加快ssh登陆
- 1.4.3 建立ssh信任关系
- 1.4.4 简化ssh登陆
- 1.5 虚拟机
- 1.5.1 vmware虚拟机增加磁盘空间
- 1.5.2 virtualbox安装windows虚拟机
- 1.5.3 virtualbox设置共享文件夹
- 1.5.4 virtualbox下使用U盾
1 ubuntu
1.1 写在前面
千万不要抱有一朝一兮就可以搞定的想法。最好的话身边有一个群体,大家都使用Ubuntu这个东西。 这样如果有什么问题的话,大家就比较容易找到解决办法,直到自己完全适应为止。推荐安装下面这些软件:
- #sudo apt-get install vlc # 视频
- #sudo apt-get install pidgin # 聊天
- #sudo apt-get install stardict # 词典
- #sudo apt-get install amarok # 音乐
- sudo apt-get install okular # pdf阅读
- sudo apt-get install git
- #sudo apt-get install subversion
- sudo apt-get install htop
- sudo apt-get install dstat
- sudo apt-get install sysstat
- sudo apt-get install httperf
- sudo apt-get install rsync
- sudp apt-get install tree
- sudo apt-get install tcpdump
- sudo apt-get install clusterssh
- #sudo apt-get install libjs-extjs
- #sudo apt-get install libjs-extjs-doc
- sudo apt-get install openssh-server
- sudo apt-get install sqlite3
- #sudo apt-get install eclipse
- sudo apt-get install python-dev
- #sudo apt-get install libevent-dev
- #sudo apt-get install python-gevent
- #sudo apt-get install python-gevent-doc
- #sudo apt-get install gunicorn
- #sudo apt-get install recordmydesktop # 录制桌面
- sudo apt-get install maven2
- sudo apt-get install ttyload
- sudo apt-get install autoconf
- sudo apt-get install libtool
- sudo apt-get install automake
- sudo apt-get install alien
- sudo apt-get install dos2unix
- sudo apt-get install astyle
- sudo apt-get install valgrind
- #sudo apt-get install mongodb
- #sudo apt-get install python-imaging
- #sudo apt-get install python-imaging-doc
- sudo apt-get install screen
- sudo apt-get install tmux
- #sudo apt-get install python-pychart
- #sudo apt-get install python-pychart-doc
- sudo apt-get install python-doc
- sudo apt-get install python-setuptools
- sudo apt-get install linux-tools-common
- sudo apt-get install linux-base
- #sudo apt-get install mercurial
- sudo apt-get install golang-go
- sudo apt-get install kchmviewer # chm阅读
- sudo apt-get install flex
- sudo apt-get install bison
- sudo apt-get install iotop
- sudo apt-get install curl
- sudo apt-get install ibus
- sudo apt-get install ibus-sunpinyin
- sudo apt-get install xsunpinyin
- sudo apt-get install python-xlib # 需要在emacs下面调用ibus
- #sudo apt-get install chromium-browser # 实验性质版本
- sudo apt-get install google-chrome-stable # 稳定版本
- #sudo apt-get install firefox
- #sudo apt-get install thunderbird
- sudo apt-get install dkms
- sudo apt-get install virtualbox
- sudo apt-get install virtualbox-guest-additions # 设置windows虚拟机共享文件夹
- sudo apt-get install ntp
- sudo apt-get install systemtap
- sudo apt-get install clojure
- sudo apt-get install zsh
- sudo apt-get install collectl
- sudo apt-get install vim
- #sudo apt-get install xbmc
- sudo apt-get install latex-cjk-all
- sudo apt-get install texlive-fonts-recommended
- sudo apt-get install texinfo
- #sudo apt-get install sun-java6-jdk
- sudo apt-get install openjdk-6-jdk
- sudo apt-get install open
- sudo apt-get install lzop
1.2 系统配置
1.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
1.2.2 重启机器
似乎Ubuntu下面限制用户进行重启,可以使用sudo reboot重启机器。
1.2.3 关闭机器
关闭机器同样需要超级权限,可以使用sudo shutdown 0立即关闭机器。
1.2.4 重启unity
unity restart &
NOTE(dirlt):这种方式可以work但是似乎问题比较多,如果unity出现问题还是重启比较方便
1.2.5 设置字符界面启动
- 编辑文件/etc/default/grub
- GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"修改成GRUB_CMDLINE_LINUX_DEFAULT="quiet splash text"
- 运行sudo update-grub
1.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/resolve.conf
nameserver 208.67.222.222 nameserver 202.106.0.20 nameserver 219.232.48.62 nameserver 210.52.149.2
修改/etc/nsswitch.conf
hosts: files dns networks: files
然后重启网络
sudo /etc/init.d/networking restart
NOTE(dirlt):可能需要重启多次
1.2.7 修改主机名称
sudo hostname
NOTE(dirlt):mac works too=D
1.2.8 root密码
初次启动的时候需要使用sudo passwd root来修改root密码
NOTE(dirlt):it works for mac too=D
1.2.9 deb使用
安装deb使用命令 sudo dpkg -i test.deb
通常我们不太清楚一个deb安装了哪些文件,尤其是doc的话可能不知道放置在什么位置上面。我们可以通过搜索引擎查找这个包,然后在 http://packages.ubuntu.com 下面找到这个包以及对应的文件列表信息。
doc存放位置通常在/usr/share/doc/
使用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直接安装而不需要转换。
1.3 桌面应用
1.3.1 amarok循环播放
在amarok的右下角有task progression的图标,选择repeat track即可。
1.3.2 设置输入法切换
在Preferences里面:
- Input Method 里面添加 SubPinyin
- 然后在General里面的Keyboard Shortcuts里面设置Enable or disable设置切换按键
- Release+Shift_L 左边的Shift键
- Constrol+space control和空格键
- 这些都和windows输入法的默认配置很像。
TODO(dirlt):在Emacs里面需要安装ibus.el以及ibus-agent。但是现在不知道为什么左边的Shift键在Emacs里面一直不能使用。
1.3.3 自动启动输入法
另外系统默认是不会自动启动ibus的,可以在System Settings里面的Language Support里面设置Input method为ibus, 这样ibus就可以自动启动了。如果emacs需要使用ibus的话,那么ibus-daemon必须先于emacs启动。可能这样agent才能够工作。
1.3.4 google docs不能输入中文
似乎sunpinyin在google docs下面工作不是很好。使用原来的pinyin就没有问题。what a shame!
1.3.5 设置默认浏览器
System Settings =》 Details 里面可以设置默认浏览器。至于emacs里面的话可以使用如下配置。
(setq browse-url-generic-program (executable-find "chromium-browser")
browse-url-browser-function 'browse-url-generic)
1.3.6 thunderbird配置gmail
- pop3 pop.gmail.com/pop.googlmail.com SSL/TLS 995 normal password
- smtp smtp.gmail.com/pop.googlmail.com SSL/TLS 465 normal password
- 不过似乎现在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: [email protected](如果使用imap模式可以不使用)
- composition and addressing => 1) start my reply above the quote and place my signature below the quote.
- 设置签名
1.3.7 thunderbird的Inbox文件过大
- http://blog.tianya.cn/blogger/post_read.asp?BlogID=3802303&PostID=35373429
在安装新的操作系统时候,可能需要将原来的邮件全部迁移过去。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这样做是很正常的。有几种方式:
- 一种是用小碎片文件来解决,每个小碎片文件对应一个邮件,但是这样邮件太多的话性能和碎片会成为问题,但是增加和删除都非常方便
- 另外就是使用大文件来追加写,然后针对每封邮件进行索引。索引可以保存在内存里面并且定期dump出去,启动时候检查索引是否和文件对应,不对应的话那么可能需要增量做一部分索引。但是这样删除会成为问题,标记删除可能就是最好的办法了。所以需要用户手动或者是通过程序判断磁盘文件大小来触发压缩。
- 使用数据库本质上和2是一样的,只不过可以在一定程度上简化代码。在删除方便可能还是使用压缩删除。如果是我自己做的话那么可能考虑使用sqlite来做。单机可以embed,并且通过SQL来进行检索或者是其他操作。
NOTE(dirlt):其实thunderbird超过一定大小就会自动提醒是否需要压缩
1.3.8 窗口常用快捷键
- Ctrl+Alt+T // 打开一个terminal。
- Ctrl+Alt+上下左右 // 在不同的workspace之间切换。
1.3.9 调整字体大小
System Settings =》 Universal Access里面的Seeing部分可以用来调整字体大小。但是只有等级没有具体的数字可以进行调整。 可以通过安装gnome-tweak-tool并且运行之来进行微调。
参考链接 http://ltek.dyndns.org/wordpress/?p=282
1.3.10 调整边栏大小
System Settings => Appearance => Launcher icon size.
1.4 编程环境
1.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!!!
1.4.2 加快ssh登陆
对于服务器的话可以修改/etc/ssh/sshd_config
UseDNS no
对于客户端的话可以修改/etc/ssh/ssh_config
GSSAPIAuthentication no GSSAPIDelegateCredentials no
TODO(dirlt):具体为什么? sorry I have no idea!!!
1.4.3 建立ssh信任关系
关于sshd机器之间的信任关系,很多文章都有介绍。大致方法就是:
- 在自己机器上面ssh-keygen生成~/.ssh/id_rsa{.pub}.其中.pub文件是公钥
- 然后将id_rsa.pub内容copy到另外机器下面的~/.ssh/authorized_keys里面(注意chmod 600)
- 接着本地的.pub文件就可以删除
NOTE(dirlt):这个密钥是可以在不同机器上面使用的,也就是说你只需要生成一次即可
我猜想大致工作过程应该是这样的:
- 在ssh建立连接的时候,本地ssh-client会读取~/.ssh/id_rsa内容
- 建立好连接之后会将rsa内容发给对端机器,对端机器针对authorized_keys进行验证
- 如果验证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
1.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.非常方便。
NOTE(dirlt):实际上第二点这个对于scp也是很必要的,因为scp没有办法指定工作端口只能使用默认的22
1.5 虚拟机
1.5.1 vmware虚拟机增加磁盘空间
今天感觉自己的磁盘空间好像有点不够了,大部分数据都是在$HOME下面的,需要增加磁盘空间。
使用vmware disk expand似乎不太好用,虽然磁盘空间增大了,但是df -h发现识别的硬盘大小还是一样(可能需要重新格式化才行):(。
另外一个办法,就是在vmware下面再增加一个disk. 128G,识别为/dev/sdb。然后在linux下面
- fdisk为/dev/sdb创建分区,partition number=1.
- partprobe /dev/sdb1 (?具体什么用途我也不太清楚,inform OS partition table changed)
- 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
NOTE(dirlt):这里对于0 0不太清楚是什么意思,只是知道分别是dumps以及fsck check order. :(
1.5.2 virtualbox安装windows虚拟机
安装windows虚拟机主要是为了方便一些需要在windows下面完成的操作,比如U盾。 另外windows下面也有一些第三方的软件在Linux下面比较匮乏比如EverBox, 虽然DropBox也非常不错但是相对来说还是国内服务器会比较好一些。
使用virtualbox,通过加载windows xp的镜像安装,这个非常简单。 或者是直接使用别人生成好的.vdi文件。vdi全称应该是virtual disk image。
NOTE(dirlt):升级内核或者是重装系统的话,可能会造成内核版本与默认源的virtualbox不匹配,可以从官网下载最新版本。 参考链接 https://www.virtualbox.org/wiki/Linux_Downloads
1.5.3 virtualbox设置共享文件夹
设置共享文件夹主要是为了数据可以进行同步。通过windows虚拟机,安装同步软件比如GDrive。 然后通过共享文件夹,将GDrive的同步目录隐射到Linux文件系统上面,完成数据同步。
- 首先挂载VBoxAdditions.iso,这个文件在/usr/share/virtualbox下面
- 之后就会在虚拟机里面提示安装相关的驱动程序。
- 完成之后在设置virtualbox的settings/share folder,创建本地share folder
- 然后进入虚拟机“我的电脑”右键选择映射网络驱动器,通过浏览可以找到对应的网络驱动器。
我是参考这篇图文并茂的文章的 http://hi.baidu.com/hifinan/item/79f22545a8400ed3c1a592f3
1.5.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盾了。