Spec-Zone.ru › Perl 5.28

perlcygwin

СОДЕРЖАНИЕ

  • НАЗВАНИЕ
  • СИНОПСИС
  • ПРЕДПОСЫЛКИ ДЛЯ КОМПИЛЯЦИИ PERL НА CYGWIN
    • Cygwin = GNU+Cygnus+Windows (Не оставляйте UNIX без него)
    • Настройка Cygwin
  • НАСТРОЙКА PERL НА CYGWIN
    • Удаление ненужных данных из бинарников Perl на Cygwin
    • Дополнительные библиотеки для Perl на Cygwin
    • Параметры настройки для Perl на Cygwin
    • Подозрительные предупреждения на Cygwin
  • MAKE НА CYGWIN
  • ТЕСТИРОВАНИЕ НА CYGWIN
    • Права доступа к файлам на Cygwin
    • NDBM_File и ODBM_File не работают на файловых системах FAT
    • Неудачные вызовы fork() в тестах io_*
  • Особенности порта Cygwin
    • Переносимость скриптов на Cygwin
    • Готовые методы:
  • УСТАНОВКА PERL НА CYGWIN
  • МАНИФЕСТ НА CYGWIN
  • ОШИБКИ НА CYGWIN
  • АВТОРЫ
  • ИСТОРИЯ

НАЗВАНИЕ

perlcygwin - Perl для Cygwin

СИНОПСИС

Этот документ поможет вам настроить, скомпилировать, протестировать и установить Perl на Cygwin. В документе также описаны особенности Cygwin, которые повлияют на поведение Perl во время выполнения.

ПРИМЕЧАНИЕ: Существуют готовые пакеты Perl для Cygwin, а также версия Perl, предоставляемая в стандартной установке Cygwin. Если вам не нужно настраивать конфигурацию, воспользуйтесь одним из этих пакетов.

ПРЕДПОСЫЛКИ ДЛЯ КОМПИЛЯЦИИ PERL НА CYGWIN

Cygwin = GNU+Cygnus+Windows (Не оставляйте UNIX без него)

Инструменты Cygwin — это портированные популярные инструменты разработки GNU для платформ Win32. Они работают благодаря библиотеке Cygwin, которая обеспечивает системные вызовы UNIX и среду, ожидаемые этими программами. Дополнительную информацию об этом проекте можно найти по адресу:

http://www.cygwin.com/

Требуется недавняя версия Cygwin.

На момент последнего обновления этого документа актуальной была версия Cygwin 1.7.16.

Настройка Cygwin

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

ПРИМЕЧАНИЕ: Скомпилированные двоичные файлы будут работать на всех версиях Win32. Они не зависят от вашей хост-системы (WinXP/Win2K/Win7) или вашей конфигурации Cygwin (монтирование каталогов, cvgserver). Единственные зависимости возникают из жёстко закодированных путей, таких как /usr/local. Однако ваша хост-система и конфигурация Cygwin повлияют на поведение Perl во время выполнения (см. "ТЕСТИРОВАНИЕ").

  • PATH

    Установите переменную среды PATH, чтобы Configure нашёл версии программ Cygwin. Все ненужные каталоги Windows следует удалить или перенести в конец вашего PATH.

  • nroff

    Если у вас нет nroff (который входит в пакет groff), Configure не предложит установить страницы справки man.

НАСТРОЙКА PERL НА CYGWIN

По умолчанию, собранные Configure опции с помощью hints/cygwin.sh, позволят создать Perl, который поддерживает динамическую загрузку (что требует общего cygperl5_16.dll).

Это запустит Configure и сохранит записи:

./Configure 2>&1 | tee log.configure

Если вы готовы принять все значения по умолчанию, запустите Configure с -de. Однако доступны несколько полезных пользовательских настроек.

Удаление ненужных данных из бинарников Perl на Cygwin

