查看内容

Windows 到 Linux 之旅

  • 2020-01-20 03:39
  • 新浦京操作系统
  • Views

1.Linux 中的配置文件是人类可读的文本文件,每一个应用程序都有其自己的配置文件,而且通常不与其他的配置文件放在一起。不过,大部分的配置文件都存放于一个目录 树(/etc) 下的单个地方,所以看起来它们在逻辑上是在一起。文本文件的配置方式使得不通过特殊的系统工具就可以完成配置文件的备份、检查和编辑工作。
2.Linux 不使用文件名扩展来识别文件的类型。相反,Linux 根据文件的头内容来识别其类型
3.Linux 通过文件访问权限来判断文件是否为可执行文件。任何一个文件都可以赋予可执行权限,这样程序和脚本的创建者或管理员可以将它们识别为可执行文件。这样做有利于安全。保存到系统上的可执行的文件不能自动执行,这样就可以防止许多脚本病毒。
4.除了 Linux 内核之外,其他软件的安装、启动、停止和重新配置都不用重新引导系统。学习 Linux 最困难的就是克服重新引导系统的习惯。
5.什么是内核?
   Linux 实际上只是内核;它实现了多任务和多用户功能,管理硬件,分配内存,激活应用程序
的运行。对初学者来说,最重要的是要明白奇数的内核版本(比如 2.3、2.5、2.7)是实验用的、正在开发的内核。 稳定的、正式发行的内核版本号是偶数的(比如 2.4、2.6、2.8)。
6.在典型的 Linux 系统中,通过组合键 Ctrl + Alt+ (F1 - F6) 您可以切换到另外的控制台。每一个控制台是系统中一个完全独立的会话,不同的用户可以同时使用。

 

7.默认的 shell 是每个用户帐号的一个参数。Linux 中典型的默认 shell 是 /bin/bash,学习shell可以去看对应的man文档8

一 介绍

8.Shell 规则
 您只需在控制台中执行相应的命令就可以随时切换 shell。只要在文件顶部放置一个井号
