很多事情,如果没有经过折腾,很多人就认为是理所当然,但实际不是!
那如果有人从Windows转到Linux,会有哪些意外的事情呢?
一
首当其冲的是,软件的安装方式。
在Windows上面,一般安装软件的方式是这样的。
假设要安装sougou输入法,一般就会去它的主页去下载。
下载完成,双击下载文件,一路next就可以了。
但是,Linux不行。
虽然也可以下载,但操作步骤不一样。
首先第一个是,搜狗只提供了Deb格式,而另外一个“大家族”-Redhat 系的RPM安装包则没有提供。
如果你使用的是Redhat、Rocky、Alama这样的Linux系统,需要自己解决安装包问题(用rpmbuild一下?)。
第二,在下载完Deb之后,还要进行配置。
为了说明这些配置的N(N>=6)个步骤,搜狗官方在下载页面之后就提供了一下“指南”,包括安装汉字输入法支持,安装fctix框架等。
相信我,如果没有一定的Linux水平,是安装不好的。
最重要的一点就是,就算你按照步骤进行了安装,也是不成功的。一方面是因为依赖问题,在“指南”里面并没有提及;另外一方面是“指南”是在Ubuntu 20.04上面,而现在的正式版本是Ubuntu 24.04LTS版本,两者有差异。
第三,还有一个Ubuntu 24.04比较特殊的地方,现在的Deb文件双击并不是执行,而是指向“解压”程序,意思是Ubuntu把deb看成了一个压缩文件,而不是安装包。
这就是Ubuntu经常被人喷“夹带私活”的原因,为了直接自家的sanp格式,连deb都不支持双击了!
那如何安装这个Deb文件呢?
需要进入terminal,手工输入命令,才能安装。
看到这里,想必大家会对“费劲”这个词语有了非常直观的感受!
当然用apt、dnf安装软件,还是很舒服的。
二
在Windows下面,如果程序的后缀名是‘exe’、‘com’、‘bat’格式,Windows就会认为是可执行文件,双击直接运行。
在Linux上面,不是通过“后缀名”来判定的,而是通过“x”这个文件属性位来判定。
所以如果想执行一个文件,哪怕这个文件是以“.sh”结尾的shell文件,也需要先用chmod加上“x”权限才可以。
三
上面提到的Ubuntu 20.04和Ubuntu 24.04的不同之处,就把我们引向了第3个“费劲”之处!
在Windows下面,软件的支持平台会注明支持的平台-“Windows 7/8/10/11”。
这种情况下,可以理解为在所有的Windows的版本上面都可以执行。
在Windows上面就是提供了这么强的“兼容性”。
很多Win7平台的电脑,在Win10上面依然可以运行。
当然,这都是付出了代价。
很多人用Windows的时候,发现一个问题,C盘空间怎么越来越小?
微软为了兼容性,在后台做了一个“小”操作,在一个神奇的WinSxs目录下面,你会发现有很多程序库的兼容版本。需要哪个,Windows就会自动下载哪个。
这就是Windows兼容性超强的一个策略。
在Ubuntu上面就不行,最典型的就是libc的版本问题。
曾经有人问过一个问题,“如果系统提示我libc的版本过高,那我能不能把Ubuntu的libc降低到提示的版本?”。
下面的回答就是,“千万别。如果你这么做了,大几率就是Ubuntu都启动不了!”
这就是Linux上面的“库”兼容问题,一方面它不能提高并行支持;另外一个方面,它不提供“二进制位置”兼容。
在Window上面,微软保证不删除旧的API函数。如果提供了新的更好的API,他就会以“func2”的命名方法来提供一个新的函数,以区别原来的“func”。更重要的一点,它会保证func的调用不会收到影响,在程序看来,内存位置都不改变。
在Linux上面则不同,它不保证不删除func,也不能保证func的内存位置不改变。
那怎么保证原来的程序运行呢?
Linux的解决方法很简单,源代码编译!编译完成,编译程序会链接到新地址就行了。
这样造成的后果就是,linux程序的兼容性特别差。如果使用apt、dnf这种打包系统,声明了依赖包,如果这些依赖包发生了版本大升级,譬如从1版本升级到2版本,很多依赖他们的程序就需要重新编译,才能运行。
四
从“搜狗输入法”这一个例子,我们谈了三个方面:
1、软件安装
2、可执行文件
3、操作系统版本兼容
窥豹一斑,我们就可以看到Windows和Linux的不同之处。
在Window上面这么容易,在linux下面怎么这么难!
这个跟我们的例子有关,输入法确实是Linux一个比较头疼的问题。
但另外一个方面,在Windows上面也有很多费劲的地方,譬如nyp插件的编译,hadoop的ssh免登录,方便的shell,这些都是Linux的强项。
总之,家家有本难念的经!
作者丨明月三千
来源丨公众号:明月三千(ID:MoonThreeThousand)
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn