Spec-Zone.ru › Perl 5.30

perlmacosx

СОДЕРЖАНИЕ

  • НАЗВАНИЕ
  • СИНОПСИС
  • ОПИСАНИЕ
    • Префикс установки
    • Поддержка SDK
    • Поддержка универсальных бинарников
    • Поддержка 64-битной PPC архитектуры
    • libperl и Предвязка
    • Обновление Perl от Apple
    • Известные проблемы
    • Cocoa
  • Начать с нуля
  • АВТОР
  • ДАТА

НАЗВАНИЕ

perlmacosx - Perl под Mac OS X

СИНОПСИС

Этот документ кратко описывает Perl под Mac OS X.

curl -O http://www.cpan.org/src/perl-5.30.3.tar.gz
tar -xzf perl-5.30.3.tar.gz
cd perl-5.30.3
./Configure -des -Dprefix=/usr/local/
make
make test
sudo make install

ОПИСАНИЕ

Последняя версия Perl (5.30.3 на момент написания) собирается без изменений под всеми версиями Mac OS X начиная с 10.3 "Panther".

Для создания собственной версии Perl вам потребуется 'make', который входит в состав инструментов разработчика Apple – также известен как Xcode. Начиная с Mac OS X 10.7 "Lion", его можно загрузить отдельно как пакет 'Инструменты командной строки' непосредственно с https://developer.apple.com/downloads/ (вам понадобится бесплатная учетная запись для входа), или как часть набора Xcode, доступного бесплатно в App Store. Xcode — довольно большой пакет, поэтому, если вы его уже не имеете или вам он не очень нужен, рекомендуем загрузить 'Инструменты командной строки' отдельно по ссылке выше. Если вы хотите сделать это изнутри Xcode, перейдите в Xcode -> Настройки -> Загрузки и выберите опцию 'Инструменты командной строки'.

Между Mac OS X 10.3 "Panther" и 10.6 "Snow Leopard", пакет 'Инструменты командной строки' назывался 'инструменты Unix' и обычно поставлялся на установочных DVD дисках Mac OS.

Более ранние версии Mac OS X (10.2 "Jaguar" и более ранние) не включали полностью потокобезопасную libc, поэтому потоковая обработка не полностью поддерживается. Кроме того, более ранние версии включали ошибочную libdb, поэтому некоторые тесты DB_File известны тем, что они терпят неудачу на этих версиях.

Префикс установки

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

Использование префикса установки '/usr' приведет к структуре каталогов, которая дублирует стандартную структуру Perl от Apple, с основными модулями, хранящимися в '/System/Library/Perl/${version}', модулями CPAN, хранящимися в '/Library/Perl/${version}', и добавлением '/Network/Library/Perl/${version}' в @INC для модулей, хранящихся на файловом сервере и используемых многими Mac.

Поддержка SDK

Сначала экспортируйте путь к SDK в среду выполнения:

export SDK=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk

Пожалуйста, убедитесь, что версия SDK (то есть числа перед '.sdk') соответствует вашей системе (в данном случае Mac OS X 10.8 "Mountain Lion"), так как возможно установлено более одной SDK. Также убедитесь, что этот путь существует в вашей системе, и если нет, убедитесь, что SDK правильно установлен, поскольку он должен поставляться с пакетом 'Инструменты командной строки', упомянутым выше. Наконец, если у вас более старая Mac OS X (10.6 "Snow Leopard" и ниже) с Xcode 4.2 или ниже, путь к SDK может быть таким: '/Developer/SDKs/MacOSX10.3.9.sdk'.

Вы можете использовать SDK, экспортируя некоторые дополнения к переменным конфигурации Perl 'ccflags' и '..flags':

./Configure -Accflags="-nostdinc -B$SDK/usr/include/gcc \
                       -B$SDK/usr/lib/gcc -isystem$SDK/usr/include \
                       -F$SDK/System/Library/Frameworks" \
            -Aldflags="-Wl,-syslibroot,$SDK" \
            -de

Поддержка универсальных бинарников

Примечание: начиная с Mac OS X 10.6 "Snow Leopard", Apple поддерживает только процессоры Intel. Это означает, что вы можете безопасно пропустить этот раздел, если у вас есть более старый компьютер Apple, работающий на ppc, или если вы хотите создать бинарник Perl с обратной совместимостью.

Вы можете скомпилировать Perl как универсальный бинарник (сгенерированный как для ppc, так и для intel). В Mac OS X 10.4 "Tiger" необходимо экспортировать вариант 'u' SDK:

