Как я могу изменить свою cygwin среду для использования Земляничного Perl вместо упакованного распределения Perl?

Так что я нашел решение для этого.

    argumentsList = [] 
    for i in sys.argv: 
        argumentsList.append(i)   
    newStrList = [x.encode('UTF8') for x in argumentsList]
    try:
        for indx, val in enumerate(newStrList):
            print(indx, val)
            getattr(ClassContainingMethods,newStrList[indx])()
    except KeyError:
       pass

Теперь, независимо от того, сколько аргументов (в данном случае вызовов методов) получено в списке, они выполняются.

13
задан GEOCHET 1 April 2009 в 15:10
поделиться

6 ответов

При удалении Perl из cygwin использование программы установки, это будет использовать Земляничный Perl по умолчанию.

Если Вы не можете удалить Perl из cygwin, можно создать символьную ссылку на исполняемый файл Perl от Земляники.

От оболочки cygwin используйте следующий набор команд:

$ mv /usr/bin/perl /usr/bin/perl-cygwin
$ ln -s /cygdrive/c/strawberry/perl/bin/perl.exe /usr/bin/perl

Это предполагает использование Земляничного установщика Perl по умолчанию. Обновите Ваш perl.exe местоположение соответственно, если Вам установили его где-то в другом месте.

Проверьте, чтобы удостовериться, что ссылка работает правильно путем проверки версии Perl:

$ perl -v

Это должно сказать, что Это - жемчуг, (версия), созданная для MSWin32-x86-multi-thread (или подобный) и не созданное для cygwin-thread-multi-64int.

22
ответ дан 1 December 2019 в 22:08
поделиться

Можно изменить ПУТЬ для помещения каталогов Strawberry сначала. Земляника пытается быть хорошей путем помещения ее каталогов в конце ПУТИ. Если Вы установили из .zip файла, однако, он не изменил ПУТЬ вообще.

Вы могли переместить/usr/bin/perl, но это - плохая идея, так как он повреждается, когда cygwin пытается обновить то, что он думает, его жемчуг. Я просто имел, которые происходят со мной на этой неделе и используемый для случая со мной на моем Mac, пока я не прекратил играть с системной установкой и установил свой собственный абсолютно отдельный материал.

1
ответ дан 1 December 2019 в 22:08
поделиться

Это - вероятно, не предпочтительное решение, но необходимо смочь изменить #! строка:

#!/cygdrive/c/strawberry/perl/bin/perl5.10.0

Я всегда обращаюсь к явному местоположению и установке жемчуга, вместо того, чтобы полагаться на то, что находится в/usr/bin.

0
ответ дан 1 December 2019 в 22:08
поделиться

У меня нет своей cygwin машины поблизости, таким образом, я не могу протестировать это, но возможно можно выйти напрямую команду жемчуга со сценарием: перейдите к / мусорному ведру под cygwin и переместите perl.exe туда во что-то еще как perl-org.exe, затем настройте сценарий оболочки что должностные лица Ваш другой жемчуг с теми же аргументами.

-2
ответ дан 1 December 2019 в 22:08
поделиться

У меня есть два сценария, которые я использую для изменения первой строки сценариев Perl к тому, какой бы ни Perl является первым в моем пути: rightperl hardcodes к Perl, который является первым в моем $PATH теперь, envperl, изменит строку на #!/usr/bin/env жемчуг, таким образом, Perl для использования будет только выбран в то время, когда сценарий вызывается. Работы действительно хорошо под Cygwin (и от Unix окружают в целом).

0
ответ дан 1 December 2019 в 22:08
поделиться

Я могу добавить одну хорошую вещь: если у вас есть правильный Perl, который будет первым на пути, он должен обрабатывать специфичные для сайта модули CPAN, которые вы, возможно, установили с клубничным Perl, работающим в CMD. shell.

"which perl" - ваш друг.

Если у вас возникли проблемы с этим, вы можете установить переменную среды PERL5LIB, но в этом нет необходимости.

Я все еще передаю файл в стиле DOS пути в качестве параметров в сценарии perl, то есть "d: \ data \ myfile.txt", а не "/cygdrive/d/data/myfile.txt". Как ни странно, работает такая комбинация обозначений путей:

bash> /cygdrive/d/scripts/myscript.pl d: \ data \ myfile.txt

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

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