Unix包管理:创业者必学的高效技术运维技能
|
Unix包管理:创业者必学的高效技术运维技能 去年1月,我给「青藤笔记」做视觉系统迭代时,发现他们的前端构建链路卡在npm install——37个依赖包,平均安装耗时217秒,其中node-gyp重编译4次失败。运维同事甩给我一个.tar.gz手动解压脚本,说“这比apt快”。我当场用MacPorts装了yarn 1.22.19,整个CI流程压缩到83秒。新技术就是能省下每天19分钟——够画3版登录页草图。 我试过用Homebrew cask install Sketch——结果把Sketch 92.4的插件沙盒权限搞崩了,团队设计师集体弹出“Plugin host crashed”警告框。查日志才发现cask默认不校验plist签名,而Sketch从91版起强制校验。最后靠brew uninstall --force sketch && brew tap-new adrien/graphics && brew install adrien/graphics/sketch@92.3才救回来。这种坑没人写进文档,就卡在GitHub Issues第47页,带时间戳:2023-01-14 02:18 UTC。 Unix包管理:创业者必学的高效技术运维技能
文章配图,仅供参考 去年1月17日深夜,我远程接入「云笺AI」的服务器——他们用Debian 12,但Python环境混着pyenv、pipx和system apt安装的wheel包。runserver报错:ModuleNotFoundError: No module named 'PIL'。查了1小时,发现是apt安装的python3-pil(版本9.2.0)和pipx install pillow(10.1.0)共存冲突,后者被前者覆盖但未卸载。我删掉/usr/lib/python3/dist-packages/PIL,重装pipx包,系统立刻吐出167行DeprecationWarning——原来pillow 10.x默认禁用JPEG2000支持,而他们OCR模块硬依赖这个编码器。新技术真香?香在解决得快,但香在你敢不敢删掉那行“# DO NOT REMOVE”的注释。Linux发行版之间包命名规则能差出三年工期。Ubuntu 22.04叫libpq-dev,AlmaLinux 9叫postgresql-server-devel,macOS Homebrew却叫postgresql@15——连主版本号都捆死了。我上个月帮「墨流苏」部署OCR服务,在CI配置里写apt-get install libpq-dev,Pipeline在Ubuntu跑通,切到Rocky Linux直接报“E: Unable to locate package”。改成dnf install postgresql-devel,又提示版本不匹配——因为他们的pg_stat_statements扩展要pg14,而repo里只有pg15。最后手动下载rpm -Uvh postgresql14-devel-14.10-1PGDG.rhel8.x86_64.rpm,sha256校验和多输了一个f。这哪是运维?这是包管理考古。 我测过8种方式更新OpenSSL:apt upgrade openssl、brew upgrade openssl@3、dnf update openssl-libs、portsnap fetch extract && cd /usr/ports/security/openssl && make install clean……最离谱的是FreeBSD 13.2里,pkg install openssl会装OpenSSL 3.0,但systemctl启动的服务默认读/usr/lib/libssl.so.11——也就是1.1.1w。结果nginx重启失败,错误日志第三行写着“symbol SSL_CTX_set_ciphersuites version OPENSSL_3.0.0 not defined”。这种错,Stack Overflow最高票答案发布于2021年,标记为“solved”,实际只适用于OpenSSL 3.0.2以上。我改用pkg install openssl3,再ln -sf /usr/local/lib/libssl.so.3 /usr/lib/libssl.so.11,nginx吐出404而非502——至少能进首页了。 Unix包管理不是选包工具,是选信任半径。 去年1月,我盯着brew doctor输出的327行“Warning:”发呆——里面11条关于/Library/Developer/CommandLineTools,8条指向/opt/homebrew/bin下的重复软链,还有1条藏在最后一行:“Warning: Unbrewed .pc files were found in /usr/local/lib/pkgconfig.” 我删了它,Xcode suddenly refused to link CoreML framework。查Apple开发者论坛,才知道这是Xcode 14.2的一个已知bug:pkg-config路径污染触发编译器符号解析失效。最终解决方案是保留那个.pc文件,但把HOMEBREW_NO_ENV_HINTS=1加进.zshrc。这种事不会写进任何教程里。技术运维的真相?你永远在补昨天别人没修完的洞。 我不知道怎么教人不踩这些坑——连我自己上周还在Arch Linux上把pacman -Syu和pacman -Syy搞混,导致本地数据库签名失效,reboot后键盘布局全乱。或许该先教怎么读error log里的第一个冒号右边的词。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

