linux的学习笔记
linux的学习笔记


如何定时自动运行程序

2005-2-1 星期二(Tuesday) 晴
定时自动运行程序:
crontab or at

Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组成,域之间用空格或Tab分开,其中:
minutes: 分钟域,值的范围是0到59
hours: 小时域,值的范围是0到23
day of month: 日期,值的范围是1到31
month: 月份,值的范围是1到12
day of week: 星期,值的范围是0到6,星期日值为0
command: 所要运行的命令
如果一个域是*,表明命令可以在该域所有可能的取值范围内执行。
如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字本身)。
如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。
如果日期域和星期域都有值,则这两个域都有效。
编写一个文件,用以启动自动备份进程。

用crontab -e编辑定时操作,例如加入下行命令:

0 1 * * * /oracle/backup/b.sh

用crontab -l命令来查看。
# posted by 沉底的鱼 @ 2005-02-01 12:18 评论(0)


crond实现linux定时运行程序 -- 重启

2005-2-1 星期二(Tuesday) 晴
(1)先建一个文件crond.txt如下, 每天早上四点重新启动
0 4 * * * reboot
(2)上传到/opt目录
(3)运行命令
crontab /opt/crond.txt
crontab -l
# posted by 沉底的鱼 @ 2005-02-01 12:15 评论(0)


windows定时关机程序(java)

2005-1-31 星期一(Monday) 晴
import java.io.IOException;

public class CtrWDS {

 private static CtrWDS ourInstance = null;

 private CtrWDS() {
 }

 public static CtrWDS getInstance() {
 if (ourInstance == null) {
 ourInstance = new CtrWDS();
 }
 return ourInstance;
 }

 public void exec(String cmd) {
 try {
 Runtime.getRuntime().exec(cmd);
 }
 catch (IOException e) {
 System.out.println("执行失败");
 }
 }

 public void shutdown() {
 exec("shutdown -S ");
 }

 public void restart() {
 exec("shutdown -R ");
 }

 public void logout() {
 exec("shutdown -L ");
 }

 public static void main(String[] str) {
 if (str.length == 0) {
 System.out.println("-----------------------\n" +
 "关机 -s\n" +
 "重起 -r\n" +
 "注销 -l\n" +
 "-----------------------\n");
 }
 else{
 try{
 Thread.currentThread().sleep(10000L);
 }
 catch(Exception e){
 CtrWDS.getInstance().exec(str[0]);
 }
 }

 }

}


# posted by 沉底的鱼 @ 2005-01-31 17:22 评论(0)


用JDOM处理XML文档

2005-1-24 星期一(Monday) 晴
JDOM的介绍以及与JAXB的比较

Java + XML = JDOM !

这就是JDOM设计者的目标。如果你曾经使用过烦人的SAX或是DOM来处理XML,你就会知道为什么要有JDOM或者是JAXB。在今年(2002)的JavaOne会议上JDOM的主要创始人Jason Hunter有一篇精彩的演讲介绍了JDOM技术,题目就是JDOM Makes XML Easy。

在那篇文档里,JDOM被拿来与DOM比较,而我更愿意拿它同JAXB比较。因为JAXB和JDOM都是为了在Java中提供比DOM和SAX更为方便的XML处理接口而开发的,并且通过完全不同的途径来解决这个问题。JDOM的处理方式是与DOM类似的树操作。而JAXB通过DTD和绑定模式来生成访问XML文档的Java代码,将XML映射成了Java对象来操作。你可以根据项目的需要和个人喜好来决定采用哪一个。

JDOM与JAXB的比较,从本身的特点来看:

1) JDOM比JAXB更容易上手。使用JAXB首先要会编写DTD,然后还要会编写绑定模式。JDOM没有这样的要求,如果你会Java和XML,甚至可以说光是看JDOM的javadoc文档就能够使用JDOM。

2) JAXB编写好DTD和绑定模式以后,XML文档被映射成了Java对象,其数据就是Java对象的属性,连数据类型都做好了转换,因此,访问XML文档比JDOM要简便,可以说是一劳永逸。

