显示标签为“杂谈”的博文。显示所有博文
显示标签为“杂谈”的博文。显示所有博文

2007年5月23日星期三

KDE 3.5.7 发布

KDE 3.5.7 已经发布,该消息由 KDE 项目团队于今日宣布。虽然这个版本同样是 Bug 修订版,但是在该版本中有一些改进依然值得注意。例如,KDE 3.5.7 对于 KDE-PIM、KPDF、Umbrello、KDevelop 等应用程序都有所改进。

  • 本次所发布版本对 PIM 套件进行了重新修订,不仅修正了 KAddressBook、KOrganizer、KAlarm 等程序中的 bug,而且 KMail 程序也得到了改善。
  • 另外,KPDF 能够查看更为复杂的 PDF 文件;Umbrello 现在能够生成和导出 C# 代码,并支持 Java 5;KDevelop 更新到了 3.4.1 版,对代码完成和导航功能进行了改善,并提供更加可靠的调试器、Qt 4、以及更佳的 Ruby 和 KDE 4 开发支持。

KDE 3.5.7 已提供针对 Arch Linux、Kubuntu、Mandriva、SUSE 等可用的二进制包。

- Download KDE 3.5.7

2007年5月19日星期六

Archlinux新版本Duke ISO发布!

Archlinux新版本Duke ISO发布

120px-archlinux_logo.pngArchlinux是一个速度很快的linux版本

今天代号Duke的Archlinux最新版Iso正式发布

新版本的更新有:

  • 采用pacman3包管理
  • 采用 2.6.21.1 内核
  • 安装程序的变化
  • 现在声卡能够用hwdetect 定制
  • rsync加入到了安装向导
  • ftp安装支持代理服务器
  • 可以选择拷贝安装时的网络配置到安装成功的系统
  • 可以选择保留在安装时缓存内的包
  • 加入了可以选择的主pacman服务器同步
  • 修正了grub在raid设备上安装的问题

Archlinux产生于2001年年初。最初的设计思想来源于两个Linux发行版:PLD和CRUX。PLD采用的是apt-get作为rpm系统的 前端,便于系统的升级;CRUX的软件包的打包方式十分简单,就是最简单的tar.gz包,更易于管理和维护。但是它们都有很大的缺点。PLD采用的是 rpm系统,rpm体系过于复杂,特别是依赖关系上;CRUX的包管理又过于简单,包文件连基本的包信息都没有,而且是完全没有依赖关系检测的。于是, Archlinux对这两个发行版进行特性的综合,扬长避短。最初的Archlinux是Judd用LFS搭建起来的。

相对其他著名的发行版,Arch Linux有什么优缺点?

缺点:

Archlinux是新生的发行版,相对象Debian和slackware这样的发行版来说,Archlinux还比较“年轻”,也许BUG会稍 微多一些,软件包会少一些。文档也许也不够完善。(注:这是Judd在2003说的。根据我的使用,Archlinux是一个十分稳健的发行版,初期配置 可能麻烦些,但是配置好了一般就不会出现什么问题了。官方的服务器上,Arch的软件包也挺多的,常用的软件都有,而且更新是我见过的发行版中最快的,基 本上是当天就出软件包了。从0.7开始,其文档也比较完善了,就是没有中文译本)

优点:

Arch的包管理系统是其最大的优点(后面会详细介绍);还有简单的文件系统布局,抛弃了一些传统的非必要的又占用磁盘空间的东西;简单的启动脚 本,在抛弃了sysV的同时提供rc.d服务方式;Arch的安装器同样被受赞誉,清晰明了,你只需要5-10分钟就可以将基本系统安装好;Arch的社 区论坛和IRC也非常热闹,用户和开发者互动很好,都十分的积极。

Arch的两套软件管理系统──pacman和abs有什么特色?

pacman最强大的地方在于其“同步”。你可以简单的通过一个命令就可以保持你的系统是最新的。当Arch版本升级时,你也不必下载ISO镜像,只需要 “同步”一下,你就可以使用到最新的Archlinux操作系统了。Arch包含了最基本的依赖性检测,这能确保你安装上的软件包能够立即被使用,不会出 现缺少什么库之类的提示;同时这个依赖检测是最“基本”的,不会发展成象rpm那种“依赖恶梦”(注:个人认为依赖还是必须的,而且如果你使用 Mandrake,rpm体系也不见得就是恶梦)。pacman负责跟踪、下载、安装、删除和升级软件包。这些软件包都是以tar.gz形式打包的。

abs系统是来源于FreeBSD的ports系统的。abs系统可以让你从源码编译符合自己需要的软件包。你可以为你的软件包打补丁,增添或移除某些特 性。你可以运行’abs’来下载最新的软件源码编译脚本。这些脚本是Arch默认的编译脚本。接着你可以编辑这些编译脚本。最后运行’makepkg’, 这个命令可以根据编译脚本帮助你自动完成检查依赖、下载源码、解包源码、./configure、编辑并打包成软件包。

与apt-get相比,pacman有什么优势?

就目前而言,apt-get拥有比pacman更多一些的特性。但是就功能性而言,pacman是一个更为“完整”的包管理器。pacman可以相当于apt-get加dpkg两个程序实现的功能。

与Gentoo相比,Arch有什么优势?

Gentoo是一个以源码编译构建的Linux,Arch是以二进制软件包构建的Linux,但Arch也拥有自己的源码编译系统。Arch最大的优势在 于,Arch和Gentoo速度上不相上下,但是一个系统安装只需10分钟,一个却需要10个小时。(注:源码系统和软件包系统本不好比较,而且Judd 也没有用过Gentoo,仅供参考)

abs的编译脚本是怎么回事?好象很复杂。checkinstall不是很好用吗?

在功能上,makepkg和checkinstall是差不多的。但是它们有着本质的区别。简单的说,makepkg是根据Makefile来判断源码的 安装等动作,checkinstall是跟踪’make install’的动作来判断的。因此makepkg的效率要高得多。
abs的编译脚本叫做PKGBUILD。实际上这个脚本非常的简单,只要你会编译安装源码,这个文件一看便知是怎么回事,根本不用学。完全看得懂的,如果你看不懂,请使用stardict