Можно удалить ненужные данные из EXEs и DLLs, созданных в процессе сборки. Результирующие бинарные файлы будут значительно меньше. Если вы хотите удалить ненужные данные из бинарных файлов, вы можете добавить опцию -s, когда Configure попросит её,

Any additional ld flags (NOT including libraries)? [none] -s
Any special flags to pass to g++ to create a dynamically loaded
library?
[none] -s
Any special flags to pass to gcc to use dynamic linking? [none] -s

или вы можете отредактировать hints/cygwin.sh и раскомментировать соответствующие переменные в конце файла.

Дополнительные библиотеки для Perl на Cygwin

Некоторые функции и модули Perl зависят от наличия дополнительных библиотек. Configure найдёт их, если они установлены в одном из каталогов, указанных для поиска библиотек. Готовые пакеты для большинства из них доступны в установщике Cygwin.

  • -lcrypt

    Пакет crypt, поставляемый с Cygwin, — это Linux-совместимый порт 56-битного DES crypt от Corinna Vinschen.

    В качестве альтернативы, библиотеки crypt в GNU libc были портированы в Cygwin.

    По состоянию на libcrypt 1.3 (март 2016), вам потребуется установить пакет libcrypt-devel для того, чтобы Configure обнаружил crypt().

  • -lgdbm_compat (use GDBM_File)

    GDBM доступен для Cygwin.

    ПРИМЕЧАНИЕ: Библиотека GDBM работает только на разделах NTFS.

  • -ldb (use DB_File)

    BerkeleyDB доступен для Cygwin.

    ПРИМЕЧАНИЕ: Библиотека BerkeleyDB полностью работает только на разделах NTFS.

  • cygserver (use IPC::SysV)

    Порт SysV IPC доступен для Cygwin.

    ПРИМЕЧАНИЕ: Это не было подробно протестировано. В частности, d_semctl_semun не определён, потому что он не прошёл тест Configure, а в Win9x функции shm*(), похоже, зависают. Также это создаёт зависимость во время компиляции, так как perl.h включает <sys/ipc.h> и <sys/sem.h> (которые потребуются в будущем при компиляции CPAN-модулей). В НАСТОЯЩЕЕ ВРЕМЯ НЕ ПОДДЕРЖИВАЕТСЯ!

  • -lutil

    В стандартной версии Cygwin netrelease входит пакет inetutils, который включает libutil.a.

Параметры настройки для Perl на Cygwin

Документ INSTALL описывает несколько параметров настройки во время выполнения Configure. Некоторые из них будут работать с Cygwin, другие пока невозможны. Также некоторые из них являются экспериментальными. Вы можете выбрать опцию, когда Configure запросит её, или вы можете определить (или не определять) символы в командной строке.

  • -Uusedl

    Отключение этого символа принудительно компилирует Perl статически.

  • -Dusemymalloc

    По умолчанию Perl не использует malloc() включённый с исходным кодом Perl, потому что он был медленнее и не полностью потокобезопасен. Если вы хотите принудительно скомпилировать Perl со старым определением -Dusemymalloc, сделайте это.

  • -Uuseperlio

    Отключение этого символа отключает абстракцию PerlIO. PerlIO теперь является значением по умолчанию; отключение PerlIO не рекомендуется.

  • -Dusemultiplicity

    Множественность требуется при встраивании Perl в программу C и использовании более чем одного экземпляра интерпретатора. Это требуется только когда вы собираете не-потоковый perl с -Uuseithreads.

  • -Uuse64bitint

    По умолчанию Perl использует 64-битные целые числа. Если вы хотите использовать 32-битные целые числа, определите этот символ.

  • -Duselongdouble

    gcc поддерживает длинные двойные числа (12 байт). Однако для их использования в Perl необходимы дополнительные функции математики с длинными двойными числами ({atan2, cos, exp, floor, fmod, frexp, isnan, log, modf, pow, sin, sqrt}l, strtold). Они не ещё доступны с newlib, библиотекой Cygwin libc.

  • -Uuseithreads

    Определите этот символ, если вы хотите не-потоковый более быстрый perl.

  • -Duselargefiles

    Cygwin использует 64-битные целые числа для внутренних расчётов размера и позиций, это будет правильно обнаружено и определено Configure.

  • -Dmksymlinks

    Используйте это для сборки perl вне исходного дерева. Подробности можно найти в документе INSTALL. Это рекомендуемый способ сборки perl из исходного кода.