3) JAXB由某个DTD和绑定模式生成的代码只能访问该DTD所约束的文档。如果想要访问其他XML文档,需要再编写DTD和绑定模式。JDOM可以处理任何XML文档,包括受约束的和不受约束的。



目前JDOM和JAXB都没有正式版本。JDOM的最新版本是beta8,JAXB是1.0 early access,其规范版本是0.21。相对而言,JDOM更成熟一些。例如JAXB不支持名字空间、不能向XML文档写入处理指令,有时我们需要保留的换行符和首尾空格在JAXB中自动过滤掉了,就连放在里面也不能幸免。JDOM就没有这些限制。如果说以上的3点比较是JDOM和JAXB本身的特点所决定的,几乎不可能改变,那么这里表明,JAXB还需要更多的工作。



获得并安装JDOM

在http://jdom.org可以下载JDOM的最新版本。以JDOM beta8的2进制版本为例。下载后解压缩,JDOM的jar文件就是build目录下的文件jdom.jar,将之加入类路径。另外JDOM还需要lib目录下那些jar文件如xerces.jar的支持。如果在使用中出现以下错误:

java.lang.NoSuchMethodError

或

java.lang.NoClassDefFoundError: org/xml/sax/SAXNotRecognizedException

你需要保证xerces.jar文件在CLASSPATH中位于其他XML类,如JAXP或Crimson之前,这些类文件,包括以前老版本的xerces,可能不支持SAX2.0或DOM Level 2。于是导致了上面的错误。

一个简单的例子

JDOM的处理方式有些类似于DOM,但它主要是用SAX实现的,你不必担心处理速度和内存的问题。另外,JDOM中几乎没有接口,的类全部是实实在在的类,没有类工厂类的。其最重要的一个包org.jdom中主要有以下类:

– Attribute

– CDATA

– Comment

– DocType

– Document

– Element

– EntityRef

– Namespace

– ProcessingInstruction

– Text

数据输入要用到XML文档要通过org.jdom.input包,反过来需要org.jdom.output。如前面所说,关是看API文档就能够使用。

我们的例子读入XML文件exampleA.xml,加入一条处理指令,修改第一本书的价格和作者,并添加一条属性,然后写入文件exampleB.xml:

//exampleA.xml







 Java编程入门

 张三

 2002-6-6

 35.0






 XML在Java中的应用

 李四

 2002-9-16

 92.0









//testJDOM.java

import org.jdom.*;

import org.jdom.output.*;

import org.jdom.input.*;

import java.io.*;

public class TestJDOM{

 public static void main(String args[])throws Exception{



 SAXBuilder sb = new SAXBuilder();



 //从文件构造一个Document,因为XML文件中已经指定了编码,所以这里不必了

 Document doc = sb.build(new FileInputStream("exampleA.xml"));



 //加入一条处理指令

 ProcessingInstruction pi = new ProcessingInstruction

 ("xml-stylesheet","href=\"bookList.html.xsl\" type=\"text/xsl\"");

 doc.addContent(pi);





 Element root = doc.getRootElement(); //得到根元素

 java.util.List books = root.getChildren(); //得到根元素所有子元素的集合

 Element book = (Element)books.get(0); //得到第一个book元素

 //为第一本书添加一条属性

 Attribute a = new Attribute("hot","true");

 book.setAttribute(a);

 Element author = book.getChild("author"); //得到指定的字元素

 author.setText("王五"); //将作者改为王五

 //或 Text t = new Text("王五");book.addContent(t);

 Element price = book.getChild("price"); //得到指定的字元素

 //修改价格,比较郁闷的是我们必须自己转换数据类型,而这正是JAXB的优势

 author.setText(Float.toString(50.0f));







 String indent = " ";

 boolean newLines = true;

 XMLOutputter outp = new XMLOutputter(indent,newLines,"GBK");

 outp.output(doc, new FileOutputStream("exampleB.xml"));



 }

};



执行结果exampleB.xml:







 Java编程入门

 50.0

 2002-6-6

 35.0






 XML在Java中的应用

 李四

 2002-9-16

 92.0