对于Arch来说,软件包更新如此的快。如何区分Arch的“stable”分支和“unstable”分支呢?
先纠正一个概念。Arch包发行的分支命名方法和Debian不一样。象Debian那样经过严格测试最后进入“stable”的软件包我们叫做 “release”。我们每隔一段时间就发布一个release,用不同的版本号命名。比如0.7正式发布后,它就成为release了。而 “current”分支是最新的软件包,第一时间的更新。(注:就和Mandrake的cooker比较而言,Arch的current分支中的软件包也 是十分稳定的。事实上我一直使用current,没有出现过任何问题。也许是Mandrake对一些软件的源码改动较大的原故吧)

我发现Arch也有”unstable”分支,这个分支是干什么的?

实际上”unstable“不是一个“分支”。unstable目录下存放的是一些软件的预览版本或者是一些软件的作者声明说是不稳定的版本。是给那些喜欢尝鲜的人使用的。

Arch linux适合作为服务器系统使用吗?
那当然。Judd本身就是个系统管理员,他管理着9个运行着Arch linux的服务器,它们全都十分稳定表现也很好。得益于pacman的便利和Arch的简洁,这些服务器运行得十分高效,也是“无痛”的维护。

Arch不适合初学者是吗?

是,但不完全是。如果你是初学者,并且你希望使用的Linux是完全图形化的,什么配置都只需轻点几下鼠标就搞定的,那么Arch并不适合你。因为 Arch没有──并将来也不会提供任何单独的象linuxconf这种配置工具。但是如果你是初学者,而且想真正学一学Linux,那么Arch还是比较 适合你的。Arch的管理方式十分的简单,你可以很容易看懂启动脚本的跟踪信息。如果你静心研究一下,软件包管理系统也要比rpm之类的要容易理解得多。 系统主要配置文件rc.conf也是十分简单易懂的,而且集成化管理。为何还需要一个专门的配置软件呢?而且如果你掌握了Arch,你可以很方便的转换到 另一个Linux发行版而基本不必学任何其它的东西。如果你在学习中有任何困难,你还可以到Arch官方论坛和IRC中提问,那里的人都很热情。(注:E 文啊,咳咳……)

http://www.archlinux.org/news/325/

2007年5月18日星期五

Google blogger 功能更新 文章自动保存

新闻来源:blogger.com
Google blogger功能更新,发布文章时提供自动保存服务。
有时,由于您力所不能及的 情况,您的帖子似乎消失得无影无踪。互联网是一个危险的地方:浏览器会崩溃,当您单击"发布"时网络连接可能掉线,或者您可能突然转到新网页却全然不知背 后还有未完成的帖子。 幸运的是,我们有个快捷的小功能,可以帮您避免这些情况。在您撰写帖子时,其内容将会定期保存在浏览器的 Cookie 上。

这样,即使出现崩溃,您仍可以找回您的文字。只需回到张贴表单,然后查找"恢复帖子"链接:

单击该链接,任何保存在浏览器 Cookie 的内容将会填写在张贴表单中。您得救了!

http://help.blogger.com/bin/answer.py?answer=42442

2007年4月4日星期三

关于 Google谷歌 拼音输入法


聪明的谷歌拼音输入法五大特色:

  • 智能组句:选词准确率高,能聪明地理解您的意图,短句长句都合适。
  • 流行词汇:整合互联网上的流行词汇、热门搜索一网打尽,词组丰富强大。
  • 网络同步:您可以将使用习惯和个人字典同步在 Google 帐号,一个跟您走的个性化输入法。
  • 一键搜索:拼写输入的同时轻点一键即可快捷搜索。输入法结合搜索框一举两得。
  • 英文提示:打英文时只需输入前几个字母,输入法自动提示您可能要找的单字。

系统要求

  • Microsoft Windows 2000 SP4 / XP / Vista
  • Internet Explorer 6.0+

全新推出!

下载谷歌拼音输入法

Google谷歌 拼音输入法功能介绍

智能组句

智能组句

谷歌拼音输入法的智能组句功能能聪明地理解您的意图。不论是简短会话聊天还是长篇文书撰写,您都将彻底告别以单词为基本单位的繁琐输入步骤。智能化的组句功能大大降低了您的选词时间,提升选词准确率,有效协助您增加工作效率,沟通更加顺畅。

流行词汇

流行词汇

借助丰富、强大的网络搜索资源,谷歌拼音输入法将互联网上的流行词汇、热门搜索词一网打尽。从“超女”李宇春、“型男”师洋,到八荣八耻、新长征路,流行词汇应有尽有,词库定时更新,让您事半功倍地轻松输入。

智能纠错

智能纠错

匆忙的拼写当中小错误难以避免,对于常见的输入错误,谷歌输入法将给予自动修正,如tign修正为ting。人性化的纠错功能大大提高拼写速度,在您的书写过程减少因错误更正产生的中断或耽搁,更让您不再因为敲打之中的小小手误而辞不达意,即使时间紧张,也能自在输入。

优化词频

谷歌根据互联网积累大量搜索信息量化统计了最佳词频,纳入输入法的智能组句技术,使谷歌拼音输入法带给使用者极高的首选正确率。写邮件、发帖子,使用最生动的网络语言,谷歌拼音输入法最优化的词频排序将满足您的书写需求,拼写输入将更加得心应手。

一键搜索

自定义短语
自定义短语

谷 歌拼音输入法具有直接搜索候选词的功能,拼写输入的同时,只要您的计算机正连接网络,无需打开浏览器,轻点一键即可快捷查询该词的搜索结果。输入法结合搜 索框一举两得,特别适合撰写工作报告、市场情报、学校论文等输入过程需要一边查找内容的使用时机。现在,在使用输入法的同时,您也能享受到谷歌全球领先搜 索服务。

自定义短语

自定义短语

为了满足您的个性化拼写需求,谷歌拼音输入法可以自定义某些特别的简写,如输入“addr”就会输出“北京清华科技园科建大厦”等等,由您针对个人使用偏好自行设置,满足您的个人特殊需求。

英文提示

英文提示

如果您写作中时常需要切换中英文,又常拼不出要用的英文单字,使用谷歌拼音输入法打英文时,只需输入v,再加前几个字母,输入法自动提示您可能要找的单字,输入法几乎就像个英文词典,轻松协助英文拼字。

拼音首字母缩写

