Linux桌面使用之道

我在个人电脑使用Linux桌面已4年(工作中使用Linux的时间要长的多),深深体会到了Linux桌面的好处.

从某种角度来看,Linux桌面要比Windows桌面好用得多.前提条件是,

  1. 使用者有一定的理性思维
  2. 坚持适合自己的原则
  3. 方法和工具

我使用的Linux发行版是Arch Linux,其特点(缺点?)是软件更新快,最新的软件包未必经过长时间的严谨测试.所以Arch Linux绝不是发行版中最不折腾人的,我能和它和谐,和其他发行版就不用说了.

第一原则,不折腾

对我而言,使用软件的目的是工作和娱乐.软件只是帮助我实现目的的手段而已,和实现目的无关的资源消耗越少越好.

坚持该第一原则,日常操作就可以很有效率.

选择软件的标准

选软件就是投资

我的标准是选软件要成本小收益大.收益如前所述,就是工作和娱乐.所以只需考虑削减成本了.

具体措施,就是只用少量软件做尽可能多的事.

Arch Linux的流行作风是一日一更新.我使用的软件数量少,要更新的也少.

那么我是否需要一日一更新呢? Arch Linux有这个选项并不等于我必须这么干.今天我刚升级完1.3版本,明天1.4又出来了,为什么我不多等一天,直接升级到1.4呢?

我的作法就是大多数软件我短期内不升级.最常用的软件我会根据需要理性升级.例如,firefox的安全升级我总是及时跟进,Linux的kernel我一年才升级一次.

依据投资收益的原则,我偏爱命令行软件,因为它们不依赖于图形界面库,升级的压力小很多.同类的命令行软件,我会优先考虑依赖的第三方库比较小的.例如用C写的软件优于用python写的软件.

我有个根据编写软件的语言来判定软件是否轻小的主观标准,c < perl < python, ruby, ….. < c++, java.

以下是我用的主力软件,其中的编辑器,浏览器,Shell,桌面,都是功能强大,定制度高,可编程.

编辑器

我用Emacs,考虑到它可以做任何事,可以认为它是轻量级的.

Vim也用,万不得已用nano,结束了.

浏览器

没多少选择,firefox,如上所述,firefox是我更新频繁的软件.

Shell

我用bash,在我的.bashrc中有如下一行,

export HISTSIZE=200000

确保我输入的所有命令都不会丢失,因为我说过,我偏爱命令行软件,但是要记住常用命令行会消耗我很多脑细胞,这是不符合投资收益原则的.所以我让shell替我记住.我只要记住按Ctrl+R可搜索历史就好了.

桌面

Gnome,KDE是绝对不会考虑的.我安装了Xfce4以给我太太用.我使用更轻量级的musca,安装包大小才100K.

其他

网络管理我用Netcfg(命令行)而不是wicd,因为wicd的依赖多而且曾经折腾过我,播放视频我之用mplayer(命令行),等等.

软件的使用也需维护

安装软件在包管理系统的帮助下很简单.麻烦的是最新软件有时候不稳定,这通常是因为软件的配置文件更新引起的.

将/etc目录下的默认配置文件备份

Linux的软件默认配置文件在/etc/目录下. 我使用分布式版本控制软件git管理/etc目录,分布式版本控制系统好处很多,最大好处就是数据到处有完整备份,非常安全.具体细节请参考wikipedia.

同类软件mercurial,bzr也可,要考虑的因素是第三方服务器是否支持(对分布式版本控制软件来说,第三方服务器不是必需的).

在Arch Linux上每次更新完系统或者安装最新软件包后,可以考虑手动将/etc目录下的文件用git备份(Debian可自动备份).

sudo git add /etc/
sudo git commit -am "backup"

一旦某个软件工作不正常了,可以检查其/etc下默认配置文件的修改纪录,将配置文件恢复到上一个正常工作的版本.

sudo git log /etc/mysql/my.cnf #check history
sudo git checkout commit_ref(version) /etc/mysql/my.cnf #restoren file

/etc/目录下的临时文件不需要备份,以下是我的.gitignore

*~
*.pacnew
*.pacsave
*.swp
*.pacorig
*.swp
mtab

将用户目录下的用户定制配置文件备份

我也是用git,配置文件备份到github的服务器上.这里必须用第三方服务器同步配置,因为我使用多台电脑.

具体操作可写成长篇大论,这里不展开了.

将软件版本降级

最新版本的软件可能不稳定,这时降级是必要的.

请参考Archwiki,实际上很简单,安装名为downgrade的软件,然后让它干所有的体力活就行了.

yaourt downgrade

云备份

电子图书,多媒体文件用专业的云备份服务更好,我推荐Dropbox.

顺便说一下,国内的服务不要用,安全原因,不言自明.

备份操作系统

不用经常作,又有云备份,又有分布式版本控制系统,怕什么.

备份整个硬盘是用Clonezilla,只是备份操作系统的话用以下命令,

tar zcvpf mylinux.tgz --exclude=/proc/* --exclude=/lost+found --exclude='mylinux.tgz' --exclude=/mnt/* --exclude=/home/username/* --exclude=/sys/* /

我建议用前者,因为省事.

阅读官方文档

照着ArchWiki安装软件,一般不会有问题.

加入社区

紧急客户支持还是用IRC比较好,没用过IRC的可以装firefox插件Chatzilla体验一下.

虚拟机的用处

我虚拟机软件使用VirtualBox,虚拟机为Windows XP,该操作系统我会定期更新安全补丁.软件只安装了IE和firefox.该操作系统我只用来操作网络银行.每次操作完毕,我会重置虚拟机状态到操作前的snapshot.

救急工具箱

即使采用了上述做法,一年中也会有一次倒霉.就是我要用的某个版本的某个软件出问题了.没人能帮忙,不能降级,改软件配置也没用,也没有可用的错误信息.

问题看起来很难,事实上5分钟就能搞定.这往往是因为某软件需要的第三方库的版本出问题了.

比如说firefox不能启动,运行如下命令调试,

strace -o err.txt firefox

读一下err.txt就可以知道是哪个库出问题了.相信我,这是不需要任何编程知识的,猜加google就可以了.

你知道哪个库文件出问题了(保险起见,ldd firefox确认一下).比如/usr/lib/libpng.so.14找不到,简单的解决办法是用另一个版本的库文件代替.

如果/usr/lib/libpng.so.15是存在的,我们可以用该库顶替libpng.so.14,

sudo ln -s /usr/lib/libpng.so.15 /usr/lib/libpng.so.14

通常这样就行了.

万一冒名顶替不行,我们就必须根据丢失的库文件查找需要安装的软件包(pacman没用的),

pkgfile libpng

pkgfile属于软件包pkgtools,所以你必须安装pkgtools,

yaourt -S pkgtools-git