新雪豹用户的 Perl 策略?

标签 perl osx-snow-leopard macports fink

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

5年前关闭。




Improve this question




我即将获得一台新的 iMac。这是我的第一台英特尔 Mac,可能会与 Snow Leopard 一起提供。其他用户会推荐什么作为在这台机器上安装和使用 perl 的正确策略?

我知道我已经阅读了一些关于 Leopard 附带的 Perl 版本(或者它是 CPAN 版本?)的投诉,尽管快速 google 并没有想出太多。

我假设一个好的策略是不理会系统 perl 并安装我自己的,但你会使用什么? Fink,Macports,也许 XAMPP for Mac?

对于以前没有在英特尔 Mac 上使用过 Perl 的人来说,有什么特别的问题吗?

我不完全是一名高级开发人员,但我有很多实用程序脚本和 MySQL 数据库应用程序在我想要保留的旧机器上运行,我的主要工作是 Web 开发。

最佳答案

在使用 Mac OS X 和 perl 多年之后,我提出了一个简单的三部分计划:

  • 源码编译
  • 安装在 /usr/local
  • 永远不要碰系统 perl

  • 学习它。知道。活下去。



    哦,好吧,我会尽力解释。完全接触系统 perl 是一个坏主意,我希望这是显而易见的原因。 Apple 的应用程序、第三方应用程序和操作系统本身期望系统 perl 的行为与系统 perl 一样——有时与系统 perl 完全一样。仅举一个例子,iTunes 安装程序曾包含一个 perl 脚本,其中包含如下代码:
    if ($foo EQ $bar) {
        ....
    }
    

    是的,EQ而不是 eq .信不信由你,这实际上在许多旧版本的 perl 中有效——但在我年轻时天真时安装在系统版本之上的新版 perl 中却不行。结果是我双击 iTunes 安装程序,实际上什么都不会发生。 (嘿,它可能是 a lot worse 。)

    我们可以谈论一下 Apple 显然在那时编写 perl 代码的猴子种类(以及现在质量是否更好),但底线是 /System是苹果的域名。 Attempt no landing there . (多么热门。)

    另一方面,Apple 长期以来一直 promise 不会在 /usr/local 中添加任何内容。 ,同样重要的是,在系统更新期间不要碰任何东西。这是你的安全区。在那里安装你的 perl,在那里安装 CPAN 模块所需的库,等等。

    最后,为什么要从源代码构建?为什么不使用包管理器?这似乎只是脾气暴躁的老人的推理,但我更愿意将其视为来之不易的智慧。 Mac OS X 没有一个占主导地位的包管理系统,更不用说官方/内置的了。所有各种第三方包管理器都与我使用过的每个包管理器都存在相同的问题:有时你想要的软件没有打包,有时它没有按照你想要的方式打包,有时它只是被破坏了等等。除了从源代码构建一些软件之外,还尝试安装软件包是灾难的根源。

    唯一可行的“统一”方法是从源代码构建所有内容。如今,几乎所有常用的 Unix 软件都在 Mac OS X 上构建,无需任何特别努力。 (现在有如此多的 Unix 开发人员使用 Mac OS X 作为他们的个人系统,这很有帮助。)通常只是解压缩、配置、制作、安装。您甚至很少需要指定 /usr/local作为目的地;这是大多数软件的默认设置。

    所以你有它:从源代码编译。安装在 /usr/local .永远不要触摸系统 perl。你不会后悔的。

    关于新雪豹用户的 Perl 策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1992720/

    相关文章:

    macports - Macport self 更新失败

    php/perl 或其他能够自动验证启用智能卡的网站的网络脚本

    perl - 如何在 Perl 脚本中包含所有/部分 "sub modules"?

    perl - 需要在组中查找一个字符串,然后查找单个组(包含字符串)所属的所有组

    php - ImageMagick 在命令行中工作,但是当 exec() 在 php 中它返回 5 和 "incompatible library version"

    c - 为什么 gcc 找不到 GSL?

    perl - 为什么要在 use 语句后添加 LIST?

    Carrierwave 上传遇到 Errno::EEXIST - 文件存在错误

    php - 如何将 plist 文件上传到我的服务器以及我是否需要在服务器端执行任何特殊操作?

    python - 在 Mac 上安装 NumPy 和 Matplotlib 时遇到问题(雪豹)