Wednesday, January 28, 2009

Some mind~

I want to write some project desgin article to improve the capiblity of system design.
I think I need to write and read a lot of desgin article.

Best wishes for everything your heart desire.

Best wishes for everything your heart desire.
May you succeed at whatever you try.
The most you wish in this year is the lease you receive.

Labels:


Wednesday, January 07, 2009

Create a interactive RPMZZZ

版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2007/10/25/interactive-rpm/以及本声明


所谓交互式的rpm包,就是说在安装过程中接受用户输入,来完成诸如许可证确认、创建配置文件等工作。


首先要说明,不推荐使用rpm创建交互式安装包。rpm的设计目标就是在完全不需要用户干涉的前提下完成软件的安装、升级等工作,这样可以通过cron或者yum/apt/up2date等脚本完成自动安装和自动升级。而交互式rpm包将破坏这种特性。另外,通过图形界面安装rpm包时,交互式脚本将完全不能执行(因为没有终端)。因此,在rpm中执行脚本时,标准输入是被关闭的,也就是说你无法在rpm安装过程中获得任何用户输入。


但有时真的需要创建交互式rpm包,如迫于工作压力,或者创建内部使用的安装程序,或者作为产品分发给完全不懂计算机的用户等。虽然rpm中的脚本无法获取用户输入,但方法总是人想出来的。


我们知道在spec文件的%post节中可以书写bash脚本,而通过read命令可以获取用户输入。但如果在%post中使用read命令,你会发现read并不等到你输入而是直接就结束了。原因就是rpm安装时关闭了标准输入。我们可以手动将它重新打开,方法就是在read之前加入以下代码:


exec 6<&0 0</dev/tty       # 将标准输入保存到6,然后在标准输入上打开/dev/tty
read MYVAR
exec 0<&6 6<&- # 恢复备份的标准输入并关闭6

当然标准输入(0)本身就是关闭的,所以不备份应该也无所谓。/dev/tty是指向用户控制台的一个链接,在命令行控制台和远程终端的情况下都可以正确使用。

Labels: , ,


Saturday, January 03, 2009

New Year, New Start!

.New Year.
.7 habits
.Get things done.
.Fix Bug
.More Money.
.Artistic Style 1.22
A Free, Fast and Small Automatic Formatterfor C, C++, C#, and Java Source Code
.Happy DDDD
.Walk gently, Speak gently, Use the big fork?

Labels: ,


This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]

Scrape It
Free Hit Counters
Scrape It