在默认情况下,JDOM的Element类的getText()这类的方法不会过滤空白字符,如果你需要过滤,用setTextTrim() 。
# posted by 沉底的鱼 @ 2005-01-24 09:56 评论(0)


Windows+Linux的双系统

2005-1-15 星期六(Saturday) 晴
Windows+Linux的双系统

  安装思路:在一个电脑上安装Windows98、WindowsXP和Linux三种操作系统。Linux选择Red Hat Linux9.0。按照先Windows98后WindowsXP最后Linux的安装顺序,两个Windows系统分别安装在C盘和D盘,剩余硬盘空间留给Linux安装。这是因为Linux有自己独立的文件系统,不能安装到Windows分区。

  先安装好两个Windows系统,需要注意在安装WindowsXP的时候应该选择“全新安装(高级)”项目,这样才能保留原有的Windows98系统。

  在Windows98和WindowsXP的环境中要实现Windows和Linux双重引导,方法有很多种,包括使用第三方工具软件实现。但是对于新手朋友来说,最常用的还是利用Linux自身的引导装载管理程序GRUB,自动接管多重系统的启动菜单。

  什么是Linux引导管理程序

  引导管理程序是计算机启动时所运行的第一个程序,它的责任是载入操作系统并把控制转交给它,然后,内核程序再初始化剩余的操作系统。

  在Linux中,有两种系统引导管理程序分别是GRUB和LILO。实际上两种程序是前后承接的。从Red Hat Linux 7.2开始,GRUB就取代LILO成为Linux默认的启动引导程序。它的优势在于操作和配置方面大大简化、性能也比前任有很大提高。

  建立分区

  在Linux安装中,新用户碰到的最大问题就是如何分区。在Red Hat9.0的安装界面中,提供了两种分区方式。自动分区是系统根据用户选择的安装类型进行空间分配。这里我们要安装多系统,必须自己分区,选择“用Disk Druid手工分区”。
Step1 选择手工分区


  用Linux的第一张安装光盘启动系统,电脑会自动进入Linux的图形化安装界面(图1)。



图 1

  在Linux的安装中,最需要注意的一个环节就是创建Linux分区。因为相对于Windows系统来说,Linux的分区要相对复杂一些,格式也完全不一样。

  选择“定制”选项,接着选择“用Disk Druid手工分区”(图2)。



图 2

  在随后出现的界面中选中剩余硬盘空间,单击“新建”按钮创建Linux分区。在这里我们可设置三个分区:引导分区、交换分区和根分区。下面我们就将对这三种分区一一进行设置。
  Step2 建立引导分区


  在弹出的“添加分区”对话框上(图3)创建引导分区。这个分区包含操作系统的内核,允许系统引导Red Hat Linux,以及其它几个在引导过程中使用的文件。在挂载点处设为“/boot”,大小默认为100MB,文件系统是ext3。



图 3

  Step3 建立交换分区

  在Linux中,交换分区是一个特殊的分区,它同Windows XP的页面文件非常类似。交换分区用来支持虚拟内存,当没有足够的内存来储存系统正在处理的数据时,这些数据就被写入交换区。

  此处只需选择文件类型为swap。如果内存容量是128MB,则交换分区容量可以设为256MB。

  Step4 建立根分区

  在这个设置中,所有文件都位于根分区上。一个大小为 1.7 GB 的根分区可以容纳与个人桌面或工作站相当的安装容量。在弹出的“添加分区”对话框上,选择挂载点为“/”,选择文件系统为ext3,容量大小不低于1.5GB。

 引导程序设置


  创建好Linux分区,接下来就是对系统引导管理程序进行配置。

  Step1 修改默认启动系统

  图4是Red Hat Linux的系统引导程序配置图。从中可以看到Linux引导管理程序默认引导Linux。如果是在多重操作系统进行配置中,我们可以在这里修改,在Windows XP前面的复选框打上钩。这样系统默认启动时就会自动选择WindowsXP。



