Como eu posso instalar automaticamente os módulos Perl das portas no FreeBSD?

1

Eu preciso automatizar a instalação de vários módulos Perl. A maioria deles está presente nos portos. Mas alguns módulos estão localizados em pacotes, por exemplo www/p5-HTML-Tree prvides HTML::Element , HTML::TreeBuilder , etc.

Idealmente, deve ser um utilitário de linha de comando com a sintaxe como:

install_from_ports CGI CGI::FormBuilder HTML::TreeBuilder ...

Você tem alguma sugestão?

    
por Eugene Yarmash 14.01.2011 / 21:35

1 resposta

2

Aqui está uma solução pouco testada:

#!/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

Agora, isso não detectará módulos instalados por portas que não possuem um pkg-plist, mas eles são muito minoritários. Há apenas 58 das 4188 portas p5- * no meu sistema que não possuem arquivos pkg-plist.

    
por 20.01.2011 / 22:57

Tags