Como alterar a localização do Perl para / usr / bin / env

1

Estou trabalhando em uma máquina Debian 6 mais antiga. Ele tinha uma versão antiga do Perl e estava causando alguns autotestes para falhar com "Test :: More version 0.96 required" . Eu baixei o último Perl 5.22.1, construí-lo a partir de fontes e coloquei em /opt/perl/ .

Eu tenho um script que usa Perl e seu preâmbulo é:

#!/usr/bin/env perl

No entanto, quando executo o script, ele está usando o Perl antigo em vez do novo Perl. Isso é esperado porque /usr/bin/env não sabe sobre Perl (ou não acredito).

Como posso saber que env é Perl em /opt/perl/ e não /usr/bin/ ? Se possível, eu gostaria que fosse uma configuração de máquina (isto é, se aplica a todos), e não uma configuração de usuário (ou seja, se aplica apenas a mim).

Aqui está a página de manual para env(1) . Não há muito a fazer, e não acredito que discuta o registro de uma nova versão de um programa para um intérprete. Não existem páginas man para env(7) (miscelânea) ou env(8) (administração).

ENV(1)                           User Commands                          ENV(1)

NAME
       env - run a program in a modified environment

SYNOPSIS
       env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

DESCRIPTION
       Set each NAME to VALUE in the environment and run COMMAND.

       -i, --ignore-environment
              start with an empty environment

       -0, --null
              end each output line with 0 byte rather than newline

       -u, --unset=NAME
              remove variable from the environment

       --help display this help and exit

       --version
              output version information and exit

       A mere - implies -i.  If no COMMAND, print the resulting environment.

AUTHOR
       Written by Richard Mlynarik and David MacKenzie.

...
    
por jww 30.03.2016 / 18:15

1 resposta

2

Assim como o shell, env usa $PATH para encontrar o arquivo executável para um nome de comando simples. (Ao contrário do shell, ele não usa aliases, funções e builtins primeiro.) Eu não tenho o Debian em mãos, mas no meu Ubuntu 14.04 (que não deve ser muito diferente) o padrão / empacotado perl está em /usr/bin , e um usuário de teste sem personalização recebe uma configuração $PATH de

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 

mais o .profile padrão verifica se $HOME/bin existe e, se for, adiciona na frente.

/usr/local/* é destinado precisamente para substituições "específicas ao meu sistema" e ~username/bin para substituições "somente deste usuário", portanto, um link simbólico em qualquer um deles deve funcionar. Alternativamente, você pode colocar /opt/perl (ou talvez /opt/perl/bin se estiver estruturado dessa forma) no seu $PATH antes de /usr/bin .

    
por 30.03.2016 / 20:39

Tags