2010-11-08 1 views
2

У меня есть некоторые программы Perl/CGI на веб-сервере CentOS Linux. Я хочу написать дополнительные приложения, для которых не требуются модули Perl, которые в настоящее время не установлены.Установка CPAN новых модулей влияет на приложения Perl-CGI на одном и том же живом сервере?

Поддерживает ли работа CPAN на одном и том же прямом производственном сервере эти программы (которые в настоящее время не используют модули, очевидно) каким-либо образом?

ответ

5

Есть один возможный способ, которым это могло бы иметь эффект. Если модули, которые вы устанавливаете, требуют более новых версий модулей, которые вы уже используете, возможно, эти новые версии могут повлиять на поведение ваших существующих программ.

Например. Предположим, что у вас установлена ​​версия 1.0 Foo.pm. Теперь вы хотите установить новый модуль под названием Bar.pm. Но Bar.pm зависит от версии 2.0 Foo.pm - и CPAN, таким образом, втянет в новую версию Foo.pm как часть установки Bar.pm. В худшем случае автор Foo.pm мог полностью изменить интерфейс модуля между версиями. В этом случае любая программа, которая использует Foo.pm 1.0, может перестать работать, когда установлена ​​версия 2.0.

Это очень маловероятно, так как модули Perl обычно работают трудно поддерживать обратную совместимость. Но именно поэтому у нас есть тестовые среды и тестовые комплекты, и мы не ставим материал в производство, не тестируя его сначала.

+1

Один из примеров, с которым я столкнулся недавно, был в List :: MoreUtils в функции «none» - в последней («нестабильной») версии его поведение по отношению к пустым спискам было отменено. (Некоторый непослушный дистрибутив потребовал эту версию, и я не заметил, что она обновляется во всех случаях из всех остальных.) – Ether

+0

Спасибо davorg +1. Я понимаю, что вы имеете в виду в отношении зависимостей - в связи с чем новые модули, требующие версий тех, которые уже используются моими текущими программами, - эта ситуация может быть проблемой для меня. У меня нет роскоши тестового сервера, идея списка пожеланий для меня заключалась бы в том, чтобы «контейнеризовать» несколько установок Perl на одном компьютере, чтобы установки были локальными только для установки Perl в конкретном контейнере , вроде как более тонкая система виртуализации/vmware. – therobyouknow

+0

+1 Эфир для вашего вклада. – therobyouknow

0

Да, недавно установленные модули будут доступны для вашей среды Perl/CGI, при условии что perl используется для установки модулей из CPAN это же perl, что веб-сервер использует для запуска Perl/CGI Приложения. например, если вы устанавливаете модули с использованием /opt/local/bin/perl, а веб-сервер выполняет приложения под номером /usr/bin/perl, то у двух perl s каждый будет иметь свой собственный набор установленных модулей, поэтому веб-сервер их не увидит.