export SDK=/Developer/SDKs/MacOSX10.4u.sdk

Mac OS X 10.5 "Leopard" и выше не требуют варианта 'u'.

В дополнение к флагам компилятора, используемым для выбора SDK, добавьте флаги для создания универсального бинарника:

./Configure -Accflags="-arch i686 -arch ppc -nostdinc               \
                        -B$SDK/usr/include/gcc                      \
                       -B$SDK/usr/lib/gcc -isystem$SDK/usr/include  \
                       -F$SDK/System/Library/Frameworks"            \
            -Aldflags="-arch i686 -arch ppc -Wl,-syslibroot,$SDK"   \
            -de

Помните, что эти настройки компилятора и компоновщика также будут использоваться при компиляции модулей CPAN. Для компиляции модулей XS как универсального бинарника все библиотеки, к которым он ссылается, также должны быть универсальными бинарниками. Системные библиотеки, включенные Apple в 10.4u SDK, все универсальные, но установленные пользователем библиотеки могут потребовать повторной установки как универсальные бинарники.

Поддержка 64-битной PPC архитектуры

Следуйте инструкциям в INSTALL, чтобы скомпилировать Perl с поддержкой 64-битных целых чисел (use64bitint) или и 64-битных целых чисел, и 64-битного адресования (use64bitall). В последнем случае получившийся бинарник будет работать только на устройствах на базе G5.

Поддержка 64-битного адресования является экспериментальной: некоторые аспекты Perl могут быть опущены или содержать ошибки. Обратите внимание на сообщения, выведенные Configure, для получения дополнительной информации. Используйте https://github.com/Perl/perl5/issues для отправки отчета о проблеме в случае возникновения трудностей.

При создании 64-битных модулей вы несете ответственность за обеспечение поддержки 64-битных внешних библиотек и фреймворков: если этого нет, сборка модуля может показаться успешной, но попытки использования модуля приведут к ошибкам динамической компоновки во время выполнения и последующему провалу тестов. Вы можете использовать file для обнаружения архитектур, поддерживаемых библиотекой:

$ file libgdbm.3.0.0.dylib 
libgdbm.3.0.0.dylib: Mach-O fat file with 2 architectures
libgdbm.3.0.0.dylib (for architecture ppc):      Mach-O dynamically linked shared library ppc
libgdbm.3.0.0.dylib (for architecture ppc64):    Mach-O 64-bit dynamically linked shared library ppc64

Обратите внимание, что эта проблема препятствует созданию многих специфичных для Macintosh модулей CPAN (Mac::*), так как необходимые фреймворки Apple не предоставляют поддержку PPC64. Аналогично, загрузки из Fink или Darwinports вряд ли обеспечат поддержку 64-бит; библиотеки должны быть пересобраны из исходного кода с соответствующими флагами компилятора и компоновщика. Для получения дополнительной информации см. руководство Apple по переходу на 64-битную архитектуру http://developer.apple.com/documentation/Darwin/Conceptual/64bitPorting/index.html.

libperl и Предвязка

Mac OS X поставляется с динамически загружаемой libperl, но по умолчанию для этого выпуска компилируется статическая libperl. Причина этого — предвязка. Динамические библиотеки могут быть предварительно связаны с определенным адресом в памяти для уменьшения времени загрузки. Для этого необходимо знать расположение и размер всех ранее загруженных библиотек. Apple собирает эту информацию как часть своего общего процесса построения ОС, и поэтому имеет к ней лёгкий доступ при сборке Perl, но обычным пользователям потребовалось бы приложить значительные усилия для получения необходимой информации для предвязки.

Вы можете переопределить значение по умолчанию и создать общую libperl, если хотите (Configure ... -Duseshrplib).

В Mac OS X 10.4 "Tiger" и более новых версиях для непосвязанных библиотек практически нет снижения производительности. Более ранние версии будут испытывать более длительное время загрузки по сравнению со статической библиотекой или предварительно связанной динамической библиотекой Apple.

Обновление Perl от Apple

Короче говоря — не делайте этого, по крайней мере, без *очень* веской причины. Ваши скрипты могут также начинаться с «#!/usr/local/bin/perl», как и с «#!/usr/bin/perl». Скрипты, предоставляемые Apple и другими третьими сторонами в составе установочных пакетов, обычно тестировались только с /usr/bin/perl, установленным Apple.

