                        GNU通用公共许可证(GPL)


    下面的正文是自由软件基金会GNU通用公共许可证原始文档的副本。Linux操
作系统以及与它有关的大量软件是在GPL的推动下开发和发布的。
    你将看到：如果你打算为了发布的目的修改，更新或改进任何受通用公共许
可证约束的软件，你所修改的软件软件同样必须受到GNU通用许可证条款的约束。

                           GNU通用公共许可证
                             1991.6 第二版

    版权所有（C）1989，1991  Free  Software  foundation, Inc.
             675  Mass  Ave,  Cambridge,  MA02139,  USA
    允许每个人复制和发布这一许可证原始文档的副本，但绝对不允许对它进行
任何修改。

                                 序言

    大多数软件许可证决意剥夺你的共享和修改软件的自由。对比之下，GNU通
用公共许可证力图保证你的共享和修改自由软件的自由。——保证自由软件对所
有用户是自由的。GPL适用于大多数自由软件基金会的软件，以及由使用这些软
件而承担义务的作者所开发的软件。（自由软件基金会的其他一些软件受GNU库
通用许可证的保护）。你也可以将它用到你的程序中。
    当我们谈到自由软件（free software）时，我们指的是自由而不是价格。
我们的GNU通用公共许可证决意保证你有发布自由软件的自由（如果你愿意，你
可以对此项服务收取一定的费用）；保证你能收到源程序或者在你需要时能得到
它；保证你能修改软件或将它的一部分用于新的自由软件；而且还保证你知道你
能做这些事情。
    为了保护你的权利，我们需要作出规定：禁止任何人不承认你的权利，或者
要求你放弃这些权利。如果你修改了自由软件或者发布了软件的副本，这些规定
就转化为你的责任。
    例如，如果你发布这样一个程序的副本，不管是收费的还是免费的，你必须
将你具有的一切权利给予你的接受者；你必须保证他们能收到或得到源程序；并
且将这些条款给他们看，使他们知道他们有这样的权利。
    我们采取两项措施来保护你的权利。
    （1）给软件以版权保护。
    （2）给你提供许可证。它给你复制，发布和修改这些软件的法律许可。
    同样，为了保护每个作者和我们自己，我们需要清楚地让每个人明白，自由
软件没有担保（no warranty）。如果由于其他某个人修改了软件，并继续加以
传播。我们需要它的接受者明白：他们所得到的并不是原来的自由软件。由其他
人引入的任何问题，不应损害原作者的声誉。
    最后，任何自由软件不断受到软件专利的威胁。我们希望避免这样的风险，
自由软件的再发布者以个人名义获得专利许可证。事实上，将软件变为私有。为
防止这一点，我们必须明确：任何专利必须以允许每个人自由使用为前提，否则
就不准许有专利。
    下面是有关复制，发布和修改的确切的条款和条件。


                           GNU通用公共许可证
                   有关复制，发布和修改的条款和条件

0.  此许可证适用于任何包含版权所有者声明的程序和其他作品，版权所有者在
声明中明确说明程序和作品可以在GPL条款的约束下发布。下面提到的“程序”
指的是任何这样的程序或作品。而“基于程序的作品”指的是程序或者任何受版
权法约束的衍生作品。也就是说包含程序或程序的一部分的作品。可以是原封不
动的，或经过修改的和／或翻译成其他语言的（程序）。在下文中，翻译包含在
修改的条款中。每个许可证接受人（licensee）用你来称呼。
    许可证条款不适用于复制，发布和修改以外的活动。这些活动超出这些条款
的范围。运行程序的活动不受条款的限止。仅当程序的输出构成基于程序作品的
内容时，这一条款才适用（如果只运行程序就无关）。是否普遍适用取决于程序
具体用来做什么。

1.  只要你在每一副本上明显和恰当地出版版权声明和不承担担保的声明，保持
此许可证的声明和没有担保的声明完整无损，并和程序一起给每个其他的程序接
受者一份许可证的副本，你就可以用任何媒体复制和发布你收到的原始的程序的
源代码。
    你可以为转让副本的实际行动收取一定费用。你也有权选择提供担保以换取
一定的费用。

2.  你可以修改程序的一个或几个副本或程序的任何部分，以此形成基于程序的
作品。只要你同时满足下面的所有条件，你就可以按前面第一款的要求复制和发
布这一经过修改的程序或作品。
    a） 你必须在修改的文件中附有明确的说明：你修改了这一文件及具体的修
改日期。
    b） 你必须使你发布或出版的作品（它包含程序的全部或一部分，或包含由
程序的全部或部分衍生的作品）允许第三方作为整体按许可证条款免费使用。
    c） 如果修改的程序在运行时以交互方式读取命令，你必须使它在开始进入