(#!) 指向需要的 shell,脚本就可以指定想要运行的 shell。当脚本运行的时候,不管用户所处的shell 环境是什么,它都会在正确的 shell环境中运行。下面例子中的这行代码指出脚本
需要在 C shell 下运行:
#!/bin/csh
9.链接
硬链接:只能引用同一文件系统中的文件,当您移动或删除原始文件时,硬链接不会被破坏。

RPM(RPM Package Manager)是一个开放的包管理器,它使用户可以从源码构建一个二进制的软件发行包和利用补丁包给软件打补丁。RPM包非常灵活易用,因此被作为很多linux发行版的默认软件安装包。在Redhat和CentOS中都是使用此打包格式。

符号链接:可以跨文件系统,甚至可以指向远程文件系统中的文件。符号链接只是指明了原始文件的位置,用户需要对原 始文件的位置有访问权限才可以使用链接。

 

两种链接都可以通过命令 ln <source> <target> 来创建。ln 默认创建的是硬链接。
使用 -s 开关可以创建符号链接。
10.Webmin 一个基于浏览器的管理工具,从Webmin 网站下载
11.使用ifconfig ,我们无需影响已保存的设置,就能够快速地配置网卡:pconfig eth0 192.168.13.13 netmask 255.255.255.0 up  要使用已保存的配置来激活和禁用网络设备,请分别使用 ifup 和 ifdown。
# Bring up eth0 using the saved configuration
ifup eth0
# Shut down eth0
ifdown eth0
12.RPM 本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的 Linux 软件。它包括的 .spec 文件提供了关于包及其功能和依赖关系(即在该包能够运行
之前必须安装其他哪些包)的信息。.spec 还包含包中的文件清单,指定这些文件必须加载到系统中的何处,以及它们的初始权限如何

二 制作

RPM 结构

1 创建一个RPM安装包是件很容易的事,特别是当你可以获得软件的源代码包的时候。下面介绍怎么制做一个RPM软件安装包,在继续之前,我们假设你已经知道怎么从源代码安装一个软件包。制做一个RPM软件安装包有以下几个步骤:
  (1)获得软件的源代码包

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

在安装 RPM 时,系统首先检查该包的依赖关系是否得到满足。如果不满足, 安装过程就
会终止,除非您指定了迫使安装无论如何都要继续的选项。如果一切顺利,安装前脚本就会运行。这个脚本可以做任何事情。它通常创建用户和目录。然而,它可以做许多类型的动态配置,甚至以自定义的方式编译运行系统的源代码。如果安装前脚本成功完成,二进制文件将依照清单被复制到系统上。在复制完所有的文件和设置了它们的权限之后,安装后脚本就会运行。同样,这个脚本几乎能够做任何事情。

 RPM 数据库:
这个数据库通常位于 /var/lib/rpm 目录,它包含关于系统上已安装的每个 RPM 的信息。
这个数据库知道包之间的依赖关系,当删除某个包将导致其他包无法工作时,它将发出警告。
 rpm 必须以 root 身份运行必须以 root 身份执行.rpm 安装和删除,因为需
要访问文件系统和 rpm数据库。

 rpm -i (装)
 -h(哈希线)开关来通过输出在控制台上的哈希(#新浦京澳门娱乐,)符号提供安装进度更新.
 rpm -e (删除)
 要删除已安装的包,可使用 -e 开关。rpm 将使用数据库来删除
该包的所有文件。如果有已安装的其他包依赖正在删除的包,
rpm 将会异常退出。包的删除并不一定需要它的完整名称(包括版本号)。安装时需要完整名称,因为我们是在引用一个文件名称。已安装的包仅通过它们的名称来引用。包的名称是版本号之前的所有内容。

 rpm -q(查询)
 可以从 rpm 数据库中查询多种有用的信息。对 rpm 数据库拥有读访问权限的任何用户都能够运行查询。默认情况下,全部用户都拥有读访问权限。要运行一个查询,可使用 -q 开关带上要查询的包的名称。这样将返回该包的版本。
 包的名称必须精确匹配,不允许使用通配符。然而,如果记不住包的完整名称,您可以使用grep 工具来帮助找到它。可以使用 -qa 开关来查询所有已安装的包,并用 grep 来管道输出您能记住的信息。
 
 rpm -qa | grep IBM

 (grep 是一个具有广泛用途的文本搜索工具。默认情况下,grep 将搜索文件以显示您指定的行。在这里的例子中,它搜索单词“IBM”。grep 是脚本编写和控制台工作方面的一个强大工具。)
 
 rpm -qc 显示包的配置文件
 rpm -qd 显示包的文档文件
 rpm -qi 显示包描述
 rpm -ql 显示包的文件的列表
 rpm -qR 显示包的依赖关系

13.源代码
 由于 Linux 是开放源代码的操作系统,,您可以为您的系统下载原始源代码,并以自定义的方式进行编译。
 A)解压 tar -xvzf corewars-0.9.13.tar.gz
 B)。大多数源代码包都带有一个名为 INSTALL 和一个名为 README 的文件。阅读这些材料,它可以建议正确的编译和安装步
 C)运行 configure 脚本.configure 脚本在系统上运行一系列测试,以确定为您的发行版本和系统体系结构编译包的最佳方式。然后它为您的系统创建一个定制的 Makefile。
 D)生成程序:make
 E)安装软件:make install
 文件将被复制到系统中的正确位置,文件权限会被更新,配置文件将被复制
 F)由于这个程序不是使用 rpm 来安装的,因此 rpm 数据库中没有相应的条目。如果某个程序在安装后没有按预期运行,大多数 Makefile 都包括了一个卸载参数来删除软件:make uninstall务必牢记,使用原始源代码不会在 RPM 数据库中添加任何内容。

  (2)如果你自己修改了软件,那么给它做一个补丁

  (3)编写一个包含软件包信息的spec文件

  (4)确保软件被正确的安装到适当的位置

  (5)创建RPM安装包

 

