Как я могу обновить Perl в Windows, не теряя модули?

Для объекта obj и "repository.url" key вы можете получить глубокое значение с помощью

var val = key.split(".").reduce((o,k)=>o[k],obj);

Демонстрация:

var obj = {
  "name": "app",
  "version": "0.1.0",
  "description": "Sample description",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "some git url"
  },
  "keywords": [
    "node"
  ],
  "author": "Anonymous",
  "license": "ISC"
};

var key = "repository.url";

var val = key.split(".").reduce((o,k)=>o[k],obj);

document.write("result: \"" + val + "\"");

Теперь представьте, что вам нужно что-то, что не вызывает исключения, когда некоторые свойства отсутствуют, например "repository.language.version", тогда вы можете сделать

var val = key.split(".").reduce((o={},k)=>o[k],obj);
10
задан Peter Mortensen 23 November 2019 в 13:01
поделиться

6 ответов

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

Чтобы сделать это, необходимо будет настроить и скомпилировать источники сами. Когда Вы работаете configure, Вы получите шанс указать установщик. Я дал подробные инструкции для этого в "Компиляции Моего Собственного Perl" в проблеме Spring 2008 года Обзора Perl. Существует также Объект в Эффективном Perl, Программируя, который показывает Вам, как сделать это.

Теперь, вернитесь к своему исходному распределению и работайте cpan -a создать файл автопакета. Это - документ Переходной приставки, который перечисляет весь дополнительный материал, который Вы установили, и CPAN.pm понимает, как использовать это для переустановки всего.

Для установки вещей в новом жемчуге используйте путь того perl, чтобы запустить CPAN.pm и установить файл автопакета, который Вы создали. CPAN.pm получит правильные пути установки из конфигурации того perl.

Наблюдайте вывод, чтобы удостовериться, что вещи подходят. Этот процесс не установит те же версии модулей, но последние версии.

Что касается Земляничного Perl, существует "портативная" версия, которую можно установить где-нибудь помимо местоположения по умолчанию. Тем путем у Вас мог быть новый жемчуг на съемных носителях. Можно протестировать его где угодно, Вам нравится, не нарушая локальную установку. Я не думаю, что это довольно готово к общему использованию все же. Инструмент Berrybrew мог бы помочь Вам управлять этим.

Удача, :)

9
ответ дан 3 December 2019 в 16:11
поделиться

Я серьезно рассмотрел бы рассмотрение использования Земляничного Perl.

8
ответ дан 3 December 2019 в 16:11
поделиться

Можно установить вторую версию Perl в другом месте. Необходимо будет переустановить любые неосновные модули в новую версию. В целом различные версии Perl не двоичные совместимый, который мог быть проблемой, если у Вас есть какие-либо определенные для программы библиотеки, которые используют компоненты XS. Чистые модули Perl не должны быть затронуты.

4
ответ дан 3 December 2019 в 16:11
поделиться

Если Вы останетесь в этих 5,8 дорожках, все установленные модули, которые содержат XS (двоичный файл), то расширения продолжат работать, поскольку совместимость на уровне двоичных кодов гарантируется в тех же 5,8 рядах. Если бы Вы переместились в 5,10 затем, то необходимо было бы перекомпилировать любые модули, которые содержат компоненты XS.

Все, что необходимо сделать, гарантируют, что новые списки сборки, предыдущие включают каталоги в ее массив @INC (который используется для поиска модулей).

Звуками его я думаю, что Вы находитесь в Windows, в этом случае текущие пути @INC могут быть просмотрены с

perl -le "print for @INC"

Удостоверьтесь, что Вы нацелены на свою новую версию Perl в другом каталоге. Это будет счастливо сосуществовать с предыдущей версией, и это позволит Вам выбирать, какая установка Perl привыкает; это - просто вопрос получения Вашего порядка ПУТИ, в котором разбираются. Как только интерпретатор Perl запущен, он знает, где искать остальную часть его модулей.

Земляничный Perl является, вероятно, самым хорошим распределением в Windows в эти дни для прокрутки Вашего собственного.

3
ответ дан 3 December 2019 в 16:11
поделиться

Я думаю, что ответ на это включает виртуализацию некоторого вида:

  1. Настройте точную копию своей текущей живой машины. Perl обновления, с помощью тех же местоположений каталога и структур, поскольку Вы используете в данный момент.
  2. Пройдите свои сценарии, тестирующие их на новом изображении.
  3. После того как Вы счастливы, зеркально отражаете переключатель.

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

Можно ли попытаться определить это путем создания списка всех сценариев - список, который Вы должны иметь так или иначе посредством всего Вашего кода, являющегося объектом управления версиями (Вы используете управление версиями, например, Подверсию, да?) - и выполняющий итерации через него, работая perl -c на каждом сценарии. например, этот сценарий. Такой автоматизированный тест неоценим: можно установить его выполнение, уйти для кофе и возвратиться к проверке, работало ли все. Первые несколько раз Вы, вероятно, найдете неясный модуль, о котором Вы забыли, который прекрасен: смысл автоматизации этого - то, так, чтобы Вы не делали работы ломовой лошади проверки каждого сценария.

1
ответ дан 3 December 2019 в 16:11
поделиться

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

Вероятно, намного более мудро, задним числом, установить на отдельном компьютере и сделать Ваше тестирование там. Запишите каждое изменение конфигурации, которое необходимо сделать.

Я не уверен в создании его самостоятельно — я всегда просто использовал предварительно упакованные двоичные файлы для Windows.

Я не уверен, что понимаю точно, что Вы спрашиваете. У Вас есть список изменений, которые Вы внесли в 5,8 make-файлов? Или состоит в том вопрос, как получить такой список? Вы также спрашиваете, как узнать, какие пакеты выше основной установки Вы получили из CPAN? Вы также спрашиваете, как протестировать это, Ваши пользовательские изменения не повредят те пакеты, если Вы получите их от CPAN снова?

1
ответ дан 3 December 2019 в 16:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: