2012年9月

Linux入门指南(修订稿)

(并未完稿,请各位尽可能给点建议和意见,多谢喵)

=============================================

请您牢记,以下介绍只是一个概括,如果您遇到问题,还要您去折腾,例如去Google或者在社区中提问。如果您需要在社区中提问,请看:

提问的技巧:见瀚海星云Linux板置顶。

重装windows后进不了Linux:这是因为grub被覆盖。如果grub损坏也可以用下面的方法修复。开机时从ubuntu光盘启动,选“rescue a broken system”。一路选下来出现选择急救操作,选重新安装grub引导器安装在linux的/boot目录所在分区上。重启即可进入linux。您也可以在Live CD中使用:grub2-mkconfig -o /boot/grub/grub.cfg来覆盖之前的配置。

Debian/Ubuntu包管理系统: 命令行下用dpkg处理本地的包。dpkg –i foobar.deb包装foobar.deb包,采用dpkg –r foobar.deb卸载。配置好安装源后apt-get install foobar会从安装源下载foobar.deb和foobar.deb依赖的包并且自动调用dpkg安装;apt-get remove foobar可以卸载foobar包,apt-cache search foobar可以搜索和软件包名中含有foobar的包。apt-get完全是命令行的,而aptitude是终端可视界面,上下移动光标和vim一样用k/j键,按q退出  +/-标记一个软件包安装/卸载,标记完后按g可以查看所有标记的包以确认,再按g则执行安装/卸载。aptitude更多的命令可以按ctrl+t在菜单中查看。软件包管理推荐使用aptitude。如果ubuntu的话可以用自带的新立得软件包管理器,更加方便。

选择您安装发行版的软件源:如果您不知道如何配置发行版的软件源,那么请您尝试我们的Repo Gen服务:http://home.ustc.edu.cn/~halgu/repogen/,您也可以通过查看科大软件源的Web页面来寻求帮助。

从源码安装软件包:笼统的步骤是先configure配置编译选项,再make编译,最后make install安装。安装之前请先阅读README和INSTALL文件以了解具体的安装步骤。卸载用make uninstall。如果卸载不了很可能只有手动删除。另外make install需要管理员权限,请多加留意。

crontab:任务计划可以在指定时间运行某程序。crontab -e编辑任务计划表,crontab –l列出计划表。

查看程序文档:man或者info。男人(man)是您学习的源泉。

编辑器类

Emacs:最强大的文本编辑器。下面是学习Emacs的一种方案。启动Emacs按ctrl + h再按t,

读完这个文档掌握最基本的操作,再读网文《_Emacs__的日常生活_》,可以体会到Emacs的强大并学到一些基本的盹置,之后可以看_Sam Teach Yourself Emacs In 24 Hour_,算是系统地学Emacs的使用;定制Emacs要学会elisp编程,推荐救程_Programming in Emacs Lisp: An Introduction(_有中文版)和_Writing GNU Emacs Extensions_。读新闻、邮件推荐使用gnus,写TeX推荐使用AUCTeX,记笔记推荐使用Muse。更多Emacs的资源可以查看EmacsWiki网站http://www.emacswiki.org/

Vim:文本编辑器。下面给出一种学习vim的方案:终端下运行vimtutor会出现一个vim教程,读完可以掌握vim最基本的操作,之后启动vim,按“:h”可以看到一系列文档,user *.txt的文档可以逐篇阅读,后面reference manual部分就当手册查吧。也可以读vimbook,校网上可以搜到。

另外还有一个用游戏来进行vim教学的网站:http://vim-adventures.com/

写TeX推荐使用LaTeXSuite插件。尽管Emacs比Vim强大,但并不意味着所有应用中Emacs都比Vim便捷。

Gedit/Kate: 类似于Windows里面的记事本。而且它们也都可以通过扩展的形式来增强。对于Linux新手来说,这个工具也许是最方便的,尽管它并不是最强大的。

开发工具类

编译器与调试器:gcc系列编译器,包括c语言编译器gcc,c++编译器g++,Fortran 77编译器f77,Fortran 95编译器gfortran(Fortran编译器推荐使用Inter Fortran Compiler),java编译器gcj等等。汇编编译器可以用nasm。debug用gdb。

Java环境:ubuntu自带jdk。如果没有您也可以自行搜索openjdk。

.Net开发环境:可以使用mono,比如c#编译器是mono-mcs,linux下的.Net可能只有教学意义,不能正经地用于项目开发。

OpenGL图形编程:可以使用mesa库,Glut有自由软件的实现freeglut。

GTK图形界面编程:可以看gtk的tutorial,06年LUP上有报告_《__GTK+__图形编程简介》_,可以在lug@ustc主页上找到。

并行计算:mpich,openmp等。cluster的搭建可以到瀚海星云HPCC板询问。

集成开发环境:可以用kdevelop和eclipse,觉得这两个太笨重的话,Emacs + cedet + ecb + etags可能会是个不错的选择。

Bash脚本编程:推荐教程_《__Advanced Bash Scripting Guide__》_,有中文版。