图 4

  Step2 编辑默认项目标签


  在Red Hat Linux中,会出现把WindowsXP看成是DOS的情况。要解决这个问题并不难,单击引导装载程序配置页面上的“编辑”按钮,在随后出现的对话框中修改这个标签为WindowsXP(图5)即可。



图 5

  Step3 添加其它操作系统

  单击图4中的“添加”按钮,打开一个“映像”对话框,我们可以在“标签”文本框输入该操作系统的名称,例如“Windows 98”或者“WindowsXP”,在“设备”下拉表中指定该操作系统系统分区所在位置,并确定是否选择该操作系统为默认引导系统。如果是,就勾选“默认引导目标”选项。

  至此,Windows和Linux多重系统的“鹊桥会”计划就基本上完成了,接下来的操作比较简单,只按照屏幕提示即可轻松完成。

  编后:同我们熟悉的Windows相比,Linux很多具体安装设置具有自己的特点。从上面这篇文章中大家可以举一反三,尝试Windows2000、WindowsXP和Windows98、Linux之间的多重系统启动。

  小知识

  挂载点——输入分区的挂载点,可以使用下拉菜单来为系统选择正确的挂载点。
  文件系统类型——选择用于该分区的合适文件系统。
  允许的驱动器——包括系统上安装的硬盘列表。如果某个硬盘前没有打钩,那么这个分区在硬盘上将不会被创建。
  大小(MB)——输入分区的大小(MB)。从100MB开始,若不改变,创建的分区将只有100MB。
  检查磁盘坏块——如果想在格式化每一个文件系统时检查磁盘坏块,请确认此选项被选,但花费时间将很长。
# posted by 沉底的鱼 @ 2005-01-15 13:43 评论(1)


Linux常用命令简介

2005-1-15 星期六(Saturday) 多云
Linux常用命令简介

su
su命令是最基本的命令之一,常用于不同用户间切换。例如,如果登录为 user1,要切换为user2,只要用如下命令:
$su user2
然后系统提示输入user2口令,输入正确的口令之后就可以切换到user2。完成之后就可以用exit命令返回到user1。
su命令的常见用法是变成根用户或超级用户。如果发出不带用户名的su命令 ,则系统提示输入根口令,输入之后则可切换为根用户。
如果登录为根用户,则可以用su命令成为系统上任何用户而不需要口令。

pwd
pwd命令也是最常用最基本的命令之一,用于显示用户当前所在的目录。

cd
cd命令不仅显示当前状态,还改变当前状态,它的用发跟dos下的cd命令基本一致。
cd ..可进入上一层目录
cd -可进入上一个进入的目录
cd ~可进入用户的home目录

ls
ls命令跟dos下的dir命令一样,用于显示当前目录的内容。
如果想取得详细的信息,可用ls -l命令, 这样就可以显示目录内容的详细信息。
如果目录下的文件太多,用一屏显示不了,可以用ls -l |more分屏显示 。

find
find命令用于查找文件。这个命令可以按文件名、建立或修改日期、所有者(通常是建立文件的用户)、文件长度或文件类型进行搜索。
find命令的基本结构如下:
$find
其中指定从母瞿柯伎妓阉鳌V付ㄋ阉魈跫1硎菊业轿募趺创怼R话憷此担?print动作,显示 整个文件路径和名称。如果没有这个动作,则find命令进行所要搜索而不显示结果,等于白费劲。
例如,要搜索系统上所有名称为ye的文件,可用如下命令:
$find / -name ye -print
这样就可以显示出系统上所有名称为ye的文件。

tar
tar最初用于建立磁带备份系统,目前广泛用于建立文件发布档案。可用如下方法建立tar档案:
$tar cvf
例如,如果要将当前目录中所有文件存档到ye.tar中,可用如下命令:
$tar cvf ye.tar *.*
要浏览档案内容,将c选项变成t。如果要浏览ye.tar档案中的内容,可用如下命令:
$tar tvf ye.tar
要取出档案内的内容,将c选项变成x。如果要将ye.tar档案中的内容取到当前目录中,可用如下命令:
$tar xvf ye.tar