Подозрительные предупреждения на Cygwin

Во время выполнения Configure вы можете увидеть некоторые сообщения, которые кажутся подозрительными.

  • Win9x и d_eofnblk

    Win9x не правильно сообщает EOF при неблокирующем чтении в закрытой трубе. Вы увидите следующие сообщения:

    But it also returns -1 to signal EOF, so be careful!
    WARNING: you can't distinguish between EOF and no data!
    
    *** WHOA THERE!!! ***
        The recommended value for $d_eofnblk on this machine was
        "define"!
        Keep the recommended value? [y]

    По крайней мере для согласованности с WinNT, вы должны сохранить рекомендованное значение.

  • Определения компилятора/препроцессора

    Следующая ошибка возникает из-за Cygwin #define _LONG_DOUBLE:

    Guessing which symbols your C compiler and preprocessor define...
    try.c:<line#>: missing binary operator

    Эта ошибка не должна вызывать каких-либо проблем. В более ранних версиях gcc вместо "parse error" выдавалось "missing binary operator".

MAKE НА CYGWIN

Просто запустите make и дождитесь завершения:

make 2>&1 | tee log.make

ТЕСТИРОВАНИЕ НА CYGWIN

Для запуска набора тестов необходимо выполнить два шага:

make test 2>&1 | tee log.make-test

cd t; ./perl harness 2>&1 | tee ../log.harness

Одинаковые тесты выполняются оба раза, но больше информации предоставляется при запуске как ./perl harness.

Результаты тестов зависят от вашей хост-системы и вашей конфигурации Cygwin. Если тест может пройти в какой-то настройке Cygwin, он всегда пытается пройти, и описаны все неудачи тестов. Возможно, Perl пройдёт все тесты, но более вероятно, что некоторые тесты не пройдут по одной из причин, перечисленных ниже.

Права доступа к файлам на Cygwin