正则表达式:处理复杂的文本搜索、替换等操作(grep、sed等程序)要用正则表达式,可以看_Sams Teach Yourself Regular Expressions in 10 Minutes_,(正则表达式30分钟),校网上可以搜到。如果看英文费力的话,网上有篇文章_《正则表达式__30__分钟入门教程》_相当不错,搜索即可。

版本管理系统:版本控制系统可以记录和管理项目文件集的更改,在面向团队的软件、文档和其他在线开发项目中广泛使用。

Subversion(svn)是一个集中式版本控制系统,科大的很多实验室用它管理项目代码。
git是一个分布式版本控制系统,被linux内核、Android等众多开源项目采用。每位开发者都有完整的项目源代码副本;独特的暂存区设计使得定制提交内容成为可能;具有强大的分支功能。git很强大,学习曲线也比svn陡峭。

git常用命令:添加文件git add,切换分支git branch,签出分支git checkout,提交更改git commit,查看更改git diff,从远程更新git fetch,查找文件git grep,查看日志git log,合并分支git merge,重命名git mv,从远程同步到本地git pull,将本地同步到远程git push,分支变基git rebase,删除git rm,当前状态压栈git stash,查看状态git status。

autoconf, automake:用于自动创建configure文件,当项目规模很大时手工写Makefile变得不容易控制,这时就可以用autoconf, automake系列工具。参考教程GNU Autoconf, Automake, and Libtool,在autobook包里。

对Linux环境下的开发者的一般建议

1.熟悉一个发行版

2.学好英语,随机文档是最好的老师。

3.精通c语言。这种精通并不是对语言结构的精通;它应该是对linux下的系统调用和glibc的精通。另外您应该了解一些操作系统原理,可以参考_《深入理解计算机系统》_。

有上面的的基础后,您应该会用各种命令,有自己学习的能力。那么,您可以继续下面的工作。

4.请读R.Stevens的书,即_《__UNIX__环境高级编程》_(APUE),_《__UNIX__网络编程》_(UNP v1,2),_《TCP/IP__详解》_(TCP/IP v1,2,3)。APUE应用C在Linux下编程,TCP/IP v1,2,3解释TCP/IP协议组,UNP是网络具体编程

  1. 阅读源码,例如Linux或者是一些GNU组件的源代码。
  2. 请加入某一个项目开发小组,和高手们一起进步。
  3. 自己独立开发某一个项目。那就恭喜了,您已经是个高手了。

桌面/窗口管理器类

如果硬件配置低,跑GNOME,KDE等桌面很慢,可以考虑使用轻量级的窗口管理器,比如fvwm, fluxbox, xfce等。桌面使用的问题可以到FreeDesktop板讨论。轻量级的窗口管理器可以使用mlterm, rxvt等终端,文件管理器可以使用rox-filer。

终端工具:screen,比如它可以把一个终端当成好几个来用。

3D桌面:compiz。

中文字体:xfonts-wqy,文泉驿宋体点阵字体。ttf-wqy-zenhei,文泉驿正黑字体。

输入法:ibus,scim和fcitx。Ibus是ubuntu默认的输入框架,中规中矩。scim支持多国语言,词库较大;fcitx非常灵活,值得您一试。当然,输入法也要配合您的使用习惯来。

文档类

TeX系统:可以安装TeXlive,编辑器用emacs或vim加相应的扩展。学习TeX的一种可行途径是先阅读《laTeX2e入门指南》,再看laTeX manual。TeX开发者可以读the TeXbook和the LaTeX Companion。如果有相关问题的话,bbs的TeX板面会是一个不错的去处。

办公套件:LibreOffice,开源的Office软件,可以看.doc,.xls等文件,是Linux上查看MS Office文档的首选。

 

科学计算软件

maxima:符号计算软件,文档maxima-doc,装上maxima-emacs后可以在emacs中便捷地使用。

octave:数值计算软件。和matlab相比还是有一定差距。

R:用于统计分析、绘图的语言和操作环境,如果您做大物实验,不妨用R来分析。

服务器软件

FTP务器:推荐使用vsftpd或者proftpd。pureftpd则是可配置性较高,功能较多。

Web服务器:Linux + Apache + mysql + PHP是著名的web服务套件,安装apache2,mysql-server,php5,php5-mysql即可。安装apache后可以安装doc-central,用户可以在浏览器中打开http://localhost/dc 阅读随机文档。另一个选择是nginx。nginx性能高,可配置性也很高。

sshd:ssh(Secure Shell)服务器,用于远程登录,安装openssh-server包。

文件服务器:samba,可作文件和打印机服务器。

打包/解压

Tar:处理bz2文件请先安装bzip2。tar文件用tar xv foobar.tar.gz解压,加个v参数即tar xfv foobar.tar.gz可以看到解压的过程,打包时也一样。tar zcv abc.tar.gz def/把def目录打包成abc.tar.gz压缩包,tar jcf abc.tar.gz def/把def 目录打包成abc.tar.bz2压缩包。tar tf abc.tar.gz查看压缩包abc.tar.gz的内容。

zip, unzip:处理zip文件。unzip解压。

unrar-free:处理rar文件。rar x解压。

