2009-02-26 3 views
5

Я хочу настроить Perl 5.10 в моем домашнем каталоге в дополнение к древнему Perl, который в настоящее время находится на машине в/usr/local. Я не суперпользователь на этой машине.Могу ли я установить предварительно настроенный двоичный пакет Perl в моем домашнем каталоге?

Я нашел требуемый двоичный пакет 5.10 HPUX perl, и, похоже, он работает, но по какой-то причине он предположил, что он запущен в/usr/local (о чем свидетельствуют сообщения об ошибках @INC). Есть ли еще одна переменная в дополнение к PERLLIB, например PERLHOME или что-то, что мне нужно установить, чтобы Perl ничего не искал в/usr/local dirs?

P.S. Я видел advice online, чтобы скомпилировать и установить dir на шаге ./Configure, но мне сложно было скомпилировать вещи в этом старом окне, поэтому я предпочел бы использовать предварительно скомпилированный Perl, поскольку он, похоже, работает в основном.


ОБНОВЛЕНИЕ - Леон ответил на этот вопрос, так что в основном это не возможно, чтобы правильно запустить PERL двоичным из вашей домашней директории, если он не был составлен с учетом этого

ответ

4

Это зависит от того, является ли ваш perl двоичного перемещаемый. Это вариант времени компиляции. Каков результат этой команды? Это определено или нет?

perl -V:userelocatableinc 
+0

perl -V: userelocatableinc userelocatableinc = 'undef'; –

+0

Тогда вам не повезло. Вам придется скомпилировать его самостоятельно. –

+0

Означает ли это, что это не сработает? Таким образом, ваши ответы в основном таковы, что нет способа поместить этот двоичный файл в мой домашний каталог, поскольку эта переменная не была установлена, когда кто-то ее скомпилировал. Скажем, у них было, как это будет работать тогда? –

-1

Вы можете указать любой путь переводчика вы хотите в первой строке:

!#/my/local/perl 

И если вы не ищете переносимости между машинами, вы можете установить @INC вручную в сценарии. Я думаю, что есть способ получить его и от env, который может быть более портативным.

+0

В двоичном файле есть некоторые жестко закодированные пути по умолчанию, если они не были скомпилированы с параметрами, указанными выше. –

4

Вам не понравится этот ответ.

Perl хранит @INC как строки в своем двоичном формате. До того, как появился userelocatableinc, метод переноса Perl состоял в том, чтобы выполнять поиск и замену в двоичном формате, а также изменять их в Config.pm. Именно так ActiveState отправил перемещаемый Perl.

Строки должны оставаться того же размера, что и раньше, заполняя любое дополнительное пространство нулевыми байтами. ActiveState обойдется в этом, настроив Perl с префиксом типа «/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTMPPATHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx» или что-то в этом роде. Это также позволило однозначно найти в двоичном коде. У вас нет такой удачи, поэтому она будет работать, только если текущие пути короче путей, которые вы хотите их заменить.

Но это слишком сложно. Просто скомпилируйте Perl для себя либо с помощью источника HP/UX, либо просто возьмите обычный источник с perl.org. У Perl есть специализированный разработчик HP/UX, поэтому все должно идти гладко.

+0

Спасибо за дополнительную информацию об активизации и т. Д., Поэтому я скомпилировал Perl с нуля, и он действительно работает, однако все еще возникают проблемы с PARIN @INC, поэтому новый вопрос нужно выполнить в ближайшее время. благодаря –

Смежные вопросы