常规的交互使用方式时打印或显示声明：包括适当的版权声明和没有担保的声明
（或者你提供担保的声明）；用户可以按此许可证条款重新发布程序的说明；并
告诉用户如何看到这一许可证的副本。（例外的情况：如果原始程序以交互方式
工作，它并不打印这样的声明，你的基于程序的作品也就不用打印声明）。
    这些要求适用于修改了的作品的整体。如果能够确定作品的一部分并非程序
的衍生产品，可以合理地认为这部分是独立的，是不同的作品。当你将它作为独
立作品发布时，它不受此许可证和它的条款的约束。但是当你将这部分作为基于
程序的作品的一部分发布时，作为整体它将受到许可证条款约束。准予其他许可
证持有人的使用范围扩大到整个产品。也就是每个部分，不管它是谁写的。
    因此，本条款的意图不在于索取权利；或剥夺全部由你写成的作品的权利。
而是履行权利来控制基于程序的集体作品或衍生作品的发布。
    此外，将与程序无关的作品和该程序或基于程序的作品一起放在存贮体或发
布媒体的同一卷上，并不导致将其他作品置于此许可证的约束范围之内。

3.  你可以以目标码或可执行形式复制或发布程序（或符合第2款的基于程序的
作品)，只要你遵守前面的第1，2款，并同时满足下列3条中的1条。
    a）在通常用作软件交换的媒体上，和目标码一起附有机器可读的完整的源
码。这些源码的发布应符合上面第1，2款的要求。或者
    b）在通常用作软件交换的媒体上，和目标码一起，附有给第三方提供相应
的机器可读的源码的书面报价。有效期不少于3年，费用不超过实际完成源程序
发布的实际成本。源码的发布应符合上面的第1，2款的要求。或者
    c）和目标码一起，附有你收到的发布源码的报价信息。（这一条款只适用
于非商业性发布，而且你只收到程序的目标码或可执行代码和按b）款要求提供
的报价）。
    作品的源码指的是对作品进行修改最优先择取的形式。对可执行的作品讲，
完整的源码包括：所有模块的所有源程序，加上有关的接口的定义，加上控制可
执行作品的安装和编译的script。作为特殊例外，发布的源码不必包含任何常规
发布的供可执行代码在上面运行的操作系统的主要组成部分（如编译程序，内核
等）。除非这些组成部分和可执行作品结合在一起。
    如果采用提供对指定地点的访问和复制的方式发布可执行码或目标码，那么
，提供对同一地点的访问和复制源码可以算作源码的发布，即使第三方不强求与
目标码一起复制源码。

4.  除非你明确按许可证提出的要求去做，否则你不能复制，修改，转发许可证
和发布程序。任何试图用其他方式复制，修改，转发许可证和发布程序是无效的
。而且将自动结束许可证赋予你的权利。然而，对那些从你那里按许可证条款得
到副本和权利的人们，只要他们继续全面履行条款，许可证赋予他们的权利仍然
有效。

5.  你没有在许可证上签字，因而你没有必要一定接受这一许可证。然而，没有
任何其他东西赋予你修改和发布程序及其衍生作品的权利。如果你不接受许可证
，这些行为是法律禁止的。因此，如果你修改或发布程序（或任何基于程序的作
品），你就表明你接受这一许可证以及它的所有有关复制，发布和修改程序或基
于程序的作品的条款和条件。

6.  每当你重新发布程序（或任何基于程序的作品）时，接受者自动从原始许可
证颁发者那里接到受这些条款和条件支配的复制，发布或修改程序的许可证。你
不可以对接受者履行这里赋予他们的权利强加其他限制。你也没有强求第三方履
行许可证条款的义务。

7.  如果由于法院判决或违反专利的指控或任何其他原因（不限于专利问题）的
结果，强加于你的条件（不管是法院判决，协议或其他）和许可证的条件有冲突
。他们也不能用许可证条款为你开脱。在你不能同时满足本许可证规定的义务及
其他相关的义务时，作为结果，你可以根本不发布程序。例如，如果某一专利许
可证不允许所有那些直接或间接从你那里接受副本的人们在不付专利费的情况下
重新发布程序，唯一能同时满足两方面要求的办法是停止发布程序。
    如果本条款的任何部分在特定的环境下无效或无法实施，就使用条款的其余
部分。并将条款作为整体用于其他环境。
    本条款的目的不在于引诱你侵犯专利或其他财产权的要求，或争论这种要求
的有效性。本条款的主要目的在于保护自由软件发布系统的完整性。它是通过通
用公共许可证的应用来实现的。许多人坚持应用这一系统，已经为通过这一系统
发布大量自由软件作出慷慨的供献。作者／捐献者有权决定他／她是否通过任何
其他系统发布软件。许可证持有人不能强制这种选择。

    本节的目的在于明确说明许可证其余部分可能产生的结果。

