我需要自动安装大量的Perl模块。 他们大多数在港口。 但是有些模块位于bundle中,例如www/p5-HTML-Tree
提供了HTML::Element
, HTML::TreeBuilder
等。
理想情况下,它应该是一个命令行实用程序与synax像:
install_from_ports CGI CGI::FormBuilder HTML::TreeBuilder ...
你有什么build议吗?
这是一个经过testing的解决scheme:
#!/bin/sh # Build a regex to match all the .pm files _regex="" for arg in $*; do arg=`echo ${arg} | sed -e 's|::|/|g'` if [ "X${regex}X" != "XX" ]; then regex="${regex}|" fi regex="${regex}(${arg})" done regex="%%SITE_PERL%%/(${regex}).pm" # Find the .pm files and derive the port names from them, then install using portinstall. find /usr/ports -type f -name pkg-plist -path '*/p5-*' -exec egrep -l $regex {} + | sort -u | sed -e 's|/usr/ports/||' -e 's|/pkg-plist||' | xargs portinstall
现在,这将不会检测到没有pkg-plist的端口所安装的模块,但是它们是非常less的。 在我的系统中,只有58个端口中有58个端口没有pkg-plist文件。