不 同地区、省份的使用者运用拼音方式输入时,常常会因为口音而影响输入的准确率,谷歌拼音输入法提供简写以 z、c、s 代替 zh、ch、sh 的功能,输入全拼时也不受模糊拼音的影响。对南方口音中 zh、ch、sh 和 z、c、s 区分不清的情况给予最大程度的理解,即使普通话不太流利,也能使用拼音轻松输入。谷歌输入法能读懂您的语言,降低口音差异的输入困扰。

可控词频调整

根 据用户前一次的输入情况,谷歌拼音输入法能动态调整汉字的优先选择顺序,帮助您更迅捷、更准确的组词。例如,输入时,您经常使用“会”这个字,那么您可以 把“会”的排序列在“h”的首位。输入“h”时,“会”立即优先出现,满足您的特殊需求。谷歌输入法的动态调整词频功能是根据您个人的具体需求来设定的, 是否动态调整词频,一切由您决定。

支持繁体输入和 GBK 大字库

简体繁体都能打

不论是人名、地名,还是古文中出现的生僻字词,拼写时用到繁体字、特殊字在所难免。谷歌拼音输入法不仅支持繁体输入,还提供了强大的 GBK 大字库资源,满足您全方位的拼写需求。

首字固顶

一般来说,日常输入总离不开那么几个常用的字词。谷歌拼音输入法将常用字永远显示在第一候选项,方便您的日常输入。拼写时,需求频率最高的字词总是会适时的出现在首位,大大提高拼写速度。

网络同步

网络同步

如果您选择使用网络同步功能,谷歌输入法将个人字典和打字习惯储存在谷歌服务器上,不管您在哪台电脑,您只需登录谷歌帐号就可以恢复您完整的中文输入环境。谷歌拼音输入法是您真正的个性化的输入法。

笔划输入

笔划输入

对 于某些生僻字,您有可能并不清楚它的拼音。这时,您可以尝试使用谷歌拼音提供的笔划输入功能。具体使用方法为:先按"u"进入笔划输入模式,然后用使用代 码h(横),s(竖),p(撇),n(捺),z(折),d(点)依次输入该字的各个笔划。其中,n和d是相同的。例如,您希望输入"谷",则可以依次按下 "upnpnszh"。


您的隐私

Google尊重并保护我们的用户的隐私。谷歌输入法的自动更新功能将定期地联系我们的服务器以检查您是否在使用最新的版本。此外,如在谷歌输入法隐私政策中所述,个人字典同步功能将会向您的Google帐户储存用户设置和和用户个人词典。此项功能可以随时通过选择输入法择窗口的"字典同步"轻易地取消功能或恢复功能

2007年4月3日星期二

Mandriva 成功进驻Intel学生电脑

Mandriva 公布了最新的"战况",他们的Mandriva Linux 2007将预装在Intel刚刚面向发展中国家推出的低价学生笔记本电脑中.该笔记本包含256MB内存,1-2GB的闪存, 802.11b/g WiFi, 10/100Mbps 以太网, 2 USB 端口, 和 7-inch LCD 显示器和4小时的电池容量.

该产品将首先在墨西哥,印度等发展中国家发布.

cnBeta采自国外媒体

查看:
Mandriva Linux pre-installed on Intel's Classmate

2007年4月2日星期一

最近blogger时好时坏!

郁闷!今天本来想体验一下Archlinux 0.8,可惜下载刻录后不管是base还是current都启动引导时出错,看来还是suse符合我的习惯!等待10.3 ing.....

2007年3月23日星期五

最近都不能登录blogger了!

只好再代理中国找了个还可以的代理站,网址:http://www.proxycn.com/html_proxy/30fastproxy-1.html

1165.228.131.1280HTTP澳大利亚 Telstra电信(布里斯本)03-23 12:110.013whois

2007年2月12日星期一

使用linux可以做什么

使用linux可以做什么(原创)

版权所有,转载请注明出处



   这几天使用linux,感觉linux的应用功能一点也不比windows差,基本的应用都可以在linux里实现,而且使用这些软件没有windows下那种拖沓的感觉,这篇日志就是展示这几天的成果,让我们看看linux到底可以做些什么。
   1.办公篇
   2.上网篇
   3.影音篇
   4.图象处理篇
   5.其他软件篇
   当然linux的功能远不止这些,这里展示的只是平常使用电脑会经常用到的功能。
............

Tags - ,

technorati tags:

2007年2月9日星期五

Windows 到 Linux 之旅: Part 9

Windows 到 Linux 之旅:

第 9 部分. 安装软件

安装 Linux 时首先注意到的事情之一,就是 Linux 发行版本中有如此多可用的包。大多数发行版本都附带了 Linux 操作系统、安装工具和管理工具。它们还包括 Internet 工具、开发工具、办公工具、游戏,以及一些您不曾听说过的程序。Linux 发行版本附带 数千个可用包的情况并不鲜见。如果您没有选择“完整安装”,则只会安装这些包的一个子集。

现在您可能想知道“如何删除不想要的包?如何安装遗漏了的包?是否能够使用不是该发行版本附带的软件?”

RPM

在安装 Linux 时,您或许会注意到关于正在安装的 RPM 的许多信息。 RPM 代表 Redhat Package Manager(Redhat 包管理器),这是 Redhat 的贡献,现在已成为管理 Redhat 和 UnitedLinux 以及其他许多发行版本上的软件的标准。

RPM 本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的 Linux 软件。例如,在“ 第 3 部分. Webmin 简介”中,我们通过一个 RPM 安装了 Webmin 包。最初加载到发行版本中的所有软件都是通过一个 RPM 来安装的。

RPM 剖析

RPM 是文件包。它包括的 .spec 文件提供了关于包及其功能和依赖关系(即在该包能够运行之前必须安装其他哪些包)的信息。.spec 还包含包中的文件清单,指定这些文件必须加载到系统中的何处,以及它们的初始权限如何。RPM 还包含安装前脚本,这是由包开发人员编写的。RPM 其次还包含已编译的二进制文件。最后,RPM 包含了安装后脚本。

RPM 结构

.spec安装前脚本二进制文件二进制文件...二进制文件安装后脚本

在安装 RPM 时,系统首先检查该包的依赖关系是否得到满足。如果不满足, 安装过程就会终止,除非您指定了迫使安装无论如何都要继续的选项。

