我使用下面的代码在我的服务器上打开端口80:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
但是我收到了这个错误:
Traceback (most recent call last):
File "/bin/firewall-cmd", line 24, in <module>
from gi.repository import GObject
File "/usr/lib64/python2.7/site-packages/gi/__init__.py", line 37, in <module>
from . import _gi ImportError: /lib64/libgirepository-1.0.so.1:
undefined symbol: g_type_class_adjust_private_offset
请帮我修理一下。谢谢!
答案 0 :(得分:0)
我在一些未安装firewalld的Cento 7,OpenVZ VM上遇到了同样的问题。简单地安装firewalld RPM软件包并不起作用,因为在启动时,firewalld会说:
# /usr/sbin/firewalld --nofork --nopid
Traceback (most recent call last):
File "/usr/sbin/firewalld", line 132, in <module>
from firewall.server import server
File "/usr/lib/python2.7/site-packages/firewall/server/server.py", line 32, in <module>
from gi.repository import GObject, GLib
File "/usr/lib64/python2.7/site-packages/gi/__init__.py", line 37, in <module>
from . import _gi
ImportError: /lib64/libgirepository-1.0.so.1: undefined symbol: g_type_class_adjust_private_offset
经过大量的讨论,我发现(截至2016年6月)一个简单的更新&#39;足以让一切顺利。我不知道哪些软件包实际上是罪魁祸首,但让所有内容更新可能都是件好事。
答案 1 :(得分:0)
好的,快速解决方法是编辑文件“/ bin / firewall-cmd”(或制作该文件的副本然后编辑副本)然后从“#!/ usr / bin / python -Es”更改第一行“to”#!/ usr / bin / python2 -Es“。在我的系统上,这个问题似乎是由某人安装python3然后修改“/ bin / python”的符号链接指向python3而不是2引起的。警告:很多内部Linux脚本需要python2。任何需要python3的新脚本都应该在第1行的shebang(sharp-bang hack)中声明这个。顺便说一句,我也看到python3打破了一些与yum相关的操作。
答案 2 :(得分:0)
我已修复错误。我将python3链接到/ usr / bin / python中的python文件,而命令firewall-cmd使用python2。因此,我在下面使用了命令:
sudo ln -sfn /usr/bin/python2.7 /usr/bin/python
替换您的python版本。 希望对您有帮助。