V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
haoyli
V2EX  ›  程序员

MacOS 13.3.1 无法修改 /usr/bin 权限

  •  
  •   haoyli · Apr 9, 2023 · 4913 views
    This topic created in 1120 days ago, the information mentioned may be changed or developed.
    设备是刚出的 Mac Mini M2 丐版。系统是最新的 MacOS 13.3.1 Xcode Command Line Tools 也是最新的。

    起因是刚升了系统之后,发现在命令行每次 cd ,都会额外出现一行 "env: python: No such file or directory",去 Google 一下说最新的 MacOS 13 移除了默认的 python ,而是替换成了 python3

    于是想要 sudo ln -s /usr/bin/python3 /usr/bin/python 创建一个软链接,但报 "Read-only file system" 错误。

    去 Google 一下说是要关闭 SIP 保护,于是重启进入 Recovery 模式执行 csrutil disable 后并确认确实关闭了。重启后依然报上面的错误。

    在文件管理器中进入到 /usr 目录,查看详细属性,发现在 Sharing & Permissions 一项中,有三个用户,分别是 system[Read & Write] , wheel[Read only], everyone[Read only],无论是修改 everyone 的权限还是添加新用户,都报 "The operation can’t be completed because you don’t have the necessary permission."

    翻了很久 Google 也没找到正经可用的方案,拜托大家帮忙看看🙏🏻
    24 replies    2023-04-10 16:06:03 +08:00
    yinmin
        1
    yinmin  
       Apr 9, 2023 via iPhone
    ln -s /usr/bin/python3 usr/local/bin/python
    jorneyr
        2
    jorneyr  
       Apr 9, 2023
    好像这个问题无解,Sequel Ace.app 格式化 SQL 字符串也需要在 /usr/bin 中安装 PHP ,很多人也尝试过了,权限不允许。
    thelastline
        3
    thelastline  
       Apr 9, 2023
    现在的 OSX 使用了“签名系统卷”这一玩意,在找不到其他可用的解决方法的情况下可以研究一下怎么去除只读和怎么重新签名系统卷
    dingdangnao
        4
    dingdangnao  
       Apr 9, 2023 via iPhone
    alias python=python3 ?
    lslqtz
        5
    lslqtz  
       Apr 9, 2023
    ...你为什么不用 /usr/local/bin?
    churchmice
        6
    churchmice  
       Apr 9, 2023 via Android
    不要一棵树上吊死啊
    学习下 unix 是如何找命令的
    shinonome
        7
    shinonome  
       Apr 9, 2023
    我也觉得用 alias 可以
    ingnoscemihi
        8
    ingnoscemihi  
       Apr 9, 2023
    第一:移除 python2 ,使用 python2 应该是 11 还是 12 就开始了。
    第二:关闭 SIP 也无法更改敏感目录的权限,比如 /usr/bin ,请使用 /usr/local/bin 或者自己加环境变量
    fkdog
        9
    fkdog  
       Apr 9, 2023
    @jorneyr sequel ace 为什么不允许自定义 executable path ,费解噢。
    非的要去读 /usr/bin ,里边的好多工具现在都用不了。
    Adelell
        10
    Adelell  
       Apr 9, 2023 via iPhone
    因为从 macOS Catalina 开始根目录 / 变成 read only 了。拆了个 data 分区出来单独挂载可以 rw 。
    解决办法是关闭 SIP 后第一次重启时执行 $ sudo mount -uw / 注意下一次重启时根目录又会自动变成只读。
    enenlee
        11
    enenlee  
       Apr 9, 2023
    Mac Monterey 就移除了内置的 python2 安装 python2 正确的做法是
    ```bash
    brew install pyenv
    pyenv versions | grep --quiet '2.7.18' || pyenv install 2.7.18
    eval "$(brew shellenv)"
    ln -s "${HOME}/.pyenv/versions/2.7.18/bin/python2.7" "${HOMEBREW_PREFIX}/bin/python"
    enenlee
        12
    enenlee  
       Apr 9, 2023
    不要用 python3 给 python2 建立软连接 他俩就差着一个数字但是完全不兼容
    Adelell
        13
    Adelell  
       Apr 9, 2023 via iPhone
    报 "Read-only file system" 错误显然是分区 mount 的时候没有加 write 参数。
    cz5424
        14
    cz5424  
       Apr 9, 2023 via iPhone
    修改 use/bin 是一个危险行为,这可以理解为苹果的一个保护措施,建议修改.bashrc 或者软连接 Python 到 use/local/bin
    cz5424
        15
    cz5424  
       Apr 9, 2023 via iPhone
    更正 use =》 usr ,输入法补全补错了
    jqtmviyu
        16
    jqtmviyu  
       Apr 9, 2023
    vim ~/.bashrc

    export PATH=/usr/local/Cellar/[email protected]/3.11.2_1/Frameworks/Python.framework/Versions/3.11/bin:$PATH

    alias python=/usr/local/bin/python3
    baobao1270
        17
    baobao1270  
       Apr 10, 2023
    brew install pyenv
    pyenv install 3.11
    pyenv global 3.11.x (把 x 换成小版本号)

    不要用 macOS 系统自带的 Python ,会变得不幸
    xtinput
        18
    xtinput  
       Apr 10, 2023
    多年前就不行了,好像是 macOS10.14 开始的
    现在 macOS 有两个盘,系统盘是快照模式,用户只能操作数据盘
    lybcyd
        19
    lybcyd  
       Apr 10, 2023
    建议别动这里的东西,也不要用自带的软件比如 python 、ruby 。可以自己另外编译 python 或者用 pyenv ,conda 等等。
    webcape233
        20
    webcape233  
       Apr 10, 2023 via iPhone
    建议 brew 安装 python ,不碰系统自带版本
    ZE3kr
        21
    ZE3kr  
       Apr 10, 2023 via iPhone
    因为 /usr/bin 是只读分区,跟 CD 一样,不要尝试改权限了
    haoyli
        22
    haoyli  
    OP
       Apr 10, 2023
    感谢大家的热心回复,结合调研的情况,确实不应该动 /usr/bin 里面的东西, 可以把我想要的 python2 放到 /usr/local/bin 中,能够解决我的问题。谢谢大家。
    haoyli
        23
    haoyli  
    OP
       Apr 10, 2023
    @yinmin 正解,最终的方法,感谢!
    julyclyde
        24
    julyclyde  
       Apr 10, 2023
    @haoyli 按现在的年代来说,你如果遇到 python2 相关的问题,正确的做法不是去填充一个 python2 ,而是淘汰掉用 python2 的程序
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2479 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 08:43 · PVG 16:43 · LAX 01:43 · JFK 04:43
    ♥ Do have faith in what you're doing.