如果一切顺利,安装前脚本就会运行。这个脚本可以做任何事情。它通常创建用户和目录。然而,它可以做许多类型的动态配置,甚至以自定义的方式编译运行系统的源代码。

了解 RPM 来自何处

RPM 在安装时将文件复制到您的系统上,并执行脚本。由于 RPM 是以 root 身份运行的,因此所有这些功能都以 root 身份执行。因而在将某个 RPM 安装到系统之前,知道它的由来是很重要的。就像许多 Windows 软件一样,恶意的代码可以像包含在其他包中一样容易地包含在 RPM 中。来自厂商的 RPM 一般都是安全的,但是要对从未知来源随机下载和安装的内容保持警惕。

如果安装前脚本成功完成,二进制文件将依照清单被复制到系统上。在复制完所有的文件和设置了它们的权限之后,安装后脚本就会运行。同样,这个脚本几乎能够做任何事情。

一旦完成所有这些步骤,关于包的信息就被添加到 RPM 数据库,安装过程就完成了。使用这种简单的机制,您能够执行通过更完善的商业安装程序所能执行的所有功能。

RPM 数据库

RPM 的优雅之处是 RPM 数据库。这个数据库通常位于 /var/lib/rpm 目录,它包含关于系统上已安装的每个 RPM 的信息。这个数据库知道包之间的依赖关系,当删除某个包将导致其他包无法工作时,它将发出警告。这个数据库知道最初随某个包安装的每个文件以及这些文件在 系统上的最初状态。它还知道每个包的文档和配置文件的位置。这听起来好像是大量的信息,事实上确实如此。但它并不是过多而庞大的。在一个包含 1,066 个包、由 203,272 个文件组成的系统上,数据库文件仅有 45 MB!在加载和卸载包时,RPM 使用这个数据库来检查依赖关系。用户还可以在这个数据库中查询关于包的信息。






使用 RPM

配合 RPM 包使用的程序被相应地命名为 rpmrpm 以多种不同的模式运行,不过最常见的任务是安装、升级、查询、验证和删除。

rpm -i (装)

