当前位置:   article > 正文

图文并茂解释开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别?

图文并茂解释开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别?

1. 图文并茂解释开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别?

alt

以下是上述协议的简单介绍:

  • BSD开源协议

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

  • Apache Licence 2.0

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:

需要给代码的用户一份Apache Licence
如果你修改了代码,需要再被修改的文件中说明。
在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

  • GPL

我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。

GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。

  • LGPL

LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品

  • MIT

MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的.

  • MPL

MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处:

MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口。
MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。
对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。
对源代码的定义:而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。”
MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。

2.VMware安装Rockylinux8.5教程

2.1 打开VMware新建虚拟机,选择典型并点击下一步

alt

2.2 选择稍后安装系统

alt

2.3 客户机操作系统选择Linux,版本选择centos8 64位

在这里插入图片描述

2.3 创建虚拟机名称和安装的位置

alt

2.4 选取磁盘容量大小,勾选将虚拟磁盘存储为单个文件

alt

2.6 点击完成按钮

alt

2.7 编辑该虚拟机选择镜像iso文件

alt

2.7.1 选择镜像文件并点击确定按钮

alt

2.8 开启虚拟机

alt

2.9 通过键盘方向键选择第一项

alt

2.10 选择默认语言

alt

2.11 选择时区

2.11.1 点击Tiem & Data

alt

2.11.2 选择Asia & Shanghai,并点击Done

alt

2.12 开启网络

2.12.1 点击Network & Host

alt

2.12.2 开启网络和设置主机名

alt

2.13 设置账户和密码

alt
alt
alt

2.14 等待安装完成

alt

2.15 重启系统后面就安装成功了

alt

3 Linux中总结

3.1 如何通过一个简短的关键字 【man -k process 】,例如process 获取相关的命令。

  1. man 命令使用
    1)
    获取标题包含man的命令: man -f man 等同于 whatis man
    获取标题或描述包含process的命令: man -k process
    远程获取:

2)
man的页面:即whatis man 结果中括号中的数字。 例如 man (7) - macros to format man pages 表示此man页面包含杂项.
1 通用命令
2 系统调用
3 库调用
4 设备文件
5 配置文件
6 游戏
7 杂项
8 系统管理命令
9 内核相关的

3)获取相关命令
示例: man -k ’ 关键字’ | grep ‘(1|8)’
相关用户
root@mykernel:~# man -k ’ user’ | grep ‘(1|8)’

单词
root@mykernel:~# man -k ’ word’ | grep ‘(1|8)’
wc (1) - print newline, word, and byte counts for each file

进程或处理相关命令
root@mykernel:~# man -k ’ process’ | grep -E ‘(1|8)’

文本相关的命令
root@mykernel:~# man -k ’ text’ | grep -E ‘(1|8)’

4)拿到命令后,获取man文档
man (7) - macros to format man pages 表示此man页面包含杂项. 所以获取man帮助是
man 7 man

5)man帮助的分段
Name: man页面描述的命令名
Synopsis: 语法
Configuration: 设备配置详情
Description: 程序的作用描述
Options: 命令行选项描述
Exit Status: 命令退出状态码相关
Return Value: man页面是 2和3相关的,库进行调用之后返回啥?
Errors: 错误相关
Environment: 程序可以接受哪些环境变量
Files: 程序会使用哪些配置文件
Attributes: 命令的相关属性
Versions: 程序某些库显著改变相关的版本
Notes: 一些备注
Bugs: 已知bug,提交bug
Examples: 命令使用示例
Authors: 编写,维护命令的作者们
See also: 命令相关的命令

6)语法部分
[] 可以省略
<> 必给
[[] <>] 使用括号中的内容时,选项可以省略,值不能省略。如果有多个此类形式,就需要参数。如果此形式在命令紧随其后,我们可以省略选项
一般运行一个命令,可以忽略所有[]中的内容

4 切换到/etc/目录,列出fstab文件的详细信息,详细解释fstab一行,每个或每几个字符的详细含义。

[root@rocky8 etc]# cat fstab 

#
# /etc/fstab
# Created by anaconda on Wed Jul 20 15:23:58 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rl-root     /                       xfs     defaults        0 0
UUID=c92fb8f7-65f8-4a3c-aada-c1a63d0b5c86 /boot                   xfs     defaults        0 0
/dev/mapper/rl-swap     none                    swap    defaults        0 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

第一列表示设备的名称,第二列表示该设备的挂载点,第三列是文件系统,第四列是挂载选项,第五列是dump选项(用一个数字表示),第六列(接下来的数字)表示文件系统检查选项。
第一列和第二列挂载设备的名称和目录

第三列文件系统类形: Linux file systems: ext2, ext3, jfs, reiserfs, reiser4, xfs, swap

第四列挂载选项,下面列举几个常用的:
auto: 系统自动挂载,fstab默认就是这个选项
defaults: rw, suid, dev, exec, auto, nouser, and async.
noauto 开机不自动挂载
nouser 只有超级用户可以挂载
ro 按只读权限挂载
rw 按可读可写权限挂载
user 任何用户都可以挂载
请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto

第五列dump选项,设置是否让备份程序dump备份文件系统,0为忽略,1为备份,如果上次用dump备份,将显示备份至今的天数。

第六列fsck选项,告诉fsck程序以什么顺序检查文件系统,为0就表示不检查,(/)分区永远都是1,其它的分区只能从2开始,当数字相同就同时检查(但不能有两1),

5 简要说明FHS结构

/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
/var: variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
  • 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
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

6 用自己的理解总结 文件管理,用户管理,组用户,权限管理相关的命令。

  • touch
    创建文件,用法:touch filename ,touch后面跟文件名称

  • rm
    删除文件,常用选项为 -f -r,强制删除和递归删除

  • rmdir
    删除空目录,参数为p

  • cat head less more

    • cat
      查看文件内容,常用选项为-b,输出非空行编号。-n,对所有输出行编号

    • head
      功能:从文本文件的头部开始查看,head命令用于查看一个文本文件的开头部分。

      用法:head [选项]… [文件]…

      -n 制定您想要显示文本多少行

      -c number 显示多少个字节

    • more
      主要功能:主要用于读取大文件,以百分比的形式查看日志,类似cat,不过会以一页一页的显示方便使用者逐页阅读,按空白键(space)就往下一页显示,按b键(back)就会往回一页显示,按回车往下一行,而且还有搜寻字符串的功能(与vi相似),使用中的说明文件,请按h。退出按q

    • less
      功能:less命令可以对文件或其他输出进行分页显示,与more命令相似。退出按q。

  • useradd userdel usermod

    • useradd 添加用户
    • userdel 删除用户
    • usermod 修改用户
  • groupadd groupdel groupmod

    • groupadd 添加用户组
    • groupdel 删除用户组
    • groupmod 修改用户组
  • chmod chown
    chown用法:
    用来更改某个目录或文件的用户名和用户组。
    例子:chown root:root filename
    chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径)
    chmod用法:
    用来修改某个目录或文件的访问权限。
    例子:chmod -R 777 filename

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/169214
推荐阅读
相关标签
  

闽ICP备14008679号