AMH 社区首页
AMH社区 - 开放自由有价值的社区
[求助帖] 关于AMH5.0系统版本机制检测的反馈 |
|
---|---|
jump |
jump 发表于 2014-09-13 17:33:54
AMH5.0系统版本检测主要在2个地方:
amh.sh文件: egrep -i "debian" /etc/issue /proc/version >/dev/null && SysName='Debian'; amh-base文件:egrep -i "ubuntu" /etc/issue /proc/version >/dev/null && SysName='Ubuntu'; whereis -b yum | grep '/yum' >/dev/null && SysName='CentOS'; egrep -i "red hat|redhat" /etc/issue /proc/version >/dev/null && SysName='RedHat'; egrep -i "centos" /etc/issue /proc/version >/dev/null && SysName='CentOS'; [ "$SysName" == '' ] && echo '[Error] Your system is not supported install AMH' && exit; function amh_is_redhat() 检测系统版本主要读取了/etc/issue和/proc/version文件,正常情况是没有问题的。但对于vps来说,采取不同虚拟化手段可能存在错误判断的可能{ # egrep -i "centos" /etc/issue || egrep -i "red hat|redhat" /proc/version; whereis -b yum | grep '/yum' >/dev/null; return $?; } /etc/issue读取的是本地文件信息,一般能准确判断系统版本 /proc/version读取的是内存信息,是内核加载时创建的,读取的是内核系统的版本。正常内核版本和系统版本一致,但在vps中,全虚拟化(如KVM)可以虚拟整个内核,读取信息与本地一致;而半虚拟化(如OpenVZ),不能虚拟内核,读取的就是母鸡的内核信息了。 比如在OpenVZ下的测试: Centos 7 x86_64 母鸡内核是Red Hat,在centos下不影响安装,但在debian和ubuntu下,amh.sh文件就会判断为redhat而使用yum命令,导致安装失败。而对于OpenVZ的vps,很多主机厂商母鸡都是用的Red Hat系统,于是就会存在系统版本误判问题了。[root /]# cat /proc/version Linux version 2.6.32-042stab090.5 (root@kbuild-rh6-x64) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Sat Jun 21 00:15:09 MSK 2014 Exit code: 0 [root /]# cat /etc/issue \S Kernel \r on an \m Exit code: 0 [root /]# Fedora 20 x86_64 [root /]# cat /etc/issue Fedora release 20 (Heisenbug) Kernel \r on an \m (\l) Exit code: 0 [root /]# cat /proc/version Linux version 2.6.32-042stab090.5 (root@kbuild-rh6-x64) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Sat Jun 21 00:15:09 MSK 2014 Exit code: 0 [root /]# Ubuntu 14.04 x86 [root /]# cat /etc/issue Ubuntu 14.04 LTS \n \l Exit code: 0 [root /]# cat /proc/version Linux version 2.6.32-042stab090.5 (root@kbuild-rh6-x64) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Sat Jun 21 00:15:09 MSK 2014 Exit code: 0 [root /]# [root /]# uname -a Linux tiNy 2.6.32-042stab090.5 #1 SMP Sat Jun 21 00:15:09 MSK 2014 i686 i686 i686 GNU/Linux Exit code: 0 debian 6 x86 [root /]# cat /etc/issue Debian GNU/Linux 6.0 \n \l Exit code: 0 [root /]# uname -a Linux tiNy 2.6.32-042stab090.5 #1 SMP Sat Jun 21 00:15:09 MSK 2014 i686 GNU/Linux Exit code: 0 [root /]# cat /proc/version Linux version 2.6.32-042stab090.5 (root@kbuild-rh6-x64) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Sat Jun 21 00:15:09 MSK 2014 Exit code: 0 [root /]# 建议检测系统版本时优先读取/etc/issue信息,比如: function amh_is_redhat() 或者直接判断yum或者apt-get是否存在来区分安装方式{ egrep -i "centos" /etc/issue || ( (egrep -i "red hat|redhat" /proc/version) && !(egrep -i "debian" /etc/issue) && !(egrep -i "ubuntu" /etc/issue)); return $?; } 另外,在debian最小系统上测试安装时,也发现一些包没有预先安装而导致安装失败iptables ip -> iproute cmake free -> procps 希望 @amysql 能改善安装兼容性。对于AMH 5.0的模块灵活性还是十分喜欢的,AMH 5.0确实蕴含着无数可能。
点赞,加油! (0分)
2014-09-13 17:33:54 1
|
x2012qq |
这个可以有 !
回复
2014-09-13 19:06:32 2
|
amysql |
谢谢楼主反馈。
amh_is_redhat的判断是现在是没什么问题。 主要是amh.sh的判断上。 楼主可以把这两行 egrep -i "red hat|redhat" /etc/issue /proc/version >/dev/null && SysName='RedHat'; egrep -i "centos" /etc/issue /proc/version >/dev/null && SysName='CentOS'; 删除应该就可以安装了。
回复
2014-09-13 23:05:55 3
AMH面板 - 好用高效低占用、安全可靠极稳定 |