1.03k likes | 1.7k Views
LINUX 高级用户教程. 2003 年 3 月. LINUX 高级用户教程主要章节. LINUX 概况 LINUX 开发环境 LINUX 进程环境和空间管理 LINUX 进程管理 LINUX 下的信号 LINUX 下的计时. LINUX 用户教程主要章节. 文件操作 网络编程 LINUX 进程间通信 系统配置和管理. LINUX 概述. LINUX 历史、现状和未来 LINUX 的主要特点 LINUX 遵循的一些标准 如何获得 LINUX 在线帮助 LINUX 常常问到的一些问题. LINUX 开发环境. LINUX 下的 C 编译器
E N D
LINUX高级用户教程 2003年3月
LINUX高级用户教程主要章节 • LINUX概况 • LINUX开发环境 • LINUX进程环境和空间管理 • LINUX进程管理 • LINUX下的信号 • LINUX下的计时
LINUX用户教程主要章节 • 文件操作 • 网络编程 • LINUX进程间通信 • 系统配置和管理
LINUX概述 • LINUX历史、现状和未来 • LINUX的主要特点 • LINUX遵循的一些标准 • 如何获得LINUX在线帮助 • LINUX常常问到的一些问题
LINUX开发环境 • LINUX下的C编译器 • GNU Make • 程序中库函数和头文件 • 编程风格 • LINUX下的目标代码格式和相关命令
LINUX进程环境和空间管理 • LINUX进程环境 • 用户环境变量 • 用户程序空间布局 • 用户动态空间分配 • 空间分配相关的接口
LINUX进程管理 • Fork() • Exec • Wait • Exit
LINUX下的信号 • 信号来源和种类 • 进程对信号的响应 • LINUX下信号定义 • 信号的发送 • 信号的安装 • 信号集合和集合操作 • 信号编程注意事项 • 实例
LINUX计时 • LINUX中的时间 • Shell计时方法
文件操作 • 文件类型 • 文件属性和操作 • 目录操作 • 符号链接和IO操作 • 系统调用接口 • 文件流操作 • IO相关库接口
网络编程 • 套接口 • 网络分层协议 • 网络通信模型 • LINUX下常用网络通信接口 • 网络通信实例
进程间通信 • 进程通信类型 • 基于管道的通信和FIFO通信 • 消息队列 • 信号量 • 共享内存
系统管理(一) • 系统安装 • GRUB启动引导器,启动过程和系统服务 • 启动状态和服务配置 • 用户和组管理 • 进程管理 • 软件包管理
系统管理(二) • 网络配置 • 文件系统设置 • LINUX下各种设置的使用 • 远程登陆 • FTP、NFS配置 • Samba • 安全设置
为何选择LINUX——软件模式 当今的软件按照其提供的方式和是否赢利可以划分为三种模式,即:商业模式(commercial software)、共享模式(shareware)和自由软件(freeware 或free software)。 • 商业软件由开发者出售拷贝并提供软件技术服务,用户只有使用权,但不能进行非法拷贝、扩散和修改; • 共享软件由开发者提供软件试用程序拷贝授权,用户在使用该程序拷贝一段时间之后,必须向开发者缴纳使用费,开发者则提供相应的升级和技术服务; • 自由软件则由开发者提供软件全部源代码,任何用户都有权使用、拷贝、扩散和修改这些软件,同时有义务将自己修改过的程序代码公开。
自由软件的两层含义 • 可以免费提供给任何用户使用; • 它的源码公开和可以自由修改。所谓可以自由修改指用户可以对公开的源码进行修改,以使自由软件更加完善,还可以对自由软件进行修改的基础上开发上层软件。
自由软件的诞生 • UNIX从二十世纪七十年代诞生发展到八十年代,已经形成了多个分支(插图),Unix 在商业上面的问题让许多对于Unix 喜好者感到相当的忧心,其中一个就是有名的Richard M. Stallman先生,他认为: • Unix 是一个相当好的操作系统,在这个系统上,大家能够将自己所学的贡献出来,那么这个系统将会更加的优异。 • 让自己发展的良好的软件让大家来使用就是最大的快乐,而且由于每个人的工作环境( 指软硬件平台) 可能都不太相同,有了Open Source 的概念,大家都能够分享这一份的心得!你的程序将有很多的人可以帮忙检验,将使得Unix 社群更佳的茁壮。 • 于是为了理想,Stallman 在1984 年创立了GNU (GNU 是“GNU's Not UNIX”的缩写)与自由软件基金会( Free Software Foundation, FSF ),并创作了许多『自由软件』供大众来使用。 • 其作品以自由( free ) 的GNU GPL的授权模式提供。
自由软件带来的好处 • free的软件给使用者节省了相当一笔费用; • Internet的普及,使人们很容易下载开放源代码软件,很容易把开发、改进的新成果上网交流。使软件的开发由过去集中在专门的机构里进行变为分散在网络上由许许多多独立的开发者协作完成。它可以调动更多人的积极性,发挥更多人的创造性,而且受到更多人的实践检验,因而能够更快地完成和完善。这种方法不仅比传统方式开发的软件更为稳固,而且能够获得更多的支持和更快的更新。 • LINUX的一句名言:“BUG就像影子一样,只会出现在阳光照不到的角落中”
什么是LINUX • LINUX是一个操作系统,同时它是一个自由软件,是free的、源代码开放的,设计它的目的是建立不受任何商品化软件版权制约的、全世界都能自由使用的UNIX兼容操作系统产品。 • 典型的Linux 发行版包含Linux 内核,但还包含许多应用程序和工具。总的说来,Linux 发行版中出现的许多系统级和用户级的工具都来自自由软件基金会(Free Software Foundation)的GNU 项目。 • Linux 内核和GNU 工具套件都在GNU 通用公共许可证(GNU General Public License,GNU GPL)下发行。
为什么使用LINUX • LINUX是一套具有UNIX全部功能的free操作系统,用户可以无偿得到它及源码并获得大量的应用,而且可以任意修改和补充他们,对于用户学习、了解UNIX操作系统的内核非常有益。 • LINUX是目前唯一可以免费获得的、为PC机及其它平台上的多个用户提供多任务、多进程功能的操作系统,这是人们要使用它的主要原因。 • LINUX让我们从许可证的限制中解脱出来,而使用具有许可证的商业软件就意味着时时刻刻都得对许可证的许多条例负责。 • Linux有非常广泛的平台适应性。它在基于Intel公司的x86(也包括AMD、Cyrix、IDT)的计算机、基于Alpha的计算机,以及苹果、Sun、SGI等公司的计算机上都有相应的发布版本,甚至在AS/400这样的机器上都能找到相应的版本。Linux还可以在许多PDA和掌上电脑以及嵌入式设备上运行。 • 已有非常多的应用程序可以在Linux上运行,大多数为SCO Unix开发的应用程序都能在Linux上运行(借助于iBCS软件包),甚至还比在SCO Unix上运行速度更快。 • LINUX之所以大受欢迎,不仅仅因为它是免费的,更重要的是linux具有极其丰富的功能,LINUX操作系统不仅可以用于服务器,其桌面环境也相当不错。
LINUX的历史 • 在80年代末,以intel 主导的x86 系统架构的个人计算机大行其道!但在此时,人们使用的大多还是需要吃很多系统资源的DOS 系列或其它的操作系统。 • 芬兰的郝尔辛基大学(Helsinki )Linus Torvalds学生做了件不寻常的事情!Linus 手边有个Minix系统,他对这个操作系统有相当的兴趣!开始了把Unix 操作系统移植到个人计算机( X86 架构) 的尝试 • 基于Stallman提倡的Open Source ,通过有心的读取Unix 的核心,并且去除较为繁复的核心程序,将他改写成可以适用于一般个人计算机的x86 系统上面,到了1991年,他终于将0.02版的hobby 放到网络上面供大家下载,并且由于hobby 受到大家的肯定,相当多的朋友一起投入这个工作中!终于到了1994年将第一个完整的核心Version 1.0发布!——LINUX的一个重要里程碑
LINUX的历史(续) • 由于Linux kernel 的发展是由『虚拟团队』所达成的,大家都是透过网络取得Linux 的核心原始码,经由自己精心改造后再回传给Linux 社群,进而一步一步的发展完成完整的Linux 系统,至于Torvalds 先生是这个集团中的发起者。由于这个群策群力的缘故,Torvalds 先生将Linux 定为同样造福大家的GNU 授权模式! • 企鹅的来源: 1994年发表Linux 正式核心1.0 的时候,大家要Linus Torvalds 想一只吉祥物,怪怪的Torvalds 突然想到小时候去动物园被一只企鹅追着满地打滚~还被咬了一口!既然想不到其它的吉祥物了,干脆就以这支企鹅来当吉祥物算了!所以,目前我们常常看到这一只企鹅就是这么来的!
LINUX的发展现状和趋势 诞生了十多年的LINUX应用越来越广泛,从桌面到服务器,从操作系统到嵌入式系统,从零散的应用到整个产业的形成。 • 由于WINDOW的影响,人们对LINUX的使用还普遍比较生疏,间接影响的LINUX的发展,随着LINUX的应用范围的扩大,LINUX热正在形成,范围在不断扩大,并逐渐走出了学校、研究机构,向普及化的方向发展; • 在LINUX的应用开发、嵌入式系统开发的两大发展方向上,无论国际、国内都急需要大量的专业人才。 • Linux将会朝着完善功能、提高效率的方向发展,包括允许用户创建线程、增加实时处理功能、开发适合多处理机体系结构的版本; • LINUX桌面系统正在形成,并逐渐会在某些领域取代WINDOW系统; 今后的操作系统只有:WINDOW、UNIX和LINUX???
LINUX系统的特点(一) • 开放性:是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)的国际标准。凡是遵循国际标准所开发的硬件和软件,都功能彼此加入,可方便实现互连。另外,源码是开放的和free的,使得LINUX的获得非常方便,而且节省费用。用户可以根据自己的需要对部件进行混合搭配,建立自定义扩展。 • 多用户:是指系统资源可以被不同的用户各自拥有使用,即每个用户对自己的资源(文件、网络、空间)有特定的权限,互不影响。 • 多任务:系统可以同时执行多个程序,而且各个程序的运行相互独立。LINUX系统调度每一个进程平等地访问处理器。 • 出色的速度性能:LINUX可以理想运行数月、数年而无须重新启动,与NT相比,该特点尤其突出。LINUX不大在意CPU的速度,它可以把处理器的性能发挥到极限,用户会发现:影响系统性能提高的限制因素主要是系统总线和IO的性能。
LINUX系统的特点(二) • 良好的用户界面:LINUX向用户提供了三种界面:用户命令界面,系统调用界面和图形用户界面。 • 丰富的网络功能:LINUX是在Internet基础上产生并发展起来的,因此,完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优于其它操作系统 • 可靠的系统安全:LINUX采取了许多安全技术措施,包括对读写进行权限控制、带保护的子系统、审计跟踪、核心授权等,为网络多用户环境提供了必要的安全保障。 • 良好的可移植性:LINUX是一种可移植操作系统,能够从微型计算机到大型计算机的任何环境和任何平台下运行。可移植性为运行LINUX的不同计算机平台与其它任何机器进行有效的通信提供了手段,不需要增加特殊和昂贵的通信接口。 • 具有标准兼容性:LINUX是一个与POSIX(Portable Operating System Interface)相兼容的操作系统,它所构成的子系统支持所有相关的ANSI、ISO、IETF和W3C业界标准。
LINUX系统的组成 LINUX一般有四个部分组成:内核、Shell、文件系统和应用程序。内核、Shell和文件系统构成了基本的操作系统结构。它们使得用户可以运行程序,管理文件并使用系统。 • LINUX内核:内核是系统的“心脏”,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。Linux内核主要由存储管理、进程管理、设备管理、进程间通信等几部分组成。 • LINUX Shell:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。 • LINUX文件系统:文件系统是存放在磁盘等存储设备上的组织方法,LINUX文件系统实际上也是内核的一个重要部分。LINUX支持目前流行的多种文件系统,如:EXT2、EXT3、FAT、VFAT、IISO9660、NFS、JFS、XFS、SMB等。 • LINUX应用程序:标准的LINUX系统都有一套称为应用程序的程序集合,包括文本编辑器、编程语言、X Window、办公套件、Internet工具、数据库等。
LINUX的内核版本 内核版本是Linus领导下的开发小组发出的系统内核版本号。 • 内核版本有三个数字:r.x.y • r:目前发布的Kernel主版本号 • x:Kernel次版本号,偶数:稳定版本;奇数:开发中版本 • y:错误修补的次数 • 对于初学者,有关内核要记住的最重要的事是:带奇数的内核版本(即2.3、2.5、2.7 等)是实验性的开发版内核。稳定的发行版内核的版本号是偶数(即2.4、2.6、2.8 等)。 目前LINUX内核的最新版本为2.6,03年底发布。
LINUX的发行版本 发行版本是一些组织和厂家将LINUX系统内核与应用软件和文档包装起来,并提供一些安装界面和系统管理工具的一个软件包的集合。其中,Linux 发行版中出现的许多系统级别和用户级别的工具都来自自由软件基金会(Free Software Foundation)的GNU 项目。目前LINUX发行版本已经有300余种,而且还在不断增加。相对于内核版本,发行套件的版本号随着发布者的不同而不同,与系统级的内核版本号是相对独立的。
国际著名的一些LINUX发行版本 • Red Hat—最著名的Linux服务提供商,Intel、D ell等大公司都对其有较大投资,该公司前不久收购了开放源代码工具供应商Cygnus公司。 • Slack Ware—历史比较悠久,有一定的用户基础。 • SUSE—在欧洲知名度较大。 • Turbo Linux—在亚洲,特别是日本用户较多。该公司在中国推出了TurboLinux 4.0、4.02和6.0的中文版,汉化做得很出色。 • Debain—完全由计算机爱好者和Linux社区的计算机高手维护的Linux发布版本。
国内著名的一些LINUX发行版本 Linux进入中国后,在我国计算机界引起了强烈的反响,最近两年,也出现了许多汉化的L i n u x发布版本,影响较大的有以下几种: • XteamLinux—北京冲浪平台公司推出的产品,中国第一套汉化的Linux发布版本。 • BluePoint—1999年底正式推出的产品,内核汉化技术颇受瞩目。 • RedflagLinux—中国科学院软件研究所和北大方正推出的Linux发布版本。
LINUX支持标准 • LINUX符合POSIX 1003.1标准,POSIX 1003.1标准定义了一个最小的Unix操作系统接口,任何操作系统只有符合这一标准,才有可能运行Unix程序。 • 为了使Unix System V和BSD上的程序能直接在 Linux上运行, Linux还增加了部分System V和BSD的系统接口,使Linux成为一个完善的Unix程序开发系统。
LINUX遵循的标准说明 • POSIX:该标准最初由IEEE(电气和电子工程师协会)开发的标准族,部分已经被ISO 接受为国际标准。POSIX.1 和POSIX.2分别定义了POSIX 兼容操作系统的C 语言系统接口以及shell 和工具的标准。这两个标准是通常提到的主要标准。 • SVID:System V 的接口描述。System V 接口描述(SVID)是描述AT&T; Unix System V 操作系统的文档,是对POSIX 标准的扩展超集。 • XPG:X/Open 可移植性指南。X/Open 可移植性指南(由 X/Open Company, Ltd.出版), 是比 POSIX更为一般的标准。X/Open 拥有 Unix 的版权,而 XPG 则指定成为 Unix 操作系统必须满足的要求。
LSB(Linux Standards Base)Linux 标准基础 • LSB推出的背景 由于LINUX发行商众多,为了避免不同发行商对程序兼容性等问题带来的影响,由四家领袖级Linux 提供商发起了成立了LINUX协会工程UnitedLinux。致力于提供改进的公共代码库,提供特定于Linux 的工业规范和认证计划,Linux 标准基础(Linux Standards Base,LSB)规范旨在消除各Linux 分发版之间的许多区别,其目标是让软件厂商更容易地制作能够在许多公司不同版本的开源软件操作系统上运行的程序,支持Linux的应用程序市场 。
LSB细则 • LSB认证是由Free Standards Group 提供独立于Linux版本发行商的第三方认证,保证产品符合面向Linux发行套件及支持Linux的应用程序的业界标准规格。 • LSB认证内容包括公共规格(gLSB)和特殊架构规格(archLSB)认证,其中gLSB定义了那些基于LSB 的程序在运行过程各模块间的标准接口,archLSB定义了基于不同架构的处理器(CPU)的标准接口 • LSB 的内容主要覆盖文件系统设计,二进制格式(包括可执行和共享库),系统命令,scripts等内容。而POSIX标准和LSB标准之间有不少交融的地方。FSG提供的文档以及测试工具、一致性测试等都是免费的。
LSB带来的好处 • 促进Linux平台标准化,使得Linux的工业标准早日形成,避免Linux陷入互不兼容泥沼,重蹈Unix阵营分裂的覆辙。 • 旨在促进Linux国际化的Li18nux等业已形成标准的遵循。 • 减少个别公司的软件开发成本,节省资源以避免不必要的重覆浪费,使得对Linux开发公司有一种可靠的营利模式,同时兼顾Linux可自由传布的特性
LSB现状 • 开源软件支持者自由标准组织(Free Standards Group)于2001年7月发表LSB1.0测试版,于04年1月,向大众发布了其LSB 2.0版Linux开发指南 • LSB (2.0)的功能支持PPC64、AMD64、IA64、PPC32、S390和S390X等许多处理器架构。 • 已经制作LSB认证的Linux产品的软件开发商包括Red Hat、 Turbolinux、SuSE Linux、MandrakeSoft、Conectiva、Laboratory、Sun Wah Linux、 ThizLinux和Progeny等。
LINUX在线文档 man,即manunal,是LINUX系统手册的电子版本。根据习惯,系统手册通常分为不同的部分(或小节,即section),每个小节阐述不同的系统内容。目前的小节划分如下: 1.命令:普通用户命令 2.系统调用:内核接口 3.函数库调用:普通函数库中的函数 4.特殊文件:/dev 目录中的特殊文件 5.文件格式和约定:/etc/passwd 等文件的格式 6.游戏程序的命令。 7.杂项和约定:标准文件系统布局、手册页结构等杂项内容 8.系统管理命令。 9 .内核例程:非标准的手册小节。便于Linux 内核的开发而包含。 手册页一般保存在/usr/share/man 目录下,其中每个子目录(如man1, man2, ..., manl, mann)包含不同的手册小节
man 命令 man 命令行:man [-acdfFhkKtwW] [-m system] [-p string] [-C config_file] [-M path] [-P pager] [-S section_list] [section] name -M 路径,指定搜索man手册页的路径,通常这个路径由环境变量MANPATH预设,如果在命令行上指定另外的路径,则覆盖MANPATH的设定。 -P 命令,指定所使用的分页程序。 -a 显示所有的手册页,而不是只显示第一个。 -d 这个选项主要在检查时使用,如果用户加入了一个新的文件,就可以用这个选项检查是否出错,这个选项并不会列出文件内容。 -f 只显示出命令的功能而不显示其中详细的说明文件。 -p string 设定运行的预先处理程序的顺序,共有下列几项: e eqn t tbl , g grap r refer , p pic v vgrind -w 不显示手册页,只显示文档文件所在的位置。
info Linux 中的大多数软件开发工具都是来自自由软件基金会的GNU 项目,这些工具软件件的在线文档都以info 文件的形式存在。info 程序是GNU 的超文本帮助系统。 info 文档一般保存在/usr/info 目录下,使用info 命令查看info 文档。要运行info,可以在shell 提示符后输入info,也可以在GNU 的emacs 中键入Esc-x 后跟info。 info 帮助系统的初始屏幕显示了一个主题目录,你可以将光标移动到带有 * 的主题菜单上面,然后按回车键进入该主题,也可以键入m,后跟主题菜单的名称而进入该主题。例如,你可以键入m,然后再键入gcc 而进进入gcc 主题中。 具体子命令省略
HOWTO 可供用户参考的联机文档的另一种形式是HOWTO 文件,这些文件位于系统的/usr/doc/HOWTO 目录下。HOWTO 文件的文件名都有一个-HOWTO 后缀,并且都是文本文件或html格式。 每一个HOWTO 文件包含Linux 某一方面的信息,例如它支持的硬件或如何建立一个引导盘,关于glibc、gcc、Java、SMB等。 要想查看这些文件,进入/usr/doc/HOWTO 目录,使用more 命令,具体形式如下: $ cd /usr/doc/HOWTO; more topic-name-HOWTO 另外,HOWTO 文档还有其他格式的文件,例如:HTML 和PS 等,保存在/usr/doc/HOWTO/other-formats 下。
LINUX常用的辅助在线命令 • help命令 • 用于查看所有Shell命令。用户可以通过该命令寻求Shell命令的用法,只需在所查找的命令后输入help命令,就可以看到所查命令的内容了。如:$help test • Whereis • 这个程序的主要功能是寻找一个命令目标码、源码和文档所在的位置。例如,我们最常用的ls命令,它是在/bin这个目录下的。如果希望知道某个命令存在哪一个目录下,可以用whereis命令来查询,主要参数: b 只查找二进制文件 m 查找主要文件 s 查找来源 u 查找不常用的记录文件 如:$ whereis ls 执行后输出:ls: /bin/ls /usr/share/man/man1/ls.1.gz • apropos • 搜索联机文档中与匹配字符相关的条目。
LINUX FAQ • UNIX 和Linux 有什么不同? • 为什么Linux 很重要? • 我能用Linux 做什么? • 如何开始学习Linux? • 如何在应用开发中使用Linux? • Linux 上可以使用哪些编程语言? • LINUX适应性 • 。。。。。。
LINUX的不足 Linux从出现到现今只经历了短短十年的时间,但其发展速度是惊人的,这与它的开放性和优良的性能是密不可分的。不过我们应该看到,作为一个由学生开发的系统,Linux还有许多先天不足,它的设计思想过多地受到传统操作系统的约束,没有体现出当今操作系统的发展潮流,具体表现在以下几个方面: • 不是一个微内核操作系统; • 不是一个分布式操作系统; • 不是一个安全的操作系统 • 没有用户线程; • 不支持实时处理; • 代码是用C而不是C++这样的现代程序设计语言编写的 尽管Linux有这样和那样的不足,但其发展潜力不容低估,其发展的动力就是遍布全球、为数众多的Linux热心者,今后Linux将会朝着更加完善功能化方向发展。 或许,正是由于上面的不足才使得LINUX的发展没有受到更多的束缚。
LINUX应用前景 Linux 的开放性和灵活性使它得以在实验室和其它研究机构中被用于创新性技术变革的前沿,Linux 健壮和开放的灵活性意味着它在今后很多年都将处于开发战线的最前沿。 • 高性能计算领域 • 美国ASCI(加速战略计算创新)计划中的多台机器采用Linux操作系统 • 2003年11月16日发布的TOP 500中前十名的机器中第五、六名分别采用了LINUX操作系统,其处理器数量达到2816和2304。 • 国内机群系统几乎都采用LINUX操作系统 • 服务器领域 • 桌面系统 • 嵌入式系统 • 安全平台
LINUX应用——网上两条新闻 • IBM首席信息官Bob Greenberg撰写的《按需计算计划初步》的内部备忘录,由IBM公司的一名员工泄露了出来。在备忘录中,可以看出IBM有意到2005年底转向Linux桌面系统,新的Open Desktop很有可能是完全取代Windows的一套全新桌面工作环境 • 中国的Red Flag Software和日本Miracle Linux公司携手合作,目标是开发一种公共Linux平台,以便让亚洲公司轻松投入开放源代码阵营。
LINUX在中国的应用——中国 Linux 标准呼之欲出 四份规范草案已完成 Linux国家标准工作组目前已经完成对 Linux 应用编程界面 (API) 规范、 Linux 桌面操作系统技术规范、 Linux 服务器操作系统技术规范、 Linux 用户界面等四个方面规范草案的编写,并进入社会征求意见征求阶段。 Linux 国家标准工作组已经申请了 863 计划的 Linux 、 Office 关键技术标准项目,该项工作的从 Linux 标准体系研究着手,重点启动了中文特性,桌面系统技术,服务器系统技术,用户图形界面环境研究等工作。
GNU通用公共许可证——(GNU General Public License,GNU GPL) • UNIX发展带来的问题 • Unix 的正式诞生:1973 年Ritchie 等人以C 语言写出第一个正式Unix 核心 • 重要的Unix 分支:1977 年BSD 的诞生 • 百家齐鸣的Unix 版本 • GPL的诞生 • Stallman 在1984 年创立了GNU 与自由软件基金会 • 他创作了许多自由软件供大众来使用,对于其作品以自由(free)的 GNU General Public License ( GPL ) 的授权模式提供大众使用 FSF 的核心观念是:版权制度是促进社会进步的手段,版权本身不是自然权力
GNU主要规则 Stallman 先生对自由度下了这样的直接说明: • 你可以根据任何你想要的目的来运行这个Free 的程序; • 你可以在理解了这支个Free 的程序的运作之后,将他修改成你所想要的样式与功能; • 你可以将你自己修改过的Free 的程序再次的发表,以帮助你的朋友们; • 你可以将这支Free 的程序进行改良,并将改良过的程序公开发表,以造福社群。 简单的来说,GPL 授权具有几个特点: • 任何软件挂上GPL 授权之后,即为自由的软件,任何人均可取得,同时,亦可取得其原始码( Source Code ); • 取得GPL 授权之软件后,任何人均可进行修改原始码,以符合自己的喜好; • 除此之外,经过修改的Source Code 应回报给网络社会,提供大家来参考!
如何理解GPL • 大多数软件的许可证都被用来剥夺您享有和改变它的自由,但和它们不同,G N U通用公共许可证是用来保证您分享和改变免费软件的权利——保证软件对所有的用户都是免费的。这个通用公共许可证,适用于免费软件联盟的大部分软件和其他经过作者允许使用的程序(有些其他的免费软件联盟的软件由G N U库通用公共许可证所包含)。 • 这里说到的免费软件,指的是自由,而不是价格,设计通用公共许可证的目的是为了保证您有发行免费软件拷贝的权利。保证当您需要时能得到源代码,保证您能够改变软件或在其他的新的免费程序中使用其中的部分。 • 尽管GNU 通用公共许可证要求将修改过的代码发布给使用该代码的客户,但它不要求将所有修改后的代码都发布给公众(这是某些自由软件的批评者没有领会的关键一点)。的确,GNU GPL 只要求使用代码的客户可以获得修改后的代码。 • 用户自行设计的代码,如:发行版本中的某些内容,不属于此列。