Как я могу установить специализированные среды для различных приложений Perl?

Что-то вроде этого будет работать:

foreach ( Process process in Process.GetProcessesByName( "winword" ) )
{
    process.Kill();
    process.WaitForExit();
}
21
задан brian d foy 16 September 2009 в 15:11
поделиться

6 ответов

Существует инструмент под названием local :: lib , который завершает всю работу за вас, как и virtualenv . Он будет:

  • Настроить @INC в процессе, в котором он используется.
  • Установить PERL5LIB и другие подобные вещи для дочерних процессов.
  • Установить правильные переменные на убедить CPAN, MakeMaker , Module :: Build и т. д. установить библиотеки и сохранить конфигурацию в локальном каталоге.
  • Задайте PATH , чтобы установить двоичные файлы можно найти.
  • Печатать переменные среды в стандартный вывод при использовании из командной строки, чтобы вы могли поместить eval $ (perl -Mlocal :: lib) в вашем .profile , а затем в основном забываете об этом.
21
ответ дан 29 November 2019 в 21:28
поделиться

Я не уверен, совпадает ли это с той virtualenv , о которой вы говорите, но поищите специальную переменную @INC на странице руководства perlvar .

1
ответ дан 29 November 2019 в 21:28
поделиться

Я запускаю оболочку CPAN (cpan) и устанавливаю из нее свой собственный Perl 5.10 (Я считаю, что команда устанавливает perl-5.10). Это потребует различной конфигурации настройки; Я обязательно укажу пути в / usr / local (или другое место установки, отличное от значения по умолчанию).

Затем я помещаю его результирующее местоположение в свой исполняемый файл $ PATH перед стандартным perl и использую его оболочку CPAN для установки модулей, которые мне нужны (обычно много). Все мои скрипты Perl начинаются со строки

#!/usr/bin/env perl

Никогда не было проблем с этим подходом.

0
ответ дан 29 November 2019 в 21:28
поделиться

Программы могут изменять каталоги, которые они проверяют на наличие библиотек, с помощью используйте lib . Этот каталог lib может быть относительно текущего каталога. Библиотеки из этих каталогов будут использоваться перед системными библиотеками, поскольку они помещаются в начало массива @INC.

Я считаю, что cpan также может устанавливать библиотеки в определенные каталоги. Конечно, для установки cpan использует сайт CPAN , так что это не лучший вариант.

1
ответ дан 29 November 2019 в 21:28
поделиться

Для этой цели я использовал schroot . Он немного тяжелее, чем virtualenv, но вы можете быть уверены, что утечки в нем не должно быть.

Schroot управляет средой chroot за вас, но монтирует ваш домашний каталог в chroot, чтобы он выглядел как обычный сеанс оболочки, просто используя двоичные файлы и библиотеки в chroot.

Я думаю, что это может быть только debian / ubuntu.

После настройки schroot ваш сценарий выше будет выглядеть как

schroot -c my_perl_dev
wget ...

] См. http://www.debian-administration.org/articles/566 , где есть интересная статья об этом

2
ответ дан 29 November 2019 в 21:28
поделиться

Похоже, вам просто нужно использовать конфигурацию INSTALL_BASE для Makefile.PL (или параметр --install_base для Build.PL)? Что именно вам нужно от этого решения? Похоже, вам просто нужно поставить установленный модуль в нужное место. Вы представили свою проблему как Проблема XY , указав, что, по вашему мнению, является решением, вместо того, чтобы позволить нам помочь вам с вашей задачей.

См. Как мне сохранить свой собственный модуль / каталог библиотеки? , например, в perlfaq8.

Если вы загружаете модули из CPAN, последняя команда cpan App :: Cpan ) имеет ] -j переключатель, позволяющий выбрать альтернативные файлы конфигурации CPAN.pm. В этих файлах конфигурации вы можете установить параметры CPAN.pm для установки где угодно.

Судя по вашему пояснению, похоже, что local :: lib может сработать для вас в отдельных простых случаях, но я делаю это для промышленных целей. развертывания, в которых я настраиваю индивидуальные частные CPAN для каждого приложения и устанавливаю непосредственно из этих настраиваемых CPAN. См., Например, мой модуль MyCPAN :: App :: DPAN . Исходя из этого, я использую пользовательские конфигурации CPAN.pm, которые анализируют их среду и устанавливают правильные значения для каждого приложения, которое может установить все в каталог только для этого приложения.

Вы также можете рассмотреть возможность распространения вашего приложения как Task ::. Вы устанавливаете его, как любой другой модуль Perl, но зависимости используют ту же настройку (например, INSTALL_BASE).

Судя по вашему разъяснению, похоже, что local :: lib может работать для вас в отдельных простых случаях, но я делаю это для промышленных мощностей, когда я настраиваю индивидуальные частные CPAN для каждого приложения и устанавливаю непосредственно из этих пользовательских CPAN. См., Например, мой модуль MyCPAN :: App :: DPAN . Исходя из этого, я использую пользовательские конфигурации CPAN.pm, которые анализируют их среду и устанавливают правильные значения для каждого приложения, которое может установить все в каталог только для этого приложения.

Вы также можете рассмотреть возможность распространения вашего приложения как Task ::. Вы устанавливаете его, как любой другой модуль Perl, но зависимости используют ту же настройку (например, INSTALL_BASE).

Судя по вашему разъяснению, похоже, что local :: lib может работать для вас в простых простых случаях, но я делаю это для промышленных мощностей, где я настраиваю собственные частные CPAN для каждого приложения и устанавливаю непосредственно из этих пользовательских CPAN. См., Например, мой модуль MyCPAN :: App :: DPAN . Исходя из этого, я использую пользовательские конфигурации CPAN.pm, которые анализируют их среду и устанавливают правильные значения для каждого приложения, которое может установить все в каталог только для этого приложения.

Вы также можете рассмотреть возможность распространения вашего приложения как Task ::. Вы устанавливаете его, как любой другой модуль Perl, но зависимости используют ту же настройку (например, INSTALL_BASE).

частные CPAN для каждого приложения и устанавливаются непосредственно из этих пользовательских CPAN. См., Например, мой модуль MyCPAN :: App :: DPAN . Исходя из этого, я использую собственные конфигурации CPAN.pm, которые анализируют их среду и устанавливают правильные значения для каждого приложения, которое может установить все в каталог только для этого приложения.

Вы также можете рассмотреть возможность распространения вашего приложения как Task ::. Вы устанавливаете его, как любой другой модуль Perl, но зависимости используют ту же настройку (например, INSTALL_BASE).

частные CPAN для каждого приложения и устанавливаются непосредственно из этих пользовательских CPAN. См., Например, мой модуль MyCPAN :: App :: DPAN . Исходя из этого, я использую собственные конфигурации CPAN.pm, которые анализируют их среду и устанавливают правильные значения для каждого приложения, которое может установить все в каталог только для этого приложения.

Вы также можете рассмотреть возможность распространения вашего приложения как Task ::. Вы устанавливаете его, как любой другой модуль Perl, но зависимости используют ту же настройку (например, INSTALL_BASE).

Вы также можете рассмотреть возможность распространения вашего приложения как Task ::. Вы устанавливаете его, как любой другой модуль Perl, но зависимости используют ту же настройку (например, INSTALL_BASE).

Вы также можете рассмотреть возможность распространения вашего приложения как Task ::. Вы устанавливаете его, как любой другой модуль Perl, но зависимости используют ту же настройку (например, INSTALL_BASE).

1
ответ дан 29 November 2019 в 21:28
поделиться