在第一次安装某个包时,您要使用 -i 或安装模式。只需将 rpm 指向某个二进制包并执行它, rpm 就会把该包安装到您的系统上。安装过程一般只需几秒钟。我经常会在安装包时使用 -v (详细)开关来提供关于该过程的更多信息,以及使用 -h (哈希线)开关来通过输出在控制台上的哈希(#)符号提供安装进度更新。下面是安装某个包的例子:



清单 1. 安装 MyPackage
$ rpm -ivh MyPackage-1.0.0.i386.rpm
Preparing... ########################################### [100%]
1:MyPackage ########################################### [100%]

就是这个样子!MyPackage 现在已经安装完成,可供使用了。

rpm 必须以 root 身份运行

必须以 root 身份执行 rpm 安装和删除,因为需要访问文件系统和 rpm 数据库。

rpm -e (删除)

要删除已安装的包,可使用 -e 开关。 rpm 将使用数据库来删除该包的所有文件。如果有已安装的其他包依赖正在删除的包, rpm 将会异常退出。您必须使用 nodeps 开关来执行强制删除( nodeps 还可以用于强制安装)。在使用这个开关来强制安装或删除时,务必 非常 小心。删除其他包所依赖的包,可能会导致灾难性的结果。下面这个命令删除我们在上面安装的包:

$ rpm -e MyPackage

注意,包的删除并不一定需要它的完整名称(包括版本号)。安装时需要完整名称,因为我们是在引用一个文件名称。已安装的包仅通过它们的名称来引用。包的名称是版本号之前的所有内容。

rpm -V(验证)

验证开关非常有用。它将包文件的当前状态与它们在安装时的原始状态作比较。两种状态之间的区别将用一个代码来显示:

文件验证结果

S 文件大小不一致
M 模式不一致(包括权限和文件类型)
5 MD5 校验和不一致
D 设备主要/次要编号不匹配
L readLink(2) 路径不匹配
U 用户拥有关系不一致
G 群组拥有关系不一致
T mTime 不一致

如果您对某个包运行 rpm -V ,并且发现某个可执行文件的大小发生了变化,那可能就是安全漏洞的征兆。

rpm -U(升级)

一旦某个包已经安装,尝试安装具有相同名称的包将产生一条消息,指出该包已经安装。 如果想要将某个包升级到更新的版本,可使用 -U 开关来升级。升级还具有另一个影响。当对多个包名称运行升级时,它将设法按依赖关系的顺序放置包。换句话说,必需的包将首先安装。不管某个包是否已经安装,都可以对它使用升级开关,许多人使用它而不是使用 -i 开关来执行安装和升级。下面是使用升级开关来加载多个 rpm 包的例子:



清单 2. 交互式升级
$ rpm -Uvh My*.rpm
Preparing... ########################################### [100%]
1:bMyPackageDep ########################################### [ 50%]
1:aMyPackageNew ########################################### [100%]

在上面的例子中,bMyPackageDep 是 aMyPackageNew 的前提条件,因此尽管文件名称以相反的顺序排列, rpm 也会对它们正确排序。

rpm -q(查询)

可以从 rpm 数据库中查询多种有用的信息。对 rpm 数据库拥有读访问权限的任何用户都能够运行查询。默认情况下,全部用户都拥有读访问权限。要运行一个查询,可使用 -q 开关带上要查询的包的名称。这样将返回该包的版本。

$ rpm -q MyPackage


MyPackage-1.0.0

包的名称必须精确匹配,不允许使用通配符。然而,如果记不住包的完整名称,您可以使用 grep 工具来帮助找到它。可以使用 -qa 开关来查询所有已安装的包,并用 grep 来管道输出您能记住的信息。例如:

grep 之乐

grep 是一个具有广泛用途的文本搜索工具。默认情况下, grep 将搜索文件以显示您指定的行。在这里的例子中,它搜索单词“IBM”。 grep 是脚本编写和控制台工作方面的一个强大工具。

$ rpm -qa | grep IBM


IBMWSAppDev-Product-5.0-0


IBMWSSiteDevExp-Core-5.0-0


IBMWSSiteDev-Core-5.0-0


IBMWSTools-WAS-BASE-V5-5.0-0


IBMJava118-SDK-1.1.8-5.0


IBMWSWB-samples-5.0-0


IBMWSWB-5.0-0


IBMWSAppDev-Core-5.0-0


IBMWSAppDev-5.0-0


IBMWSTools-5.0-0

除了版本号外, rpm -q 还可以提供关于包的其他有用信息。下面就是这样一些例子:

使用 rpm 查询获取信息

rpm -q changelog 显示包的开发变更历史记录
rpm -qc 显示包的配置文件
rpm -qd 显示包的文档文件
rpm -qi 显示包描述
rpm -ql 显示包的文件的列表
rpm -qR 显示包的依赖关系

还有另一个有趣的查询命令,它针对文件而不是针对包运行。

rpm -q whatprovides 

上面这个命令将识别与给定的 filename(文件名)相关联的包。filename 必须包括文件的绝对路径,因为信息就是以这种方式存储在 rpm 数据库中的。






RPM 前端

从控制台操作 rpm 很容易,但有时使用图形用户界面会更方便。在典型的 Linux 风格中,有一些前端程序为 rpm 程序提供界面。每种发行版本都有一个前端,但是它们各不相同。请参考您的发行版本文挡,以了解关于所提供的包管理工具的信息。







Webmin 软件包

Webmin 也为处理 RPM 包提供了一个基于 Web 的简单前端。


图 1. Webmin RPM 界面
图 1. Webmin RPM 界面

软件可以从这个界面容易地安装、删除和查询。还可以直接从 URL 站点安装软件。如果安装了诸如 apt 或 Redhat Network 之类的 rpm 增强工具,Webmin 将识别它们并为它们提供一个界面。






源代码

由于 Linux 是开放源代码的操作系统,它附带了编译软件所需的所有开发工具。虽然您使用的大多数包将以二进制 RPM 的形式提供,但是您并不仅限于使用那些包。如果愿意,您可以为您的系统下载原始源代码,并以自定义的方式进行编译。

应该对在生产系统上编译源代码保持谨慎,因为这样可能导致问题,或者不再支持系统上正在使用的商业软件(比如 IBM DB2)。然而,熟悉从源代码编译软件的过程将使您能够对软件应用补丁,以及使用从其他环境移植过来的包。一旦成功地编译代码,创建您自己的 RPM 也是可以做到的!







Corewars 源代码演示

为演示从源代码编译软件有多简单,我们将编译一个名为 Corewars 的模拟游戏(请参阅 参考资料)。下面是来自他们 Web 站点的关于 Corewars 的说明:“Corewars 是一款模拟游戏,其中许多武士在虚拟的计算机中奔跑时竭力相互攻击对方。可以采用两种类似汇编程序的语言中的一种来编写武士程序,这两种语言分别叫做 Corewars 和 Redcode。Corewars 是默认语言,更易于学习和理解。Redcode 提供更高级和更强大的指令,但是需要更多的时间来学习。”

编译源代码的第一步是从 Web 站点下载源代码包:

在代码下载完成之后,需要展开这个包。

tar -xvzf corewars-0.9.13.tar.gz

文件将展开到当前目录。标准的做法是将源代码包含在一个与产品名称匹配的目录中。在此例中,源代码位于一个名为 corewars-0.9.13 的目录。

首先进入该目录,找到源代码和一些文档、配置脚本和 README 文件。大多数源代码包都带有一个名为 INSTALL 和一个名为 README 的文件。您应该在编译软件之前首先阅读这些材料。它们在问题出现之前识别问题,并为您建议正确的编译和安装步骤,这样通常可以让您少走许多弯路。我在编译源代码时遇到的大多数问题都是因为我没有遵循那些指导。

通常执行的下一步是运行 configure 脚本。 configure 是 Autoconf 包的一部分,包括在 Linux 发行版本的开发工具中。这里引用一段 Autoconf 的包描述:“GNU 的 Autoconf 是一个用于配置源代码和 Makefile 的工具。通过使用 Autoconf,程序员能够创建可移植和可配置的包,因为建立包的人可以指定各种配置选项。”

configure 脚本在系统上运行一系列测试,以确定为您的发行版本和系统体系结构编译包的最佳方式。然后它为您的系统创建一个定制的 Makefile。如果在您的系统上编译时遇到问题, configure 将会告诉您。 configure 通常允许您自定义将要在编译中包括的特性,或允许您提供关于库或者其他必需文件的位置参数,以便能够成功地编译包。下面我们将不带参数执行 configure

./configure

在系统上多执行几次测试,最终就会编译成功。下面使用如下命令来生成程序:

make

如果编译有错误,就需要确定问题并修复它们。这可能是一件繁琐的任务,也许需要关于环境和程序设计的大量一般知识。如果一切顺利,我们一般会使用以下命令来安装软件:

make install

文件将被复制到系统中的正确位置,文件权限会被更新,配置文件将被复制,文档也会被添加到手册页。

现在通过执行该程序来测试我们的劳动成果。它是一个图形化的程序,因此要在启动它前运行 X 系统。上面执行的 make install 命令应该已将程序放到了可执行文件路径中。

corewars

作为对我们的奖赏,一个图形化的屏幕应该会出现。



图 2. 大功告成!
图 2. Corewars 游戏

corewars 规则的主题超出了本文的讨论范围,不过您会在手册页( man corewars )中找到关于这款有趣的模拟游戏的文档。

corewars 的编译是一个典型的场景。可能会有其他许多种变化形式,包括在 configure 脚本上使用开关来调整要编译到程序中的特性,以及从 Makefile 使用不同的命令来调整编译方式,等等。

由于这个程序不是使用 rpm 来安装的,因此 rpm 数据库中没有相应的条目。如果某个程序在安装后没有按预期运行,大多数 Makefile 都包括了一个卸载参数来删除软件:

make uninstall

务必牢记,使用原始源代码不会在 RPM 数据库中添加任何内容。以这种方式安装的软件是非托管的(unmanaged),因此应该小心进行。

源代码 RPM

当 RPM 被创建时,还有一个称作源代码 RPM 的产物。这是一个与源代码组合在一起的 SPEC 文件,设计它的目的是为了在一个或多个体系结构上生成程序。这对源代码和二进制这两个世界来说是最佳的!对于源代码 RPM,您可以在系统上定制编译软件,但是完成的产品将是一个可安装的 RPM,而不是原始的二进制。以预编译 RPM 的形式可用的大多数包还以 SRPM 的形式可用。这也许是在 Linux 中软件跨平台转移的简单途径。当您在一个不同的平台上成功地重新编译时,可考虑与整个开发社区共享完成的 RPM。







也许源代码更适合您

如果您是 Linux 新手,安装软件的方法与您过去习惯使用的方法不同。然而,RPM 安装方法是优雅的,同时提供了您很快就会欣赏的新能力。

您应该熟悉从控制台使用 rpm 的选项,不过对于日常使用,有一些前端界面选项使得 rpm 更易于管理。您的发行版本提供了这样一个界面,也有其他类似的界面可供使用,比如 Webmin 中的那一个界面。

您并不仅限于使用预编译的 rpm,还可以利用 Linux 的开放源代码性质,直接从源代码编译应用程序。对于成熟的项目,编译通常是很容易的。记住,从源代码安装的代码在 rpm 数据库中没有相应的条目。在使用源代码时,可考虑使用源代码 rpm,它组合了已编译源代码的强大能力和 rpm 的可管理性。



参考资料


关于作者

Chris Walden 是位于德克萨斯州奥斯汀的 IBM Developer Relations Technical Consulting(也称为 dragonslayers )的一名电子商务架构师,该公司为 IBM 商业伙伴提供教育、实现和咨询。他致力于 Linux 相关工作,一有机会就向身边的人宣传 Linux 的种种好处。除了完成他的架构师的职责之外,他还精通 Linux 基础设施服务器的各个领域,包括混合平台用户环境下的文件、打印以及其他应用服务等。Chris 有 10 年的计算机行业经验,从现场支持到 Web 应用开发和顾问,各个领域他都曾涉足。您可以通过 cmwalden@us.ibm.com

Windows 到 Linux 之旅: Part 8

Windows 到 Linux 之旅:

第 8 部分. 备份与恢复


Linux 是一个稳定而可靠的环境。但是任何计算系统都有无法预料的事件,比如硬件故障。拥有关键配置信息的可靠备份是任何负责任的管理计划的组成部分。在 Linux 中可以通过各种各样的方法来执行备份。所涉及的技术从非常简单的脚本驱动的方法,到精心设计的商业化软件。备份可以保存到远程网络设备、磁带驱动器和其他 可移动媒体上。备份可以是基于文件的或基于驱动器映像的。可用的选项很多,您可以混合搭配这些技术,为您的环境设计理想的备份计划。

确定策略

可以采用许多不同的方法来备份系统。欲了解关于这方面的一些信息,您可以阅读本文结尾处 参考资料 中列出的“Introduction to Backing Up and Restoring Data”一文。

所备份的内容很大程度上取决于您备份它们的理由。您是否试图从严重的故障(比如硬盘驱动器问题)中恢复?您是否想归档以便能在需要时恢复旧的文件?您计划从一个冷系统和还原着手,还是从一个预加载的备用系统着手?







确定要备份的内容

在备份和还原系统时,Linux 基于文件的性质成了一个极大的优点。在 Windows 系统中,注册表与系统是非常相关的。配置和软件安装不仅仅是将文件放到系统上。因此,还原系统就需要有能够处理 Windows 这种特性的软件。在 Linux 中,情况就不一样了。配置文件是基于文本的,并且除了直接处理硬件时以外,它们在很大程度上是与系统无关的。硬件驱动程序的现代方法是,使它们以动态加载 的模块的形式可用,这样内核就变得更加与系统无关。不同于让备份必须处理操作系统如何安装到系统和硬件上的复杂细节,Linux 备份处理的是文件的打包和解包。

一般情况下,以下这些目录是需要备份的:

  • /etc
    包含所有核心配置文件。这其中包括网络配置、系统名称、防火墙规则、用户、组,以及其他全局系统项。
  • /var
    包含系统守护进程(服务)所使用的信息,包括 DNS 配置、DHCP 租期、邮件缓冲文件、HTTP 服务器文件、db2 实例配置,等等。
  • /home
    包含所有用户的默认用户主目录。这包括他们的个人设置、已下载的文件和用户不希望失去的其他信息。
  • /root
    是根(root)用户的主目录。
  • /opt
    是安装许多非系统文件的地方。IBM 软件就安装在这里。OpenOffice、JDK 和其他软件在默认情况下也安装在这里。

有些目录是应该考虑 备份的。

  • /proc
    应该永远不要备份这个目录。它不是一个真实的文件系统,而是运行内核和环境的虚拟化视图。它包括诸如 /proc/kcore 这样的文件,这个文件是整个运行内存的虚拟视图。备份这些文件只是在浪费资源。
  • /dev
    包含硬件设备的文件表示。如果计划还原到一个空白的系统,那就可以备份 /dev。然而,如果计划还原到一个已安装的 Linux 系统,那么备份 /dev 是没有必要的。

其他目录包含系统文件和已安装的包。在服务器环境中,这其中的许多信息都不是自定义的。大多数自定义都发生在 /etc 和/home 目录中。不过出于完整性的考虑,您可能希望备份它们。

在生产环境中,我希望确保数据不会丢失,因而我会备份除 /proc 目录之外的整个系统。如果最担心用户和配置,我会仅备份 /etc、/var、/home 和 /root 目录。







备份工具

正如前面提到过的, Linux 备份在很大程度上就是打包和解包文件。这允许使用现有的系统实用工具和脚本来执行备份,而不必购买商业化的软件包。在许多情况下,这类备份将是足够的,并且为管理员提供了极大的控制能力。备份脚本可以使用 cron 命令来自动化,这个命令控制 Linux 中预定的事件。

tar

tar 是一个已移植到 Linux 中的经典 UNIX 命令。 tartape archive(磁带归档)的缩写,最初设计用于将文件打包到磁带上。如果您下载过 Linux 源代码,或许已经碰到过 tar 文件。这是一个基于文件的命令,它本质上是连续地、首尾相连地堆放文件。

使用 tar 可以打包整个目录树,这使得它特别适合用于备份。归档文件可以全部还原,或从中展开单独的文件和目录。备份可以保存到基于文件的设备或磁带设备上。文件可以在还原时重定向,以便将它们重新放到一个与最初保存它们的目录(或系统)不同的目录(或系统)。 tar 是与文件系统无关的。它可以使用在 ext2、ext3、 jfs、Reiser 和其他文件系统上。

使用 tar 非常类似于使用诸如 PKZip 这样的文件实用工具。只需将它指向一个目的(可以是文件或设备),然后指定您想要打包的文件。您可以通过标准的压缩类型来动态压缩归档文件,或指定一个自己选择的外部压缩程序。要通过 bzip2 压缩或解压缩文件,可使用 tar -z 命令。

要使用 tar 来把除 /proc 目录之外的整个文件系统备份到 SCSI 磁带设备:


tar -cpf /dev/st0 / --exclude=/proc

在上面的例子中, -c 开关表示归档文件正在被创建。 -p 开关表示我们希望保留文件许可权限,这对良好的备份来说是很关键的。 -f 开关指向该归档文件的文件名。在本例中,我们使用的是原始磁带设备 /dev/st0。/ 表示我们想要备份的内容。既然我们想要备份整个系统,因此把这个开关指定为根(root)。当把 tar 指向一个目录(以 / 结尾)时,它会自动递归。最后,我们排除了 /proc 目录,因为它没有包含需要保存的任何内容。如果单盒磁带容纳不下这个备份,我们需要添加 -M 开关(本例中没有显示)以进行多卷备份。

以防万一

不要忘了 Linux 是区分大小写的。例如, tar 命令应该总是以小写的形式执行。命令行开关可以是大写、小写或大小写的混合。例如, -t-T 执行不同的功能。文件或目录名称可以混合使用大小写,而且就像命令和命令行开关一样,是区分大小写的。

要还原一个或多个文件,可以使用带提取开关( -x )的 tar 命令:

tar -xpf /dev/st0 -C /

这里的 -f 开关同样指向归档文件, -p 开关表明我们想要还原归档的权限。 -x 开关表明从归档中提取文件。 -C / 表明我们想要让还原从 / 开始。 tar 通常还原到运行这个命令的目录。 -C 开关使我们的当前目录不再相关。

您可能会经常使用的另外两个 tar 命令是 -t-d 开关。 -t 开关列出某个归档文件的内容。 -d 开关将归档文件的内容与系统上的当前文件作比较。

为便于操作和编辑,您可以将想要归档的文件和目录放进一个文本文件中,然后在命令行通过 -T 开关引用这个文本文件。这些文件和目录可以与命令行上列出的其他目录结合起来。下面的命令行备份 MyFiles 中列出的所有文件和目录、/ 根目录和 /tmp 目录中的所有 iso 文件。

tar -cpf /dev/st0 -T MyFiles /root /tmp/*.iso

文件列表只是一个文本文件,其中列出文件或目录。下面是一个例子:

/etc



/var



/home



/usr/local



/opt


请注意 tar -T (或 files-from )命令不能接受通配符。文件必须明确地列出。上面的例子展示了一种单独地引用文件的方法。您还可以执行脚本来搜索系统,然后建立一个列表。下面就是这样一个脚本的例子:

#!/bin/sh



cat MyFiles > TempList



find /usr/share -iname *.png >> TempList



find /tmp -iname *.iso >> TempList



tar -cpzMf /dev/st0 -T TempList


上面的脚本首先将 MyFiles 中的所有现有文件列表复制到 TempList。然后它执行两个 find 命令来搜索文件系统中匹配某个模式的文件,并将它们附加到 TempList。第一次是搜索 /usr/share 目录树中以 .png 结尾的所有文件。第二次是搜索 /tmp 目录树中以 .iso 结尾的所有文件。在建立好列表之后, tar 然后在文件设备 /dev/st0 (第一个 SCSI 磁带设备)上创建 一个新的归档文件,该文件使用 g zip 格式来压缩,并保留所有文件权限。该归档文件将跨越多个卷。要归档的文件的名称将从 TempList 文件中提取。

还可以使用脚本来执行更精细的操作,比如增量备份。Gerhard Mourani 在他的 Securing and Optimizing Linux 一书中给出了一个优秀的脚本,您可在本文结尾处的 参考资料中找到关于这本书的信息。

也可以编写脚本来还原文件,虽然还原通常是手动进行的。正如上面提到过的,用于提取文件的 -x 开关代替了 -c 开关。可以还原整个归档文件,或者还原指定的个别文件或者目录。使用通配符来引用归档文件中的文件是可以的。还可以使用开关来转储和还原。







dump 和 restore

dump 可以执行类似 tar 的功能。然而, dump 倾向于考虑文件系统而不是个别的文件。下面是引自 dump 手册文件中的内容:“dump 检查 ext2 文件系统上的文件,并确定哪些文件需要备份。这些文件将出于安全保护而被复制到给定的磁盘、磁带或其他存储媒体上……大于输出媒体容量的转储将被划分到多个卷。在大多数媒体上,容量是通过一直写入直至返回一个 end-of-media 标记来确定的。”

配合 dump 的程序是 restore ,它用于从转储映像还原文件。

restore 命令执行转储的逆向功能。可以首先还原文件系统的完全备份,而后续的增量备份可以在已还原的完全备份之上覆盖。可以从完全或部分备份中还原单独的文件或者目录树。

dumprestore 都能在网络上运行,因此您可以通过远程设备进行备份或还原。 dumprestore 使用磁带驱动器和提供广泛选项的文件设备。然而,两者都仅限用于 ext2 和 ext3 文件系统。如果使用的是 JFS、Reiser 或者其他文件系统,您将需要其他的实用工具,比如 tar







使用 dump 执行备份

使用 dump 执行备份是相当简单的。下面的命令执行一个完全 Linux 备份,它把所有 ext2 和 ext3 文件系统备份到一个 SCSI 磁带设备。

dump 0f /dev/nst0 /boot



dump 0f /dev/nst0 /

在这个例子中,系统中有两个文件系统。一个用于 /boot,另一个用于 / ,这是常见的配置。它们必须在执行备份时单独地引用。 /dev/nst0 引用第一个 SCSI 磁带驱动器,不过是以非重绕的模式引用。这样确保各个卷在磁带上一个接一个地排列。

dump 的一个有趣特性是其内置的增量备份功能。在上面的例子中, 0 表示 0 级或基本级备份。这是完全系统备份,您要定期执行以保存整个系统。对于后续的备份,您可以使用其他数字(1-9)来代替 0,以改变备份级别。1 级备份会保存自从执行 0 级备份以来更改过的所有文件。2 级备份会保存自从执行 1 级备份以来更改过的所有文件,以此类推。使用 tar 和脚本可以执行相同的功能,但要求脚本创建人员提供一种机制来确定上次备份是何时执行的。 dump 具有它自己的机制,即它在执行备份时会输出一个更新文件(/etc/dumpupdates)。这个更新文件将在每次执行 0 级备份时被重设。后续级别的备份会保留它们的标记,直至执行另一次 0 级备份。如果您在执行基于磁带的备份, dump 会自动跟踪多个卷。

跳过文件

标记将被 dump 跳过的文件和目录是可以做到的。实现此目的的命令是 chattr ,它改变 ext2 和 ext3 文件系统上的扩展属性。

chattr +d 

上面的命令向文件添加一个标记,让 dump 在执行备份时跳过该文件。







使用 restore 来执行还原

要还原使用 dump 保存的信息,可以使用 restore 命令。像 tar 一样, dump 能够列出( -t )归档文件的内容,并与当前文件作比较( -C )。使用 dump 時必须小心的地方是还原数据。有两种非常不同的还原方法,您必须使用正确的方法才能获得可预测的结果。

重建 (-r)

记住,在设计 dump 时考虑得更多的是文件系统,而不是单独的文件。因此,存在两种不同的文件还原风格。要重建一个文件系统,可使用 -r 命令行开关。设计重建的目的是为了能在空文件系统上操作,并将它还原为已保存的状态。在执行重建之前,您应该已经创建、格式化和装载(mount)了该文件系统。不应该对包含文件的文件系统执行重建。

下面是使用上面执行的转储来执行完全重建的例子。

restore -rf /dev/nst0

上面这个命令需要针对要还原的每个文件系统分别执行。

在需要的时候,可以重复这个过程来添加增量备份。

提取 (-x)

如果需要使用单独的文件而不是使用整个文件系统,您必须使用 -x 开关来提取它们。例如,要仅从我们的磁带备份中提取 /etc 目录,可使用以下命令:

restore -xf /dev/nst0 /etc

交互式还原 (-i)

restore 提供的另外一个特性是交互式模式。使用命令:

restore -if /dev/nst0

将把您置于交互式 shell 中,同时还显示了包含在该归档文件中的项。键入“help”将会显示一个命令列表。然后您就可以浏览并选择希望提取的项。务必记住,您提取的任何文件都将进入当前目录。







dump 与 tar

dumptar 都有一批拥护者。两者都各有优点和缺点。如果您运行的是除 ext2 或 ext3 之外的任何文件系统,那么 dump 就对您不可用。然而如果不是这种情况,那么只需最少的脚本就能运行 dump ,并且 dump 还具有可用于帮助还原的交互式模式。

我倾向于使用 tar ,因为我喜欢编写脚本来获得额外的控制级别。此外还有用于操作 .tar 文件的多平台工具。







其他工具

在 Linux 中,任何能够复制文件的程序都可以用来执行某种程度的备份。有人就使用 cpiodd 来执行备份 。 cpio 是又一个与 tar 差不多的打包实用工具,但使用得不太普遍。 dd 是一个文件系统复制实用工具,它产生文件系统的二进制副本。 dd 还可用于产生硬盘驱动器的映像,类似于使用诸如 Symantec 的 Ghost 这样的产品。然而, dd 不是基于文件的,因此您只能使用它来将数据还原到完全相同的硬盘驱动器分区。






商业化备份产品

可用于 Linux 的商业化备份产品有很多。商业化产品一般提供了便利的界面和报告系统,而在使用诸如 dumptar 这样的工具时,您必须自食其力。商业化产品很广泛,通常提供大量的特性。使用商业软件包的最大好处是,有一个预先建立的用于处理备份的策略,您可以立即投入工作。商业化的开发人员已经犯了您即将要犯的许多错误,他们的智慧的代价相比于丢失您的宝贵数据来说是廉价的。

Tivoli Storage Manager

Tivoli Storage Manager 或许是现在可用于 Linux 的最好的商业化备份和存储管理实用工具。Tivoli Storage Manager 服务器可运行在多种平台上,包括 Linux,而客户机则可以运行在更多种类的平台上。

本质上,Storage Manager 服务器是通过适合于备份该环境的设备来配置的。要参与备份的任何系统都要加载一个与服务器通信的客户机。备份可以按计划执行、通过 Tivoli Storage Manager 客户机界面手动执行,或者使用基于 Web 的界面远程执行。

TSM 基于策略的性质意味着无需经常调整文件列表,就能够为备份行为定义中心规则。此外,IBM Tivoli Storage Resource Manager 还能够识别、评估、控制和预测企业存储资产的利用情况,能够检测潜在的问题并自动应用自修复调整。更多细节请参见 Tivoli Web 站点(参见 参考资料中的链接)。



图 1. Tivoli Storage Manager 菜单
图 1. Tivoli Storage Manager 菜单

然后备份和还原就通过远程设备来处理



图 2. Tivoli Storage Manager 界面
图 2. Tivoli Storage Manager 界面






前瞻和回顾

拥有良好备份的第一步是拥有计划。首先知道您需要保存的数据以及需要什么恢复策略,然后使用最适合该策略的工具。

Linux 附带了一些现成的(out of the box)有用备份工具。其中两个最常用的是 tardump/restore 。两者都能执行完全系统备份。使用创造性的脚本,您能够设计一个自定义的方案来本地和远程地备份系统。

然而,编写自己的备份脚本可能是一项繁重的任务,对于复杂的企业来说更是如此。诸如 Tivoli Storage Manager 这样的商业化软件降低了学习难度,并允许您立即控制自己的备份,但是您可能必须调整自己的策略来适应这些工具的功能。



参考资料



关于作者


Chris Walden 是德克萨斯州奥斯汀的 IBM Developer Relations Technical Consulting(也称为 dragonslayers )的一名电子商务架构师,该公司为 IBM 商业伙伴提供教育、实现和咨询。他致力于 Linux 相关工作,一有机会就向身边的人宣传 Linux 的种种好处。除了完成他的架构师的职责之外,他还精通 Linux 基础设施服务器的各个领域,包括混合平台用户环境下的文件、打印以及其他应用服务等。Chris 有 10 年的计算机行业经验,从现场支持到 Web 应用开发和顾问,各个领域他都曾涉足。您可以通过电子邮件 cmwalden@us.ibm.com 与 Chris 联系。