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

1)GPL : GNU General Public License
自由软件基金会: Free Software Foundation
允许用户任意复制、传递、修改及再发布
基于自由软件修改再次发布的软件,仍需遵守 GPL。
GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。
2)LGPL : Lesser General Public License , LGPL 相对于 GPL 较为宽松,允许不公开全部源代码。
LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
3) BSD 是"Berkeley Software Distribution"的缩写,意思是"伯克利软件发行版"。
是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
1. 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
2. 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
3. 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
4)MIT MIT源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称X11协议。与BSD类似,但是比BSD协议更加宽松,是目前最少限制的协议。这个协议唯一的条件就是在修改后的代码或者发行包包含原作者的许可信息。适用商业软件。使用MIT的软件项目有:jquery、Node.js。
5)Mozilla MPL (Mozilla Public License 1.1) MPL协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,它要求基于这种软件的修改无偿贡献版权给该软件。这样,围绕该软件的所有代码的版权都集中在发起开发人的手中。但MPL是允许修改,无偿使用得。MPL软件对链接没有要求。
6)Apache
Apache License(Apache许可证),是Apache软件基金会发布的一个自由软件许可证。
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和最终原作者的著作权,同样允许源代码修改和再发布。但是也需要遵循以下条件:
需要给代码的用户一份Apache Licence。
如果修改了代码,需要在被修改的文件中说明。
在衍生的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
如果在发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但是不可以表现为对Apache Licence构成更改。
Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足并作为开源或商业产品发布/销售。
使用这个协议的好处是:
- 永久权利 一旦被授权,永久拥有。
- 全球范围的权利 在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
- 授权免费 无版税, 前期、后期均无任何费用。
- 授权无排他性 任何人都可以获得授权
- 授权不可撤消 一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码
三、通过计算机基础和帮助的学习,完成学习ifconfig命令的使用。


在linux中我们可以使用ifconfig命令查看网卡配置与网络状态等信息,interface是可选项,不加此选项则显示系统中所有网卡的信息。如果添加此选项,则显示指定网卡的信息。
如上所示,使用ifconfig命令获取到的主要信息有:
1、主机被检测到的网卡有ens33,UP表示“接口已启用”,RUNNING表示“接口在工作中”,BROADCAST表示“主机支持广播”,MULTICAST表示“主机支持多播”,mtu 1500表示“最大传输单元 1500字节”
inet 192.168.111.129 netmask 255.255.255.0 broadcast 192.168.111.255
解释:inet :网卡的IP地址;netmask :网络掩码;broadcast :广播地址。
ether 00:0c:29:ce:2b:02 txqueuelen 1000 (Ethernet)
解释:连接类型:Ethernet (以太网)或者HWaddr (此网卡的硬件mac地址);txqueuelen (网卡设置的传送队列长度)
RX packets 16695 bytes 23930233 (22.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
解释:接收时,正确的数据包数16695;接收的数据量(22.8 MiB);接收时,产生错误的数据包数为0,丢弃的数据包数为0;overruns 表示接收时,由于速度过快而丢失的数据包数为0;RX frame 表示接收时,发生frame错误而丢失的数据包数为0。
ifconfig不仅可以查看网卡配置与网络状态,还可以进行网络配置,常见用法如下:
ifconfig ens160 down 关闭ens160网卡
ifconfig ens160 up 开启ens160网卡
ifconfig ens160 192.168.1.100 配置ip地址
ifconfig ens160 192.168.1.100 netmask 255.255.255.0 配置IP地址和子网掩码
ifconfig ens160 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 配置IP地址、子网掩码和广播地址
ifconfig ens60 del 192.168.1.100 删除ip地址
ifconfig eth0 arp|-arp 启用或禁用arp协议
另外,用ifconfig命令配置的网卡信息,在网卡重启或者机器重启后,所做的配置就不存在了。如果需要网络配置永久生效,需要修改相应的配置文件。
使用find命令过滤即可找到对应的网卡配置文件:
[16:33:37 root@wangggg~]#find /etc/ -name *ens33*
/etc/sysconfig/network-scripts/ifcfg-ens33
四、总结linux FHS结构。
linux的文件系统分层结构FileSystem Hierarchy Standdard(简称FHS)。
定义了在Linux系统中的目录结构和目录内容,即让用户了解到已安装软件通常放置哪个目录下。类似于Windows操作系统中C盘的文件目录,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 :第三方应用程序的安装位置
/tmp :临时文件存储位置
/usr:unversal 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相关的安全策略等信息的存储位置
浙公网安备 33010602011771号