gzip
gzip命令用于压缩文件。 例如,如果要将ye.txt文件压缩,可用如下命令:
$gzip ye.txt
这样就可以压缩文件并在文件名后面加上gz扩展名,变成文件ye.txt.gz。
解压缩文件可用gzip -d命令实现:
$gzip -d ye.txt.gz
这样就可以解压缩文件并删除gz扩展名。除此之外还可以用gunzip命令来解 压缩文件,效果跟用gzip -d命令一样。
旧版的tar命令不压缩档案,可用gzip压缩。例如:
$tar cvf ye.tar *.txt
$gzip ye.tar
则可建立压缩档案ye.tar.gz。
新版的tar可以直接访问和建立gzip压缩的tar档案,只要在tar命令中加上z 选项就可以了。例如:
$tar czvf ye.tar *.txt
生成压缩档案ye.tar.gz,
$tar tzvf ye.tar *.txt
显示压缩档案ye.tar.gz的内容,而
$tar xzvf ye.tar *.txt
取出压缩档案ye.tar.gz的内容。

mkdir
这个命令很简单,跟dos的md命令用法几乎一样,用于建立目录。

cp
cp命令用于复制文件或目录。
cp命令可以一次复制多个文件,例如:
$cp *.txt *.doc *.bak /home
将当前目录中扩展名为txt、doc和bak的文件全部复制到/home目录中。
如果要复制整个目录及其所有子目录,可以用cp -R命令。

rm
rm命令用于删除文件或目录。
rm命令会强制删除文件,如果想要在删除时提示确认,可用rm -i命令。
如果要删除目录,可用rm -r命令。rm -r命令在删除目录时,每删除一个文件或目录都会显示提示,如果目录太大,响应每个提示是不现实的。这时可以用 rm -rf命令来强制删除目录,这样即使用了-i标志也当无效处理。

mv
mv命令用于移动文件和更名文件。例如:
$mv ye.txt /home
将当前目录下的ye.txt文件移动到/home目录下,
$mv ye.txt ye1.txt
将ye.txt文件改名为ye1.txt。
类似于跟cp命令,mv命令也可以一次移动多个文件,在此不再赘叙。

reboot
重启命令,不必多说。

halt
关机命令,不必多说。
# posted by 沉底的鱼 @ 2005-01-14 14:27 评论(0)


在linux下安装应用程序

2005-1-14 星期五(Friday) 晴
1 安装应用程序

下面我们来解释如何在Linux系统中安装软件,例如如何安装现成的应用程序,或者编
译公开源代码的应用程序。事实上,由于Linux应用程序可以以源代码或者目标程序的方
式提供,所以有多种提供软件包的方法,最常用的两种方法是rpm和tgz。

1.1 rpm程序

rpm是一种将软件打包发行并且实现自动安装的程序,目前,大部分Linux发行版本都
使用rpm程序来管理软件的安装和拆除,例如RedHat,Turbo Linux,Corel Linux等等。
对于个别没有提供rpm程序的发行版本,你可以自己下载rpm程序并且进行编译。

需要用rpm安装的软件包通常是一些打包文件,后缀名是.rpm。rpm程序可以对这种程
序包进行安装,卸载,升级和维护。

Rpm程序的第一个功能是安装应用软件,例如,在当前目录下有一个apache-1.3.6-4.
rpm软件包,那么安装它的命令是

rpm –i apache-1.3.6-4.rpm

-i开关用来安装应用软件,如果你想看到更完整的安装信息,可以同时使用-v和-h选
项:

rpm –ivh apache-1.3.6-4.rpm

这两个选项将在安装的同时显示软件的名称和安装进度。

rpm程序能够在安装程序的同时检查软件包的相互依赖关系,并且检验软件之间的文件
冲突,如果发现冲突或者需要的软件包没有安装,或者已经安装了其他版本的软件包,
就会报错并退出。

对于需要升级旧版本软件的情况,使用-U选项,例如,已经安装了Apache 1.2.1的系
统上再安装1.3.6,那么需要执行