Права доступа к файлам в UNIX основаны на наборах битов режима для {чтения, записи, выполнения} для каждого {пользователя, группы, других}. По умолчанию Cygwin отслеживает только атрибут только для чтения Win32, представленный в виде бита записи пользователя UNIX (файлы всегда читаемы, файлы исполняемы, если у них есть расширение .{com,bat,exe} или они начинаются с #!, каталоги всегда читаемы и исполняемы). В WinNT с настройкой ntea CYGWIN дополнительные биты режима хранятся как расширенные атрибуты файла. В WinNT с настройкой по умолчанию ntsec CYGWIN права доступа используют стандартные дескрипторы безопасности WinNT и списки управления доступом. Без одного из этих параметров эти тесты завершатся ошибкой (список еще не обновлен):

Failed Test           List of failed
------------------------------------
io/fs.t               5, 7, 9-10
lib/anydbm.t          2
lib/db-btree.t        20
lib/db-hash.t         16
lib/db-recno.t        18
lib/gdbm.t            2
lib/ndbm.t            2
lib/odbm.t            2
lib/sdbm.t            2
op/stat.t             9, 20 (.tmp not an executable extension)

Файлы NDBM и ODBM не работают на файловых системах FAT

Не используйте NDBM_File или ODBM_File на файловой системе FAT. Они могут быть построены на файловой системе FAT, но многие тесты завершатся ошибкой:

../ext/NDBM_File/ndbm.t       13  3328    71   59  83.10%  1-2 4 16-71
../ext/ODBM_File/odbm.t      255 65280    ??   ??       %  ??
../lib/AnyDBM_File.t           2   512    12    2  16.67%  1 4
../lib/Memoize/t/errors.t      0   139    11    5  45.45%  7-11
../lib/Memoize/t/tie_ndbm.t   13  3328     4    4 100.00%  1-4
run/fresh_perl.t                          97    1   1.03%  91

Если вы планируете работать только с FAT (или если используете AnyDBM_File на FAT), запустите Configure с параметрами -Ui_ndbm и -Ui_dbm, чтобы предотвратить создание файлов NDBM и ODBM.

В NTFS (и без CYGWIN=nontsec) проблем не должно быть, даже если Perl был построен на FAT.

fork() ошибки в тестах io_*

Ошибка fork() может привести к сбою следующих тестов:

ext/IO/lib/IO/t/io_multihomed.t
ext/IO/lib/IO/t/io_sock.t
ext/IO/lib/IO/t/io_unix.t

См. комментарий к fork в "Разное" ниже.

Особенности порта Cygwin

Переносимость скриптов в Cygwin

Cygwin отлично справляется с обеспечением семантики UNIX поверх систем Win32. Однако помимо перечисленных выше пунктов существуют некоторые отличия, о которых вам следует знать. Это очень краткое руководство по переносимости, более подробную информацию можно найти в документации Cygwin.

  • Имена путей

    Имена путей Cygwin разделяются косыми чертами (/), также поддерживаются универсальные имена ресурсов (//UNC). С версии cygwin-1.7 имена путей, не соответствующие POSIX, не рекомендуются. Имена могут содержать все печатные символы.

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

    Для преобразования у нас есть Cygwin::win_to_posix_path() и Cygwin::posix_to_win_path().

    С версии cygwin-1.7 имена путей закодированы в UTF-8.

  • Текст/Двоичные данные

    С версии cygwin-1.7 текстовые монтирования устарели и настоятельно не рекомендуются.

    При открытии файла он находится в текстовом или двоичном режиме. В текстовом режиме файл подвергается преобразованиям CR/LF/Ctrl-Z. В Cygwin режим по умолчанию для open() определяется режимом монтирования, на котором основан файл. См. "Cygwin::is_binmount"(). Perl предоставляет функцию binmode() для установки двоичного режима для файлов, которые в противном случае обрабатывались бы как текстовые. sysopen() с флагом O_TEXT устанавливает текстовый режим для файлов, которые в противном случае обрабатывались бы как двоичные:

    sysopen(FOO, "bar", O_WRONLY|O_CREAT|O_TEXT)

    lseek(), tell() и sysseek() работают только с файлами, открытыми в двоичном режиме.

    Проблема с текстовым и двоичным режимом подробно рассмотрена в документации Cygwin.

  • PerlIO

    PerlIO переопределяет стандартное поведение Cygwin Текст/Двоичные данные. Файл всегда будет обрабатываться как двоичный, независимо от режима монтирования, на котором он находится, точно так же, как это происходит в UNIX. Поэтому преобразование CR/LF необходимо запросить в вызове open() следующим образом:

    open(FH, ">:crlf", "out.txt");

    что выполнит преобразование из LF в CR/LF на выходе, или в настройках среды (добавьте это в свой .bashrc):

    export PERLIO=crlf

    что подключает слой crlf PerlIO, который выполняет преобразование LF в CRLF для каждого вывода, создаваемого perl.

  • .exe

    Функции Cygwin stat(), lstat() и readlink() делают расширение .exe прозрачным, ищут foo.exe, когда вы запрашиваете foo (если не существует также foo). Cygwin не требует расширения .exe, но gcc добавляет его автоматически при построении программы. Однако при доступе к исполняемому файлу как к обычному файлу (например, cp в файле make) .exe не является прозрачным. Программа install, входящая в состав Cygwin, автоматически добавляет .exe при необходимости.

  • Идентификаторы процессов Cygwin против Windows

    У процессов Cygwin есть свой собственный pid, который отличается от базового pid Windows. Большинство функций POSIX-совместимого Proc ожидают pid cygwin, но несколько функций Win32::Process ожидают winpid. Например, $$ - это pid cygwin для /usr/bin/perl, который не является winpid. Используйте Cygwin::pid_to_winpid() и Cygwin::winpid_to_pid() для преобразования между ними.

  • Ошибки Cygwin против Windows

    В Cygwin $^E эквивалентен $!. При использовании функций Win32 API используйте Win32::GetLastError() для получения последней ошибки Windows.

  • Ошибки при перезагрузке при fork или system

    Использование fork() или system() для вызова другого perl после загрузки нескольких dll может привести к конфликту адресов DLL. Внутренняя ошибка cygwin выглядит следующим образом:

    0 [main] perl 8916 child_info_fork::abort: data segment start:
    parent (0xC1A000) != child(0xA6A000)

    или:

    183 [main] perl 3588 C:\cygwin\bin\perl.exe: *** fatal error -
    unable to remap C:\cygwin\bin\cygsvn_subr-1-0.dll to same address
    as parent(0x6FB30000) != 0x6FE60000 46 [main] perl 3488 fork: child
    3588 - died waiting for dll loading, errno11

    См. http://cygwin.com/faq/faq-nochunks.html#faq.using.fixing-fork-failures Это помогает, если в памяти загружено не слишком много DLL, чтобы адресное пространство было больше, например, остановка MS Internet Explorer может помочь.

    Используйте утилиты perlrebase или rebase для решения конфликтов адресов DLL. Пакет rebase включен в установку Cygwin. Используйте setup.exe из http://www.cygwin.com/setup.exe для его установки.

    1. Убейте все процессы perl и запустите perlrebase или

    2. Убейте все процессы и службы cygwin, запустите dash из cmd.exe и выполните rebaseall.

  • chown()

    В WinNT chown() может изменить идентификаторы пользователя и группы файла. В Win9x chown() является пустой операцией, хотя это уместно, так как модели безопасности нет.

  • Разное

    Блокировка файлов с использованием команды F_GETLK в fcntl() является заглушкой, которая возвращает ENOSYS.

    Win9x не может rename() открытый файл (хотя WinNT может).

    Реализация Cygwin chroot() имеет пробелы (она не может ограничивать доступ к файлам программами Win32).

    Редактирование файла на месте perl -i не работает без создания резервной копии редактируемого файла perl -i.bak из-за ограничений Windows, поэтому Perl автоматически добавляет суффикс .bak если вы используете perl -i без указания расширения резервной копии.

Предопределённые методы:

Cwd::cwd

Возвращает текущую рабочую директорию.

Cygwin::pid_to_winpid

Преобразует pid cygwin в соответствующий pid Windows (который может или не может быть одинаковым).

Cygwin::winpid_to_pid

Преобразует pid Windows в соответствующий pid cygwin (если таковой имеется).

Cygwin::win_to_posix_path

Преобразует путь Windows в соответствующий путь cygwin, учитывая текущие точки монтирования. С вторым ненулевым аргументом возвращает абсолютный путь. Двухбайтовые символы не будут преобразованы.

Cygwin::posix_to_win_path

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

Cygwin::mount_table()

Возвращает массив [mnt_dir, mnt_fsname, mnt_type, mnt_opts].

perl -e 'for $i (Cygwin::mount_table) {print join(" ",@$i),"\n";}'
/bin c:\cygwin\bin system binmode,cygexec
/usr/bin c:\cygwin\bin system binmode
/usr/lib c:\cygwin\lib system binmode
/ c:\cygwin system binmode
/cygdrive/c c: system binmode,noumount
/cygdrive/d d: system binmode,noumount
/cygdrive/e e: system binmode,noumount
Cygwin::mount_flags

Возвращает тип монтирования и флаги для указанной точки монтирования. Строка, разделенная запятыми, mntent->mnt_type (всегда "system" или "user"), затем mntent->mnt_opts, где первый всегда "binmode" или "textmode".

system|user,binmode|textmode,exec,cygexec,cygdrive,mixed,
notexec,managed,nosuid,devfs,proc,noumount

Если аргумент равен "/cygdrive", возвращаются только параметры монтирования тома и префикс монтирования cygdrive.

Монтирования пользователя переопределяют системные монтирования.

$ perl -e 'print Cygwin::mount_flags "/usr/bin"'
system,binmode,cygexec
$ perl -e 'print Cygwin::mount_flags "/cygdrive"'
binmode,cygdrive,/cygdrive
Cygwin::is_binmount

Возвращает true, если указанный путь cygwin смонтирован в двоичном режиме, false, если путь смонтирован в текстовом режиме.

Cygwin::sync_winenv

Cygwin не инициализирует все исходные переменные среды Win32. См. нижнюю часть этой страницы http://cygwin.com/cygwin-ug-net/setup-env.html для "Ограниченной среды Win32".

Некоторые программы Win32, вызываемые из программ cygwin, могут потребовать некоторые переменные среды, например, ADODB требует %COMMONPROGRAMFILES%. Вызовите Cygwin::sync_winenv(), чтобы скопировать все переменные среды Win32 в ваш процесс, и обратите внимание, что cygwin будет предупреждать о каждом встречном пути, не соответствующем POSIX.

УСТАНОВКА PERL В CYGWIN

Это установит Perl, включая страницы man.

make install 2>&1 | tee log.make-install

ПРИМЕЧАНИЕ: Если STDERR перенаправлено, make install не попросит вас установить perl в /usr/bin.

Возможно, вам потребуется статус Администратор для запуска make install. Если нет, вам необходимо иметь права записи в соответствующие каталоги.

Информация об установке документации Perl в формате HTML находится в документе INSTALL.

Файл манифеста в Cygwin

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

Документация
INSTALL README.cygwin README.win32 MANIFEST
pod/perl.pod pod/perlport.pod pod/perlfaq3.pod
pod/perldelta.pod pod/perl5004delta.pod pod/perl56delta.pod
pod/perl561delta.pod pod/perl570delta.pod pod/perl572delta.pod
pod/perl573delta.pod pod/perl58delta.pod pod/perl581delta.pod
pod/perl590delta.pod pod/perlhist.pod pod/perlmodlib.pod
pod/perltoc.pod Porting/Glossary pod/perlgit.pod
Porting/checkAUTHORS.pl
dist/Cwd/Changes ext/Compress-Raw-Zlib/Changes
dist/Time-HiRes/Changes
ext/Compress-Raw-Zlib/README ext/Compress-Zlib/Changes
ext/DB_File/Changes ext/Encode/Changes ext/Sys-Syslog/Changes
ext/Win32API-File/Changes
lib/ExtUtils/CBuilder/Changes lib/ExtUtils/Changes
lib/ExtUtils/NOTES lib/ExtUtils/PATCHING lib/ExtUtils/README
lib/Net/Ping/Changes lib/Test/Harness/Changes
lib/Term/ANSIColor/ChangeLog lib/Term/ANSIColor/README
README.symbian symbian/TODO
Этапы сборки, конфигурации, компиляции и установки
cygwin/Makefile.SHs
ext/IPC/SysV/hints/cygwin.pl
ext/NDBM_File/hints/cygwin.pl
ext/ODBM_File/hints/cygwin.pl
hints/cygwin.sh
Configure             - help finding hints from uname,
                        shared libperl required for dynamic loading
Makefile.SH Cross/Makefile-cross-SH
                      - linklibperl
Porting/patchls       - cygwin in port list
installman            - man pages with :: translated to .
installperl           - install dll, install to 'pods'
makedepend.SH         - uwinfix
regen_lib.pl          - file permissions

NetWare/Makefile
plan9/mkfile
symbian/sanity.pl symbian/sisify.pl
hints/uwin.sh
vms/descrip_mms.template
win32/Makefile win32/makefile.mk
Тесты
t/io/fs.t             - no file mode checks if not ntsec
                        skip rename() check when not
                        check_case:relaxed
t/io/tell.t           - binmode
t/lib/cygwin.t        - builtin cygwin function tests
t/op/groups.t         - basegroup has ID = 0
t/op/magic.t          - $^X/symlink WORKAROUND, s/.exe//
t/op/stat.t           - no /dev, skip Win32 ftCreationTime quirk
                        (cache manager sometimes preserves ctime of
                        file previously created and deleted), no -u
                        (setuid)
t/op/taint.t          - can't use empty path under Cygwin Perl
t/op/time.t           - no tzset()
Компилированный исходный код Perl
EXTERN.h              - __declspec(dllimport)
XSUB.h                - __declspec(dllexport)
cygwin/cygwin.c       - os_extras (getcwd, spawn, and several
                        Cygwin:: functions)
perl.c                - os_extras, -i.bak
perl.h                - binmode
doio.c                - win9x can not rename a file when it is open
pp_sys.c              - do not define h_errno, init
                        _pwent_struct.pw_comment
util.c                - use setenv
util.h                - PERL_FILE_IS_ABSOLUTE macro
pp.c                  - Comment about Posix vs IEEE math under
                        Cygwin
perlio.c              - CR/LF mode
perliol.c             - Comment about EXTCONST under Cygwin
Компилированный исходный код модулей
ext/Compress-Raw-Zlib/Makefile.PL
                      - Can't install via CPAN shell under Cygwin
ext/Compress-Raw-Zlib/zlib-src/zutil.h
                      - Cygwin is Unix-like and has vsnprintf
ext/Errno/Errno_pm.PL - Special handling for Win32 Perl under
                        Cygwin
ext/POSIX/POSIX.xs    - tzname defined externally
ext/SDBM_File/sdbm/pair.c
                      - EXTCONST needs to be redefined from
                        EXTERN.h
ext/SDBM_File/sdbm/sdbm.c
                      - binary open
ext/Sys/Syslog/Syslog.xs
                      - Cygwin has syslog.h
ext/Sys/Syslog/win32/compile.pl
                      - Convert paths to Windows paths
ext/Time-HiRes/HiRes.xs
                      - Various timers not available
ext/Time-HiRes/Makefile.PL
                      - Find w32api/windows.h
ext/Win32/Makefile.PL - Use various libraries under Cygwin
ext/Win32/Win32.xs    - Child dir and child env under Cygwin
ext/Win32API-File/File.xs
                      - _open_osfhandle not implemented under
                        Cygwin
ext/Win32CORE/Win32CORE.c
                      - __declspec(dllexport)
Модули/Скрипты Perl
ext/B/t/OptreeCheck.pm - Comment about stderr/stdout order under
                         Cygwin
ext/Digest-SHA/bin/shasum
                      - Use binary mode under Cygwin
ext/Sys/Syslog/win32/Win32.pm
                      - Convert paths to Windows paths
ext/Time-HiRes/HiRes.pm
                      - Comment about various timers not available
ext/Win32API-File/File.pm
                      - _open_osfhandle not implemented under
                        Cygwin
ext/Win32CORE/Win32CORE.pm
                      - History of Win32CORE under Cygwin
lib/Cwd.pm            - hook to internal Cwd::cwd
lib/ExtUtils/CBuilder/Platform/cygwin.pm
                      - use gcc for ld, and link to libperl.dll.a
lib/ExtUtils/CBuilder.pm
                      - Cygwin is Unix-like
lib/ExtUtils/Install.pm - Install and rename issues under Cygwin
lib/ExtUtils/MM.pm    - OS classifications
lib/ExtUtils/MM_Any.pm - Example for Cygwin
lib/ExtUtils/MakeMaker.pm
                      - require MM_Cygwin.pm
lib/ExtUtils/MM_Cygwin.pm
                      - canonpath, cflags, manifypods, perl_archive
lib/File/Fetch.pm     - Comment about quotes using a Cygwin example
lib/File/Find.pm      - on remote drives stat() always sets
                        st_nlink to 1
lib/File/Spec/Cygwin.pm - case_tolerant
lib/File/Spec/Unix.pm - preserve //unc
lib/File/Spec/Win32.pm - References a message on cygwin.com
lib/File/Spec.pm      - Pulls in lib/File/Spec/Cygwin.pm
lib/File/Temp.pm      - no directory sticky bit
lib/Module/CoreList.pm - List of all module files and versions
lib/Net/Domain.pm     - No domainname command under Cygwin
lib/Net/Netrc.pm      - Bypass using stat() under Cygwin
lib/Net/Ping.pm       - ECONREFUSED is EAGAIN under Cygwin
lib/Pod/Find.pm       - Set 'pods' dir
lib/Pod/Perldoc/ToMan.pm - '-c' switch for pod2man
lib/Pod/Perldoc.pm    - Use 'less' pager, and use .exe extension
lib/Term/ANSIColor.pm - Cygwin terminal info
lib/perl5db.pl        - use stdin not /dev/tty
utils/perlbug.PL      - Add CYGWIN environment variable to report
Тесты модулей Perl
dist/Cwd/t/cwd.t
ext/Compress-Zlib/t/14gzopen.t
ext/DB_File/t/db-btree.t
ext/DB_File/t/db-hash.t
ext/DB_File/t/db-recno.t
ext/DynaLoader/t/DynaLoader.t
ext/File-Glob/t/basic.t
ext/GDBM_File/t/gdbm.t
ext/POSIX/t/sysconf.t
ext/POSIX/t/time.t
ext/SDBM_File/t/sdbm.t
ext/Sys/Syslog/t/syslog.t
ext/Time-HiRes/t/HiRes.t
ext/Win32/t/Unicode.t
ext/Win32API-File/t/file.t
ext/Win32CORE/t/win32core.t
lib/AnyDBM_File.t
lib/Archive/Extract/t/01_Archive-Extract.t
lib/Archive/Tar/t/02_methods.t
lib/ExtUtils/t/Embed.t
lib/ExtUtils/t/eu_command.t
lib/ExtUtils/t/MM_Cygwin.t
lib/ExtUtils/t/MM_Unix.t
lib/File/Compare.t
lib/File/Copy.t
lib/File/Find/t/find.t
lib/File/Path.t
lib/File/Spec/t/crossplatform.t
lib/File/Spec/t/Spec.t
lib/Net/hostent.t
lib/Net/Ping/t/110_icmp_inst.t
lib/Net/Ping/t/500_ping_icmp.t
lib/Net/t/netrc.t
lib/Pod/Simple/t/perlcyg.pod
lib/Pod/Simple/t/perlcygo.txt
lib/Pod/Simple/t/perlfaq.pod
lib/Pod/Simple/t/perlfaqo.txt
lib/User/grent.t
lib/User/pwent.t

Ошибки в Cygwin

Поддержка обмена реальными и эффективными идентификаторами пользователей и групп неполная. В WinNT Cygwin предоставляет setuid(), seteuid(), setgid() и setegid(). Однако требуются дополнительные вызовы Cygwin для управления маркерами доступа WinNT и контекстами безопасности.

АВТОРЫ

Чарльз Уилсон <cwilson@ece.gatech.edu>, Эрик Фифер <egf7@columbia.edu>, Александр Смишлаев <als@turnhere.com>, Стивен Морок <newspost@morlock.net>, Себастьен Барр <Sebastien.Barre@utc.fr>, Теун Бергерс <burgers@ecn.nl>, Геррит П. Хазе <gp@familiehaase.de>, Рейни Урбан <rurban@cpan.org>, Ян Дюбуа <jand@activestate.com>, Джерри Д. Хедден <jdhedden@cpan.org>.

История

Последнее обновление: 2012-02-08

© 1993–2020 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.28.3/perlcygwin

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API