区分大小写的系统上安装 Adobe 系列真的不可能吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
phoulx
V2EX    macOS

区分大小写的系统上安装 Adobe 系列真的不可能吗?

  •  
  •   phoulx 2020-07-06 22:39:28 +08:00 5542 次点击
    这是一个创建于 1922 天前的主题,其中的信息可能已经有所发展或是发生改变。
    上次抹盘升级 Catalina 的时候,故意选择了 case-sensitive (并非工作需要,是觉得这样比较舒服),一直用着也没问题,像 OneDrive 和 Steam,虽然不能直接用,但 app 本身是可以直接装的,要另外建一个 case-insensitive Volume,再软链接一下文件夹,就可以正常使用。
    但 Adobe 系列真是恶心了,官网下载的 dmg,打开後直接不能装,提示不支持 case-sensitive Volume,让我重选一个 Volume,可下面就一个「 Quit 」,根本不给我选择安装到哪个 Vlume 。

    在网上搜到有人给了解决方案,不过是好几年前了: https://github.com/tzvetkoff/adobe_case_sensitive_volumes
    大致是通过创建一个 SparseBundle Volume,然後 Makefile 编译一个文件以欺骗 Adobe 的检查宗卷大小写的操作。我照着步骤尝试了下,并且参考了两位网友的改进,但最终还是失败,可能原因是所用到的 FSGetVolumeParms 方法已经失效,不知道 macOS 现在有什么 API 可以获取磁盘信息,也不清楚 Adobe 现在是如何检查分区的。

    因为对 macOS 系统层面不熟悉,所以基本放弃了。但要我抹盘重新选择不区分大小写,肯定是不可能的。现在打算开一个 case-insensitive Volume 新装一个 macOS beta,再在上面装 Adobe 系列,顺便体验一下 Big Sur 吧。
    第 1 条附言    2020-07-07 14:18:01 +08:00

    感谢@des 的建议,我在新开的case-insensitive Volume装了另一个macOS系统(尝试装Big Sur失败,所以还是装了Catalina),并在其上安装了Lightroom(过程中自动给我装了Creative Clouds),之後回到原来的系统,将新系统/Applications/Lightroom.app复制过来,就直接可以使用,但是不能更新,因为更新由Creative Clouds来做。

    所以我又将Creative Clouds那一堆文件(包括/Applications/Utilities和/Library/Application Support/Adobe两个地方,如果单独复制主程序则无法打开)复制到原系统的相应位置,也可以正常使用,但是下载新app如Photoshop会报错,因为默认的下载位置属于case-sensitive Volume。

    这时需打开Creative Clouds的设置,将安装位置改为某个case-insensitive Volume文件夹(其後不能再改回来),就可以在Creative Clouds界面下载安装其他apps了,问题得到解决(至少表面上)。

    所以,目前在区分大小写的系统上安装使用Adobe系列是可行的。方法:

    • 如果要用到某一个app(如Lightroom),并且不需更新,那从另一个安装好Adobe的系统(可以是另一个宗卷、虚拟机或另一台电脑)将所要的app复制过来即可使用;
    • 如果要用到一系列Adobe apps,或者需要自带的程序更新,那么最好从另一个安装好Adobe的系统将Creative Clouds及相关文件复制到原系统,设置好安装路径,再经由Creative Clouds安装即可。

    赞美太阳!

    26 条回复    2020-07-21 15:59:01 +08:00
    vk42
        1
    vk42  
       2020-07-06 22:45:12 +08:00
    这个真是的 MacOS 的一个大槽点,设计简直无语了……
    zvcs
        2
    zvcs  
       2020-07-06 22:46:38 +08:00 via iPhone
    区分大小写的磁盘分区也不能安装战网。
    shiltian
        3
    shiltian  
       2020-07-06 22:53:13 +08:00   4
    @vk42 我认为这个不是 macOS 的问题,而是应用程序的问题。case-sensitive 不是简单的我们理解的英语的大小写,请参考 https://www.quora.com/Why-does-OS-X-choose-to-have-a-case-insensitive-file-system-instead-of-a-case-sensitive-one
    pocarisweat
        4
    pocarisweat  
       2020-07-07 00:03:40 +08:00
    @tianshilei1992 学习了,多谢
    vk42
        5
    vk42  
       2020-07-07 00:16:17 +08:00
    @tianshilei1992 不太赞同这个问题仅仅是应用的锅,而且这和字符集没关系啊
    可以参考下 Win 10 的做法,NTFS 本质是 case sensitive 的,但是通过 API 层提供了 case insensitive 的语义来保持兼容性。
    ipwx
        6
    ipwx  
       2020-07-07 00:19:55 +08:00
    @vk42 这样慢吧。。。
    ipwx
        7
    ipwx  
       2020-07-07 00:20:19 +08:00
    u1s1 一个 case insensitive 的文件系统你把它当 case sensitive 用不就好了,为什么一定要倒过来呢?
    vk42
        8
    vk42  
       2020-07-07 00:29:34 +08:00
    @ipwx 这和慢不慢有什么关系,无非是在文件系统层统一化还是在 API 层统一化。Windows 默认行为都是 case insensitive 的,只有 WSL 等需要 case sensitive 才会用
    怎么把 case insensitive 的文件系统当 case sensitive 用?同时有 case, Case 两个文件,你要给 Case 起个别名?
    lxilu
        9
    lxilu  
       2020-07-07 00:42:27 +08:00 via iPhone
    @vk42 不完全是 API 兼容吧,NTFS 能设置文件夹 CI/CS 的。
    phoulx
        10
    phoulx  
    OP
       2020-07-07 00:49:58 +08:00
    @vk42 他的意思大概是让用户自己避免这种文件命名
    vk42
        11
    vk42  
       2020-07-07 00:50:14 +08:00
    @lxilu 不清楚你说的能设置文件夹 CI/CS 和 API 兼容有什么关系……
    phoulx
        12
    phoulx  
    OP
       2020-07-07 00:52:36 +08:00
    @ipwx 因为生命在于折腾当时想着即使出问题也应该可以解决,就像 OneDrive 那样软链接啥的,谁料到 Adobe 完全不给人机会
    des
        13
    des  
       2020-07-07 01:28:47 +08:00
    @phoulx
    真的是烦他们这种的,你找个同样版本的 macos
    在虚拟机里面装好了,把新加的文件复制出来就完事了
    des
        14
    des  
       2020-07-07 01:37:57 +08:00
    贴一下,有这几个地方需要复制
    /Library/Application Support/Adobe
    /Library/Internet Plug-Ins/AdobeAAMDetect.plugin
    以及 Applications 里面的主程序和 Utilities

    好像是还有一个文件,需要复制出来,不然每次会弹提示,不过不影响使用
    另外推荐一下 Krita
    phoulx
        15
    phoulx  
    OP
       2020-07-07 02:14:21 +08:00
    @des 谢谢,我今天就在想是不是从安装好的机器复制 app 出来就可以用,回头试试。然後我主要用 Lightroom,管理照片方便。
    alphatoad
        16
    alphatoad  
       2020-07-07 02:32:29 +08:00 via iPhone
    Case sensitive 应当是 case insensitive 子集或者说 narrower version,为什么应用程序不默认 case sensitive ?这样应当总是安全的
    shiltian
        17
    shiltian  
       2020-07-07 08:55:31 +08:00
    @vk42 这个问题难道不应该是,应用程序应该根据 volumes 是否是 case-sensitive 做不同的操作吗?为什么应用程序一定要假设 volumes 是 case-insensitive 的呢?应用程序应该调用 OS 提供的 API,那么既然 volumes 是 case-sensitive 的,为什么要提供一套 case-insensitive 的 API ?
    shutongxinq
        18
    shutongxinq  
       2020-07-07 09:07:31 +08:00
    希望这波 macOS 大换代把这个 case-insensitive 的问题理顺了。case-insensitive 真的蛋疼。
    jin7
        19
    jin7  
       2020-07-07 09:40:24 +08:00
    一切都默认 就很轻松了
    Mutoo
        20
    Mutoo  
       2020-07-07 10:05:36 +08:00
    Steam 的问题之前也遇到了:
    https://blog.mutoo.im/2017/09/caveats-with-filesystem/

    「装了 Steam 后发现怎么也打不开,一直卡在登陆界面。通过终端运行 Steam,看到了打印出来的日志:

    Errors in public/subpanelwelcomeintro.res:
    error loading file 'public/subpanelwelcomeintro.res', no such file
    Errors in public/subpanelwelcomecreatenewaccount.res:
    error loading file 'public/subpanelwelcomecreatenewaccount.res', no such file
    Errors in public/subpanelwelcomecreatenewaccountaccountname.res:
    error loading file 'public/subpanelwelcomecreatenewaccountaccountname.res', no such file
    Errors in public/subpanelwelcomecreatenewaccountemail.res:
    error loading file 'public/subpanelwelcomecreatenewaccountemail.res', no such file
    ...
    才发现 Steam 的加载器全部以小写文件名加载文件,而目录中的文件名则是驼峰式的,( e.g. SubPanelWelcomeIntro.res )。只好暂时写个脚本将所有文件名转成小写,终于可以正常打开 Steam 了。」
    ipwx
        21
    ipwx  
       2020-07-07 10:41:14 +08:00
    @vk42

    > 怎么把 case insensitive 的文件系统当 case sensitive 用?同时有 case, Case 两个文件,你要给 Case 起个别名?

    我的意思是你无论自己创建文件,还是写程序创建文件,都避免创建这种不同 case 相同名称的文件。如果你自己恪守这种准则,那么日常体验中不会感觉它是 case insensitive 的文件。这就是我所谓的“把 case insensitive 的文件系统当 case sensitive 用”。实际上这是一种良好而且必要的行为准则,如果你还要用 Windoge 的话。而且你写程序的话,保证 Windoge 通用性也是好习惯吧?

    > 这和慢不慢有什么关系,无非是在文件系统层统一化还是在 API 层统一化。

    如果 FS 底层没有记录 case insensitive 的信息,你要让 FS 在应用层面去寻找相同文件名,那么你就需要 O(n) 的比对。不然就可以通过散列等方式优化寻址。当然,各个 FS 有没有做我不知道,但是至少这种时间开销上的差距,理论上是存在的。
    vk42
        22
    vk42  
       2020-07-07 10:42:43 +08:00
    @tianshilei1992 主要是兼容性问题,默认系统是 CI 的话,有些应用可能对文件名大小写没那么注意,举个例子一个 app 在一个地方用 Case.txt 为文件名写出去的文件,另一个地方按 case.txt 打开,在 CS 的系统上就会报找不到文件……
    vk42
        23
    vk42  
       2020-07-07 10:54:46 +08:00
    @ipwx
    这个你得跟 Adobe 和 Steam 他们说去啊,用户又没得选……

    这个性能问题确实可能存在,不太清楚 NTFS 实际怎么实现的,应该是在文件 metadata 里面加上 CI 信息。看了下 WINE 在 CS 文件系统上实现时也有类似问题: https://wiki.winehq.org/Case_Insensitive_Filenames
    shiltian
        24
    shiltian  
       2020-07-07 11:01:26 +08:00
    @vk42 所以说还是应用程序的问题,是应用程序本身就没有按照系统的规则来…
    MaxLi77
        25
    MaxLi77  
       2020-07-07 11:35:48 +08:00
    没必要全盘区分大小写,apfs 可以分配一块共享的 区分大小写的 空间。开发者自己程序不规范,你也没法解决,别给自己找麻烦。。
    TrickerPan
        26
    TrickerPan  
       2020-07-21 15:59:01 +08:00
    @ipwx

    你不是程序猿吧?

    1. 实际程序在编译的时候,大写和小写区别很大,case insensitive 创建文件夹默认全字母小写,你认为你的文件名是驼峰,实际上呵呵呵。
    2. 现在服务器基本都是 Linux 的,用了 CVS 自动帮你转换了还行,不转换的话就很有意思了。我遇到过有人用 case insensitive,创建文件的时候,手快了全打成了小写,然后重命名了,传到服务器上死活找不到这个文件了。结果看了下 log,人家在服务器上还是小写。
    3. 不要说规范啊、习惯啊什么的,谁还没个手误的时候?

    所以 case insensitive 不能当作 case sensitive 来用。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1029 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 18:37 PVG 02:37 LAX 11:37 JFK 14:37
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86