rpm –U apache-1.3.6-4.rpm

同样可以使用-v和-h选项。

偶尔你可能会碰到想要不顾文件冲突或者版本冲突而想强行安装应用程序的情况,这
种情况下可以使--force选项,如:

rpm –i --force apache-1.3.6-4.rpm

类似的还有两个选项--nodeps 和--replacefiles。-nodeps是不检查相互依赖关系,
--replacefiles是自动强制替换文件。

另外一个有趣的用法是可以用rpm从ftp server上安装应用程序,例如

rpm –i ftp://myserver.com/apache/apache-1.3.6-4.rpm

rpm程序的第二个标准用法是卸载软件包,这可以用-e选项,例如,删除apache-1.3.
6的命令是

rpm –e apache

注意删除软件包的时候使用的软件包的名字不包含版本号。

同样,删除软件包也会引起rpm的软件包依赖性验证,如果你想删除的软件包被别的软
件包使用就会出错。--nodeps选项仍然用于禁止依赖性检查。

下一个常用的功能是对软件包进行查询,这是通过-q选项来完成的,例如,要查阅当
前是否安装了apache软件包,版本是什么,可以使用命令(注意没有版本后缀)

rpm –q apache

会显示当前安装的apache rpm的文件名。如果要查询当前安装的所有软件包,使用-a
选项:

rpm –a

有时你想知道某个文件是什么软件包安装上去的,这时可以使用-f选项,例如,要查
出/etc/httpd/httpd.conf属于那个软件包,执行

rpm –qf /etc/httpd/httpd.conf

另外的工作是查询某个软件包所包含的文件,这可以使用-qpl选项,如

rpm –qpl apache-1.3.6-4.rpm

其中,l选项的含义是建立类似于ls –l的文件列表输出,类似的还有-i,-d和-c,例
如

rpm –qpi apache-1.3.6-4.rpm

显示这个软件包的版本和开发人员信息。

rpm –qpc apache-1.3.6-4.rpm

显示软件包中的配置文件清单

rpm –qpd apache-1.3.6-4.rpm

显示软件包中的文档列表。

最后一个常用的功能是校验软件包的完整性,命令是-V。例如,检验某个软件包的文
件是否正确,使用

rpm –V apache

想检查某个安装好的文件和包中的文件是否一致,使用-Vf,例如

rpm –Vf /usr/sbin/httpd

想检查某个包安装到系统上的文件是否完全正确(和包比较),使用-Vp,如

rpm –Vp apache-1.3.6-4.rpm

1.2 编译应用程序

尽管rpm程序带来了很多好处,但是由于各种原因,仍然难免发生在某个系统上编译出
的应用程序在其他系统上不能运行的情况。最常见的情况是运行库的不同,例如,现在
大部分Linux上的应用程序基于GLIBC(GNU GCC编译器使用的运行库),结果是没有包含
正确的GLIBC版本的Linux就无法使用这些目标代码,这种互相不兼容是UNIX传统的一大
体现。幸运的是,所有Linux都基于共同的操作系统内核(内核版本不同引起的冲突除外
)和相同的编译器(GNU GCC)。而且Linux下的应用程序是基于GNU协议的,因此你通常
总是可以重新编译源程序,得到一个可以使用的版本。

要编译应用程序,首先必须拿到应用程序的源代码。一般来说,各个Linux厂商都会提
供它的发行版本中各种应用程序的源代码,实在不行的话你也可到网上去下载。

下载下来的源代码有各种形式,最常见的是rpm,其后缀名是.src.rpm,可以象普通的
rpm文件一样安装,安装时,rpm程序一般会把源代码拷贝到/usr/src/redhat/SOURCE下
(也可能有其他的目录名,你自己到/usr/src下看一下),通常这些源代码安装时并没
有解压,是一些在/usr/src/redhat/SOURCE下后缀名为.tgz或.tar的文件。另外,也可
能你下载的源代码本身就是.tgz或者.tar.gz形式,那么就可以直接进行下一步,不需要
安装了。