8.  如果由于专利或者由于有版权的接口问题使程序在某些国家的发布和使用受
到限止，将此程序置于许可证约束下的原始版权拥有者可以增加限止发布地区的
条款，将这些国家明确排除在外。并在这些国家以外的地区发布程序。在这种情
况下，许可证包含的限止条款和许可证正文一样有效。

9.  自由软件基金会可能随时出版通用公共许可证的修改版或新版。新版和当前
的版本在原则上保持一致，但在提到新问题时或有关事项时，在细节上可能出现
差别。
    每一版本都有不同的版本号。如果程序指定适用于它的许可证版本号以及“
任何更新的版本”。你有权选择遵循指定的版本或自由软件基金会以后出版的新
版本，如果程序未指定许可证版本，你可选择自由软件基金会已经出版的任何版
本。

10.  如果你愿意将程序的一部分结合到其他自由程序中，而它们的发布条件不
同。写信给作者，要求准予使用。如果是自由软件基金会加以版权保护的软件，
写信给自由软件基金会。我们有时会作为例外的情况处理。我们的决定受两个主
要目标的指导。这两个主要目标是：我们的自由软件的衍生作品继续保持自由状
态。以及从整体上促进软件的共享和重复利用。


                               没有担保

11.  由于程序准予免费使用，在适用法准许的范围内，对程序没有担保。除非
另有书面说明，版权所有者和／或其他提供程序的人们“一样”不提供任何类型
的担保。不论是明确的，还是隐含的。包括但不限于隐含的适销和适合特定用途
的保证。全部的风险，如程序的质量和性能问题都由你来承担。如果程序出现缺
陷，你承担所有必要的服务，修复和改正的费用。

12.  除非适用法或书面协议的要求，在任何情况下，任何版权所有者或任何按
许可证条款修改和发布程序的人们都不对你的损失负有任何责任。包括由于使用
或不能使用程序引起的任何一般的，特殊的，偶然发生的或重大的损失（包括但
不限于数据的损失，或者数据变得不精确，或者你或第三方的持续的损失，或者
程序不能和其他程序协调运行等）。即使版权所有者和其他人提到这种损失的可
能性也不例外。


                           最后的条款和条件
                     如何将这些条款用到你的新程序

    如果你开发了新程序，而且你需要它得到公众最大限度的利用。要做到这一
点的最好办法是将它变为自由软件。使得每个人都能在遵守条款的基础上对它进
行修改和重新发布。
    为了做到这一点，给程序附上下列声明。最安全的方式是将它放在每个源程
序的开头，以便最有效地传递拒绝担保的信息。每个文件至少应有“版权所有”
行以及在什么地方能看到声明全文的说明。

          <用一行空间给出程序的名称和它用来做什么的简单说明>
          版权所有（C）         19XX            <作者姓名>
    这一程序是自由软件，你可以遵照自由软件基金会出版的GNU通用公共许可
证条款来修改和重新发布这一程序。或者用许可证的第二版，或者（根据你的选
择）用任何更新的版本。
    发布这一程序的目的是希望它有用，但没有任何担保。甚至没有适合特定目
的的隐含的担保。更详细的情况请参阅GNU通用公共许可证。
    你应该已经和程序一起收到一份GNU通用公共许可证的副本。如果还没有，
写信给：
    The Free Software Foundation, Inc.,  675  Mass Ave,  Cambridge,
    MA02139,  USA
    还应加上如何和你保持联系的信息。

    如果程序以交互方式进行工作，当它开始进入交互方式工作时，使它输出类
似下面的简短声明：
    Gnomovision   第69版，  版权所有（C）  19XX，   作者姓名，
    Gnomovision绝对没有担保。 要知道详细情况，请输入‘show w’。
    这是自由软件，欢迎你遵守一定的条件重新发布它，要知道详细情况，
    请输入‘show c’。
    假设的命令‘show w’和‘show c’应显示通用公共许可证的相应条款。当
然，你使用的命令名称可以不同于‘show w’和‘show c’。根据你的程序的具
体情况，也可以用菜单或鼠标选项来显示这些条款。

    如果需要，你应该取得你的上司（如果你是程序员）或你的学校签署放弃程
序版权的声明。下面只是一个例子，你应该改变相应的名称：
         Yoyodyne公司以此方式放弃James Harker
         所写的 Gnomovision程序的全部版权利益。
         <Ty coon签名>，1989.4.1
         Ty coon付总裁

    这一许可证不允许你将程序并入专用程序。如果你的程序是一个子程序库。
你可能会认为用库的方式和专用应用程序连接更有用。如果这是你想做的事，使
用GNU库通用公共许可证代替本许可证。

