您尚未登录。

#1 2018-06-01 04:19:38

renyuneyun
会员
所在地: 河南省新鄉市
注册时间: 2011-09-30
帖子: 123
个人网站

如何自定義/提前攔截perl-rpc-xml打包時對IP地址探測?

這是在打包perl-rpc-xml時碰到過的問題。
這些包的編譯檢測中,需要檢查ip地址,似乎是用來做編譯期間的本地RPC(雖然不知道目的是什麼)。而在其檢測腳本中僅檢查ipv4本地相關地址,而/etc/hosts有ipv6本地地址時失敗。
失敗的報錯長這個樣子:

#   Failed test 'RPC::XML::Server::url method (set)'
#   at t/40_server.t line 188.
#                   'http://[::1]:33145/'
#     doesn't match '(?^:http://(127[.]0[.]0[.]1|localhost|localhost[.]localdomain):33145)'                 
Use of uninitialized value in subroutine entry at t/40_server.t line 276.                                   
Not an ARRAY reference at t/40_server.t line 333.
# Looks like your test exited with 255 just after 43.

除了上游修正,解決方案是修改 /etc/hosts ,刪除其中ipv6本地迴環地址。
(更多信息見該包AUR討論,及上游issue。)

然而在部分環境下(如在託管環境下使用機器人自動打包),修改 /etc/hosts 並不現實(而且也不合理)。
所以有什麼方案能提前攔截該行爲,並使之通過麼?

我曾經試過直接修改該檢測腳本(雖然我不會perl),爲其增加[::1],但該方法並不奏效:腳本的其他部分不識別ipv6地址,會直接報錯。


知識很重要,而相當的運用能力更重要。

离线

页脚