.tgz或者.tar.gz就是.tar的压缩格式,可以用gzip程序进行展开:

gzip –d apache-1.3.6.tgz

或者

gzip –d apache-1.3.6.tar.gz

将会将其还原为apache-1.3.6.tar文件,然后

tar xvf apache-1.3.6.tar

将这个程序完全展开成为源代码。关于tar和gzip程序的详细说明见后面“日常维护”
部分。

进入到展开的目录apache-1.3.6,然后执行

./configure

几乎所有的源程序都会包含这个程序,通常,在发行源代码时,开发者会写这个名为
configure的脚本,以便自动确定诸如操作系统类型,编译器的版本等等重要的信息。这
个脚本将生成关键性的Makefile文件。(然而,也有个别开发者会把这个工作留给你自
己,这样的话,他一般会给你一个范例性的Makefile文件,并且给出足够的说明,你可
以在这个文件上修改使之适合你的系统)另外,大部分程序的configure程序包含一些参
数,可以设置程序安装运行的路径,程序的运行库等等信息。一般你可以使用-help参数
来察看这些参数的用法。

然后执行

make

GNU的make程序将自动编译所有源代码。

最后,在编译完毕之后,通常开发者会设计自动安装程序,这可以执行

make install

完成。

为了兼容性的原因,大部分源代码在编译后,目标程序的缺省安装路径是/usr/local
,相应地,配置文件的位置也变到了/usr/local/etc,/usr/local/etc或者/usr/local
/xxxx/etc等(xxxx是被编译的应用程序的名字),通常你可以用configue的选项设定这
些目录,或者干脆按照新的路径进行配置。

个别比较简单的软件只有一个运行文件,例如joe程序,那么就不提供安装命令,你只
要自己把编译出的可执行程序拷贝到/usr/bin就万事大吉了。

上面的操作是编译90%Linux程序的基本步骤,不过,必须记住,这只是一种习惯而已
,如果这样的动作不起作用,那也没有什么奇怪的,那你就的研究软件的文档了。还有
个别的程序只有一个.c文件,那就直接用gcc编译程序编译他就可以了。

gcc编译程序的用法是

gcc –o [目标文件名] [源文件名]

例如,有一个somesoft.c,你想编译这个程序,编译出的执行程序的名字叫soft,那
么执行

gcc –o soft somesoft.c

就可以了。

由于Linux的特性,软件开发者会不断地推出新的patch,通常,这些patch会用在源代
码上修改的方式推出,表现就是一些.patch文件,可以用patch程序来使用这些patch,
例如,我得到了一个关于apache的patch程序,名字叫tok.patch,进入apache的源代码
展开的目录,执行

patch –p0 < tok.patch

就可以了。关于patch命令的情况,参考日常管理的部分。

1.3 其他

还有一些其他的软件包安装程序,例如pkgtool和deb安装程序,说实话这些程序都很
蠢,而且现在大部分Linux厂商都在走向rpm,甚至许多其他的UNIX厂商也在考虑使用rp
m,当然,像sun那样的坚持使用愚蠢的pkgtool的公司也是有的。但是我们不打算介绍这
种东西了。唯一必须指出的是.tgz或是.tar.gz这种直接压缩的软件包还是经常有人使用
的,如同我们刚才说的,这样的压缩包可以先用gzip解压再用tar展开,另外,也可以使
用tar的z选项直接展开:

tar zxvf apache-1.3.6.tgz

# posted by 沉底的鱼 @ 2005-01-14 14:17 评论(1)


页码:1/1  [1]

<< 2012 一月 >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4


·如何定时自动运行程序(2005-2-1)
·crond实现linux定时运行程序 -- 重启(2005-2-1)
·windows定时关机程序(java)(2005-1-31)
·用JDOM处理XML文档(2005-1-24)
·Windows+Linux的双系统(2005-1-15)
·Linux常用命令简介(2005-1-14)
·在linux下安装应用程序(2005-1-14)

·记号...(2011-3-21)
·5414651...(2005-11-28)


访问计数:20564


沉底的鱼 管 理 员

©天涯社区