2 从上面的几步我们可以看到,制做一个RPM包最主要的就是第三步编写一个spec文件,下面介绍怎么编写这个spec文件。一个spec文件分成下面几个小节:

   (1)前言(preamble)

  当用户查询软件包信息的时候,RPM程序会打印出前言包含的信息。这一小节包含的信息有软件包的名称、功能描述、版本号、发行号和类型等信息。

  (2)准备(preparation)

  从prep节开始是创建一个软件包要做的实际工作。故名思意,这一小节所做的都是一些必须的准备工作,它的内容就像一个普通的shell脚,为了使工作更容易,这一小节提供了两个可以使用的宏,一个是解压tar文件,并把当前工作目录设置为源代码目录,另一个是给源码打补丁。

  (3)创建(build)

  就像prep小节一样,build的内容也是一个普通脚本,这一小节包含的是怎么编译源代码,它可以是一个简单的make命令或者一些更复杂的编译命令。因为现在的大多数软件都使用make编译,所以这一小节没有提供宏。

  (4)安装(install)

  install小节同样也是一个脚本,它提供一些安装软件包的命令,如果源代码的makefile文件提供有make install命令,这一节你可以简单的包含一个make install命令,否则你就得提供一些像cp, mv或者install之类的命令集。

  (5)验证(verify script)

  这一小节包含一个验证软件包的脚本,验证软件包不属于RPM的能力范围。

  (6)清除(clean)

  这一小节包含一个编译好以后用于清除无用信息的脚本。这一脚本很少会用到,因为在大多数环境下,RPM会做好这些工作。

  (7)文件列表(file list)

  这一小节包含一份文件列表,它们是组成RPM包的所有文件,当你用rpm -qpl 命令查看软件包的时候就会得到这一份文件列表。在这一小节也有几个宏可以用,它们指出哪些文件是文档,哪些是配置文件,哪里是目录等。

  (8)维护日志(changelog)

  这一小节记录了软件包的维护日志。

 

3 spec文件有一个命名规则,其文件名由以下几部份组成:软件包名-版本号-发行号.spec

 

4 下面我们举一个简单的spec文件,然后再来说明各部分的意思。文件如下:

Summary: GNU readline library

Name: readline

Version: 5.1

Release: 1

Copyright: GPL

Group: Library

Source:

URL:

Distribution: GNU Project

Vendor: GNU

Packager: Yan Dingcheng <dingcheng_yan@yahoo.com.cn>

%description

The GNU readline library gets a line from user with editing.

%prep

%setup

%build

./configure --prefix=/opt/%{name}
make

%install

make install

%files

/opt/%{name}/lib/libhistory.a

/opt/%{name}/lib/libhistory.so

/opt/%{name}/lib/libhistory.so.5

/opt/%{name}/lib/libhistory.so.5.1

/opt/%{name}/lib/libreadline.a

/opt/%{name}/lib/libreadline.so

/opt/%{name}/lib/libreadline.so.5

/opt/%{name}/lib/libreadline.so.5.1

/opt/%{name}/include/readline/chardefs.h

/opt/%{name}/include/readline/history.h

/opt/%{name}/include/readline/keymaps.h

/opt/%{name}/include/readline/readline.h

/opt/%{name}/include/readline/rlconf.h

/opt/%{name}/include/readline/rlstdc.h

/opt/%{name}/include/readline/rltypedefs.h

/opt/%{name}/include/readline/tilde.h

/opt/%{name}/info/dir

/opt/%{name}/info/history.info

/opt/%{name}/info/readline.info

/opt/%{name}/info/rluserman.info

/opt/%{name}/man/man3/history.3

/opt/%{name}/man/man3/readline.3

%changelog

* Wed Jan 31 2007 <dingcheng_yan@yahoo.com.cn>

+ create package

 

 

 

5 SPEC实例文件的具体解释:

前言

Summary:这一行文字对软件包进行简短描述

Name:软件包的名字

Version:软件包的版本号,这里必须是你计划要使用的RPM文件版本号

Release:软件包的发行号,这里必须是你计划要使用的RPM文件发行号

Copyright:软件包的版权

Group:软件包的分组,这里定义怎么打包软件包

Source:软件包的来源,当你想再次获取该软件包或者查看它是不是有更新的版本的时候,这一行就很有用了。

URL:URL与Source不一样的地方就是,Source提供的是源代码的文件名,URL提供的是指向软件包文档的链接。

Distribution:指明软件包是属于哪个产品的一部份。

Vendor:软件包的生产厂商。

Packager:打包的组织或者个人。