说明:在Ubuntu这块领域,我只是达到熟练使用的程度,没有深入研究,这类型的文章我也只是"抛砖引玉"。我的小师弟“我是江神”在QQ群里反馈,Ubuntu桌面版会有许多坑,建议用CentOS;如果想知道会有那些坑需要踩?大家可以去请教“我是江神”。如果想更深入的了解更多关于Ubuntu相关的知识,可以在群里咨询在多家大型互联网公司做了多年运维的“鹏哥”,他哪里会有许多关于这方面的实战经验。
对于Ubuntu来说,有很多有趣的软件值得我们去学习,比如说VIM,怎么搭建一个自己喜欢的VIM开发环境,有的小伙伴可能会说有很多软件可以替代VIM,由于我是一个VIM“死忠粉”,我建议小伙伴们还是要掌握VIM的基本操作和一些系统常见的软件,因为在服务器配置的时候这些技巧会很有作用的。
1包管理
apt-cache 是Linux下的一个apt软件包管理工具,它用于查询apt的二进制软件包的缓存文件,下面咱们看看有哪些常见的子命令和参数的使用,见下表:
命令 | 说明 |
apt-cache search package | 搜索包 |
apt-cache show package | 获取包的相关信息,如说明、大小、版本等 |
apt-cache showpkg package | 显示许多细节,以及和其它包裹的关系 |
apt-cache depends package | 了解使用依赖 |
apt-cache rdepends package | 是查看该包被哪些包依赖 |
apt-get 也是Linux下的一个apt软件包管理工具,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
命令 | 说明 |
apt-get update | 更新源 |
apt-get upgrade | 更新已安装的包 |
apt-get dist-upgrade | 升级系统 |
apt-get dselect-upgrade | 使用 dselect 升级 |
apt-get install package | 安装包 |
apt-get install package —reinstall | 重新安装包 |
apt-get build-dep package | 安装相关的编译环境 |
apt-get -f install | 修复安装”-f = ——fix-missing” |
apt-get remove package | 删除包 |
apt-get remove package —purge | 删除包,包括删除配置文件等 |
apt-get check | 检查是否有损坏的依赖 |
apt-get source package | 下载该包的源代码 |
apt-get clean && sudo apt-get autoclean | 清理无用的包 |
2SSH服务
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。
服务端安装,命令如下:
sudo apt-get install openssh-server
客服端安装,命令如下:
sudo apt-get install openssh-client
重启ssh服务器命令如下:
sudo service ssh restart
远程登陆命令如下:
ssh -l username ip
同样ssh也提供了远程文件拷贝工具scp,具体命令如下:
# 拷贝文件 scp remoteUserName@remoteIP:remoteFileName fileName # 拷贝目录 scp -r remoteUserName@remoteIP:remoteFolderName folderName
3GIT
Git是目前世界上最先进的分布式版本控制系统,基本上各大互联网公司都在使用它来管理代码,此处只是讲解怎么安装,而不具体分析怎么使用Git管理代码。具体安装命令如下:
sudo apt-get install git
4HG
它也是一款非常优秀的分布式版本控制系统,这里讲解这款代码管理工具的主要原因是openjdk的源码就是通过它来管理的,安装它便于我们下载jdk源码。
如果你的ubuntu<=12.04,请使用如下命令:
sudo add-apt-repository ppa:tortoisehg-ppa/releases sudo add-apt-repository ppa:mercurial-ppa/releases sudo apt-get update sudo apt-get install mercurial python-nautilus tortoisehg
其它版本,建议使用pip安装,具体命令如下:
sudo pip install Mercurial
5autojump
它是一个命令行工具,它允许你可以直接跳转到你喜爱的目录,而不用管你现在身在何处。具体安装命令如下:
sudo apt-get install autojump
6oh-my-zsh
它会帮你打造一个“终极shell”,让你的终端逼感十足。具体安装命令如下:
sudo apt-get install zsh
可以通过这两种方式安装。
方式一:curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
方式二:wget
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
如果需要更多使用技巧,请参考:https://github.com/robbyrussell/oh-my-zsh 。
7来,一起搭建自己的vim开发环境
由于我是一个VIM的“死忠粉”,下面详细介绍一下VIM开发环境的搭建。
安装命令如下:
sudo apt-get install vim
1. 怎么安装bundle来管理VIM插件?
首先,在 .vim 目录中建立 bundle 目录,以后Vundle自动下载的插件都保存在这里。然后,进入 Bundle 目录,使用 git clone 命令下载 vundle,具体命令如下:
cd ~/.vim mkdir bundle git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
配置VIM,使其支持bundle,在.vimrc添加如下内容:
" be iMproved, required set nocompatible " required filetype off " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() " alternatively, pass a path where Vundle should install plugins "call vundle#begin('~/some/path/here') " let Vundle manage Vundle, required Plugin 'VundleVim/Vundle.vim' " The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo Plugin 'tpope/vim-fugitive' " plugin from http://vim-scripts.org/vim/scripts.html "Plugin 'L9' " Git plugin not hosted on GitHub "Plugin 'git://git.wincent.com/command-t.git' " git repos on your local machine (i.e. when working on your own plugin) "Plugin 'file:///home/gmarik/path/to/plugin' " The sparkup vim script is in a subdirectory of this repo called vim. " Pass the path to set the runtimepath properly. Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " Install L9 and avoid a Naming conflict if you've already installed a " different version somewhere else. Plugin 'ascenator/L9', {'name': 'newL9'} Bundle 'scrooloose/nerdtree' Bundle 'Valloric/YouCompleteMe' Bundle "taglist.vim" Bundle "ctags.vim" Bundle "a.vim" Plugin 'bling/vim-airline' Plugin 'tpope/vim-commentary' Plugin 'altercation/vim-colors-solarized' Plugin 'godlygeek/tabular' " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " To ignore plugin indent changes, instead use: "filetype plugin on " " Brief help " :PluginList - lists configured plugins " :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate " :PluginSearch foo - searches for foo; append `!` to refresh local cache " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " " see :h vundle for more details or wiki for FAQ " Put your non-Plugin stuff after this line
打开一个vim, 运行:
:BundleInstall
常用命令使用说明:
命令 | 说明 |
BundleUpdate | 更新插件 |
BundleClean | 清除不再使用的插件 |
BundleList | 列出所有插件 |
BundleSearch | 查找插件 |
其它设置,在.vimrc中添加
"配置NERD Tree :map <f10> :NERDTreeToggle <cr> filetype on syntax on set autoindent set smartindent set tabstop=4 set shiftwidth=4 set showmatch set ruler set number
2. 怎么安装VIM的ctags插件呢?
首先,需要要让Ubuntu系统支持ctags,安装命令如下:
sudo apt-get install exuberant-ctags
接着,在.vimrc中添加如下内容:
Bundle "taglist.vim"
报错YouCompleteMe unavailable: requires Vim 7.4.143+
具体解决办法如下:
sudo add-apt-repository ppa:jonathonf/vim sudo apt-get update && sudo apt-get -u dist-upgrade sudo apt-get install vim-nox
更多使用技巧,参考:http://vim.wikia.com/wiki/Vim_Tips_Wiki。
8Java开发环境
一般来说,建议大家去oracle官网下载jdk安装包,然后手动配置jdk的环境,具体命令如下:
tar zxvf ./jdk-7u45-linux-x64.tar.gz -C /usr/lib/ vim /etc/profile export JAVA_HOME=/usr/lib/jdk1.7.0_45 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH source /etc/profile
9Python环境
pyenv 是Python的版本管理工具,方便版本之间的切换,具体安装命令如下:
sudo curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash export PATH="~/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
一些常用命令使用说明,如下表:
命令 | 说明 |
pyenv versions | 查看已经安装的python版本 |
pyenv version | 查看当前使用的python版本 |
pyenv install 3.5.1 | 安装3.5.1版本 |
pyenv uninstall 3.5.1 | 卸载3.5.1版本 |
pyenv global 3.5.1 | 设置全局3.5.1版本 |
pyenv local 3.5.1 | 设置目录级3.5.1版本 |
pyenv shell 3.5.1 | 为当前shell会话设置3.5.1版本 |
pip 是Python的一款包管理工具,真的太方便了,具体安装命令如下:
sudo apt-get install python-pip
一些常用命令使用说明,如下表:
命令 | 说明 |
pip install package | 安装包 |
pip show —files package | 查看已经安装的包 |
pip list —outdated | 列出那些包需要更新 |
pip install —upgrade package | 升级包 |
pip uninstall package | 卸载包 |
pip search package | 搜索包 |
10Ruby环境
由于beef本身遇到大并发量的瓶颈,需要解决这一问题,当时为了阅读beef源码,安装了Ruby的开发环境;我建议用RVM来安装Ruby环境。
RVM是一个命令行工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换。安装命令如下:
add-apt-repository ppa:costamagnagianfranco/ettercap-stable-backports apt-get update curl -L https://get.rvm.io | bash -s stable source ~/.bashrc rvm install 2.1.0 rvm use 2.1.0 --default
Ruby包一般通过Gem来管理,具体安装命令如下:
gem source -r http://rubygems.org/ gem sources --add https://ruby.taobao.org/ gem source gem install bundler gem install rails
11NodeJS环境
由于之前写一个JS框架用到了NodeJs,因此,在这里跟大家分享一下安装环境,安装命令如下:
tar zxvf ./ node-v4.2.4-linux-x64.tar.gz -C /usr/lib/ vim ~/.bashrc export NODE_HOME=/usr/lib/node-v4.2.4-linux-x64 export PATH=${NODE_HOME}/bin:$PATH source ~/.bashrc
12C/汇编环境
C语言应该是大多数人的入门编程语言吧,咱们下面说说怎么那些Linux下C的开发环境怎么搭建?
安装命令如下:
sudo apt-get install nasm build-essential
gcc 常见参数说明:
命令参数 | 说明 |
gcc -v hi.cpp -o hi | 查看详细编译过程 |
gcc -g hi.cpp | 产生供gdb调试用的可执行文件 |
gcc -pg hi.cpp | 产生供gprof剖析用的可执行文件 |
gcc -fPIC -shared -o main.so main.cpp | 生成动态链接库 |
gcc -S hi.cpp | 生成汇编 |
gcc -c hi.s | 生成目标文件 只编译,不汇编连接 |
gcc hi.o | 生成可执行程序 |
查看汇编常见的命令如下:
objdump -dS hi readelf -a hi hexdump -C hi
将汇编代码编译成可执行程序,命令如下:
as hello.s -o hello.o ld hello.o -o hello
对于C工程,我们习惯用makefile文件来管理,下面给一个demo的makefile内容,如下:
foo = $(bar)bar = hi?main: @echo $(foo) @echo "build project" gcc -v -c hi.cpp gcc -v hi.o -o hiclean: @echo "clean project" -rm *.o @echo "clean complete"
直接执行如下命令即可完成编译:
make
在此,唠叨了这么多,相信你能读到这里已经是很不容易了,下篇给大家分享一下怎么用vim来读源码。