7z:宣称压缩率最高的压缩文件格式,最近才开始流行。使用时请安装p7zip。

影音播放类

mplayer:几乎可以搞定所有常见的媒体格式了,配合fbdev还可以在终端看电影。常见的前端GNOME Mplayer和SMPlayer都提供了很棒的前端支持。

VLC:最近有长足进步的一款播放器。

DeaDBeeF:很棒的一个音频播放软件,支持很多格式。

网络类

无线网络工具:wireless-tools,可以扫描可用的无线网络、连接等。

图形界面浏览器:firefox,opera(需另外下载),chrome(需另外下载)。商业软件chrome的开源版本chromium可以直接通过apt-get安装。KDE环境下有rekonq,xfce下有midori。

字符终端浏览器:lynx,w3m,links。这些是在您不方便图形界面的时候的选择,还配合yong输入中文。

邮件客户端:thunderbird和evolution类似于Outlook。mutt是字符终端的。

即时通讯软件:pidgin,多协议即时通讯客户端,支持msn,qq等。

下载客户端:wget,终端界面。输入wget --help可查看帮助。

FTP客户端:lftp,匿名登录用anonymous,非匿名用对应的 username password登录。get put是下载和上传单个文件,mget mput即多个文件。mirror下载目录,mirror -R上传目录。使用set ftp:passive-mod on/off 命令可以设置被动模式的开关。如果需要方便的图形界面的话,filezilla将会是一个选择。

BBS客户端:qterm,与cterm,fterm类似。也可以用虚拟终端直接上bbs。

p2p下载软件:amule,mldonkey。amule是图形界面,mldonkey支持多种p2p下载,并有telnet,web等多种控制方式。使用BT的话Transmission不错。

镜像同步:rsync, 科大软件源mirrors@USTC就是用它做镜像的。

图像类

gimp:和Photoshop同一量级的图像处理软件。

imagemagick:实用图像小工具集,包括图像文件的格式转换、图像查看、图像组合、图像轮显、屏幕截图等。

gthumb:图像查看工具,类似ACDsee,与之类似的工具还有不少。

xfig:强大的科学绘图软件。(图形界面)

gnuplot:可以绘制复杂的数据图和函数图,支持3D,可以输出eps文件和xfig文件。GNU板的精华区有入门教程,软件主页可找到很多文档(终端界面)。

绘图语言:MetaPost,TeX配套的绘图语言,可以参考_《__A User’s Manual for MetaPost__》_。

阅读器

PDF阅读器:现在GNOME和KDE也都自带了PDF阅读器。您无需担心。当然也有其他软件供您使用。

DJVU阅读器:djview就可以了。

其它

词典:stardict,即星际译王,词库需另外下载,学校的USTC源上有词库。

扫描仪:sane, xsane是它的图形前端。

CD/DV刻录:KDE和GNOME两大环境也都提供了相应工具。如果您愿意的话也可以试下dd。

虚拟机:Virtualbox和VMware比较类似。但是Virtualbox是免费的。另外还有qemu可以用来进行调试。

Windows软件的兼容问题:我们推荐Wine。一般来讲不是很大型的程序或者DirextX9的游戏都可以用Wine来运行。例如Foobar2000,再比如魔兽争霸。如果您在使用Wine时缺少一定的库文件,请使用Winetricks。而对于提供了在线服务的软件,例如QQ,我们还是推荐使用Web版本来获得更好的体验。

网络资源

[1] Linux版网友常用软件整理:http://goo.gl/HfmXu。这个帖子里面收集了广大网友所使用的Linux软件,也许对您有所帮助。

[2] http://lug.ustc.edu.cn,科大Linux用户协会主页。

[3] GNU官方网站:http://www.gnu.org/,上面有很多gun软件的主页。

[4] 自由软件基金会:http://www.fsf.org

[5] Linux内核官网:http://www.kernel.org/,除内核外,还是GNU/Linux的主要镜像站之一。

[6] 开源协作:http://sourceforge.net/。上面有24万多个项目,要加入开发小组练练手,这里是一个不错的选择。

另外Google Code和GitHub上面的项目也是您的选择之一。

[7] 瀚海星云GNU板精华区有不少关于GNU哲学和协作开发的文章。还有《黑客文化简史》。

[8] 科大Linux镜像:http://mirrors.ustc.edu.cn,另外上面也有很多发行版镜像的使用帮助。

[9] 校内BBS相关板面:Linux, GNU, FreeDesktop, Kernel板块

[10] 国内主要的Linux相关站点:http://www.linuxsir.org/,http://www.linuxtoy.org/,http://www.chinaunix.net/,http://www.linuxfans.org/

[11] 国内Linux发行版介绍:Qomo Linux(红旗的社区版本):http://www.linux-ren.org/,Linux Deepin:http:// www.linuxdeepin.com/

[12] ArchWiki:http://wiki.archlinux.org,ArchLinux的维基页面,但是介绍和很多工具的用法和配置(有很多是发行版无关的),而且大部分内容有中文版本。

covariant@bbs.ustc  version 0.1@2007.11

vbs@bbs.ustc  version 0.2@2010.09

李喵喵  version0.3@2012.09