Если вы обнаружите, что вам нужно обновить системный Perl, следует обратить внимание на вопрос статических и динамических библиотек. Если вы обновитесь с помощью стандартной статической libperl, вы обнаружите, что динамическая libperl, поставляемая Apple, не будет удалена. Если обе библиотеки присутствуют при построении приложения, которое ссылается на libperl, ld будет по умолчанию ссылаться на динамическую библиотеку. Таким образом, если вам нужно заменить динамическую libperl Apple статической libperl, вам нужно убедиться, что вы удалили старую динамическую библиотеку после установки обновления.

Известные проблемы

Если вы установили дополнительные библиотеки, такие как GDBM через Fink (то есть у вас есть библиотеки в /sw/lib), или libdlcompat в /usr/local/lib, вам может потребоваться быть особенно внимательным при запуске Configure, чтобы не запутать Configure и Perl в отношении того, какие библиотеки использовать. Запутаетесь вы поймёте по ошибкам "dyld" о проблемах с символами, например, во время "make test". Самый безопасный способ — запустить Configure так:

Configure ... -Uloclibpth -Dlibpth=/usr/lib

чтобы Configure искал только системные библиотеки. Если у вас есть некоторые дополнительные каталоги библиотек, которые вы действительно хотите использовать (например, более новые библиотеки Berkeley DB в системах до Panther), добавьте их в libpth:

Configure ... -Uloclibpth -Dlibpth='/usr/lib /opt/lib'

По умолчанию компиляция Perl в статическом формате может вызвать проблемы с сложными приложениями, такими как Tk: в этом случае рассмотрите компиляцию Perl как динамическую библиотеку

Configure ... -Duseshrplib

но помните, что в этом случае придётся заплатить за время запуска (см. выше «libperl и Предвязка»).

Начиная с Tiger (Mac OS X 10.4), Apple предоставили нерабочие файлы локали для локали eu_ES (баскский язык — Испания). В предыдущих версиях Perl это приводило к сбоям в тесте lib/locale. Эти сбои были подавлены в текущей версии Perl путём отключения тестирования локали. Если вам нужно использовать локаль eu_ES, обратитесь в службу поддержки Apple.

Cocoa

Есть два способа использования Cocoa из Perl. Модуль PerlObjCBridge Apple, включенный в Mac OS X, может использоваться автономными скриптами для доступа к классам и объектам Foundation (то есть не графическим).

Альтернативой является CamelBones, фреймворк, позволяющий получить доступ к классам и объектам как Foundation, так и AppKit, так что полные графические приложения могут быть созданы в Perl. CamelBones можно найти на SourceForge по адресу http://www.sourceforge.net/projects/camelbones/.

Начать с нуля

К сожалению, довольно легко каким-то образом серьёзно сломать Perl Mac OS X. Если всё остальное не работает, и вы действительно, РЕАЛЬНО хотите начать с нуля и удалить даже установку Apple Perl (которая каким-то образом повредилась), следующие инструкции должны помочь. Подумайте дважды, прежде чем выполнять эти инструкции: они очень похожи на проведение нейрохирургии себе. Без анестезии. Мы не будем исправлять вашу систему, если вы сделаете это.

Сначала избавимся от libperl.dylib:

# cd /System/Library/Perl/darwin/CORE
# rm libperl.dylib

Затем удалите все файлы .bundle, которые вы найдете в следующих каталогах:

/System/Library/Perl
/Library/Perl

Вы можете найти их, например, так:

# find /System/Library/Perl /Library/Perl -name '*.bundle' -print

После этого вы можете скопировать Perl с носителя вашей операционной системы (вам потребуется как минимум /System/Library/Perl и /usr/bin/perl), или перестроить Perl из исходного кода с Configure -Dprefix=/usr -Duseshrplib ПРИМЕЧАНИЕ: -Dprefix=/usr замена системного Perl работает намного лучше с Perl 5.8.1 и более поздними версиями, в Perl 5.8.0 настройки были не совсем корректны.

"Pacifist" от CharlesSoft (http://www.charlessoft.com/) — удобный способ извлечь двоичные файлы Perl с носителя ОС, без необходимости переустановки всей ОС.

АВТОР

Это README было написано Sherm Pendley <sherm@dot-app.org>, а затем обновлено Dominic Dunlop <domo@computer.org> и Breno G. de Oliveira <garu@cpan.org>. Рецепт "Начать с нуля" был внесён John Montbriand <montbriand@apple.com>.

ДАТА

Последнее изменение 2013-04-29.

© 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.30.3/perlmacosx

Spec-Zone.ru

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