V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
yolee599
V2EX  ›  Linux

用了一段时间的 Linux ,感觉我有“操作系统洁癖”

  •  
  •   yolee599 ·
    yolee599 · 298 天前 · 9333 次点击
    这是一个创建于 298 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个月前把我的主力电脑系统从 Windows 换成了 ArchLinux ,桌面是 KDE Plasma 。目前使用是没什么问题,但是总有一些地方让我不爽。

    1. 软件 GUI 库太多了

    主要有 GTK ,Qt ,SDL2 ,通常是各种软件装完后,系统装了各种 GUI 库,感觉特别臃肿。这还是官方的包,如果再装一下 AUR 里的包,更加杂。

    2. 各种库的依赖问题

    这是我的一个猜测。我用 pacman -S 安装了若干个包后,再用 pacman -Rs 卸载掉之前安装的包,那也有可能卸载不干净。因为有的包是其他的包的可选依赖,一旦安装了这些可选依赖的包,那他就不算孤立的包了,也就不会被卸载,导致系统越用越臃肿。在 Windows 上我都是用 Geek Uninstaller 卸载软件,相对比较干净。

    3. 安装软件的时候对文件系统的侵入性比较强

    /usr//etc/~/,以及各个子路径都有侵入。在 Windows 上通常是安装到一个独立的文件夹,对文件系统的侵入比较小。

    4. 做嵌入式开发不是很方便

    我主要是做嵌入式开发的。有的烧录工具只有 Windows 系统的,还要装虚拟机,这个倒还好。主要是我要使用串口助手,要记录收发信息到 Log ,一键切换 HEX 和 ASCII 收发,显示时间戳,添加自定义的快捷发送,Windows 上有 SSCOM ,Linux 系统下找不到像这样的工具。

    还有 ssh 工具,像 SecureCRT ,xshell 这种用起来很方便,可以保存会话的用户名和密码,双击一下就直接连上了,还能保存所有输出到日志文件,串口和网络都能用。在 Linux 下主要用 Konsole + ssh 命令,不能保存会话密码,无法保存所有输出到日志文件,要是串口 shell 还要用 minicom 命令,操作比较割裂。

    86 条回复    2023-09-19 02:52:23 +08:00
    ruanimal
        1
    ruanimal  
       298 天前   ❤️ 11
    3. 你是没有看到 windows 用户目录下面的隐藏文件
    idealhs
        2
    idealhs  
       298 天前
    做嵌入式的还是用回 Windows 好了
    shijingshijing
        3
    shijingshijing  
       298 天前   ❤️ 6
    3, Windows 更奇葩,一个程序可能在 Program Files 里面、User 里面、system32 里面到处拉,而且还有可能写注册表,只不过都是暗挫挫的搞的,你没发现而已。绿色软件在 Windows 下面现在可以说是非常稀少了,Linux 反而比较规矩一点,而且 Linux 也有 AppImage 了。
    Ansen
        4
    Ansen  
       298 天前
    4 都影响工作了,还是换回 win 吧
    shijingshijing
        5
    shijingshijing  
       298 天前   ❤️ 1
    Linux 的问题都摆在台面上,Windows 的问题都烂在骨子里,Linux 理论上你可以自己修,不过是人力和时间成本的问题,而 Windows 你只能捏着鼻子用。
    NessajCN
        6
    NessajCN  
       298 天前   ❤️ 6
    linux 做嵌入式开发比 windows 方便太多了,光串口这一项,linux 甚至可以直接打印串口数据不需要任何额外工具,当然你硬要工具也是应有尽有的
    https://wiki.archlinux.org/title/working_with_the_serial_console#Making_Connections
    要 cli 有 cli 要 gui 有 gui
    你都用 arch 了那多看看 archwiki 啊倒是....
    proxychains
        7
    proxychains  
       298 天前   ❤️ 3
    要不要去看看 windows 的注册表
    churchmice
        8
    churchmice  
       298 天前   ❤️ 6
    ssh 你可以把你的.ssh/config 配出花来,你说的这些都能实现
    连串口你用 screen 就可以了,类似这种命令
    screen /dev/ttySX baud_rate,cs8|cs7,ixon|-ixon,ixoff|-

    都不用开啥 putty

    linux 是一个高度可定制化的玩意,但是上手需要你自己倒腾一下,熟练之后比 windows 效率搞多了
    vincexu
        9
    vincexu  
       298 天前   ❤️ 1
    孤儿包不是 -Qtd 就可以查出来删除吗,
    再说 gui 相关的,你熟悉之后可以选配安装啊,我记得 xorg 和 plsma 默认全部,但是可以单独选啊,默认肯定是全局唉。
    不习惯建议还是直接 windows 吧,只不过可能只是你以为的干净而已
    Tink
        10
    Tink  
       298 天前
    用 linux 就要以 linux 的思维用
    Huelse
        11
    Huelse  
       298 天前
    看不到就好了😂
    GeruzoniAnsasu
        12
    GeruzoniAnsasu  
       298 天前
    绿色软件?
    snapd: 我直接分发一个磁盘映像!超绿色
    julyclyde
        13
    julyclyde  
       298 天前
    你这个洁癖略有点过

    1 无所谓啊,能删
    2 autoremove 功能
    3 其实也就 etc 吧。usr 之类的都会被包管理工具删除; Windows 是残留在用户 home 目录和注册表里边,也没什么区别
    4 嵌入式这个行业本身封闭性较强,工具都是成套的。这边如果没有,那也没什么办法
    5 ssh 这个是你的问题。不要保存密码!
    liprais
        14
    liprais  
       298 天前
    windows 用多了
    neroxps
        15
    neroxps  
       298 天前   ❤️ 1
    哈哈,如果楼主看到 windows 的注册表,估计洁癖都犯嘛了。vscode pio 丢到 用户目录下的几十 G 的小文件,删都得删几个小时。
    wangkun025
        16
    wangkun025  
       298 天前
    工作优先。
    missdeer
        17
    missdeer  
       298 天前
    4. 因为 ssh 的正确用法用密钥,然后让你的密钥不需要密码就行了
    duke807
        18
    duke807  
       298 天前 via Android
    我做嵌入式用 gtkterm 图形做串口调试(譬如串口打印、嵌入式 linux 交互)

    高阶一点的场合用自己写的工具:(固件升级、参数配置、波形显示 等)
    https://github.com/dukelec/cdbus_gui
    sinxccc
        19
    sinxccc  
       298 天前
    4. 别跟上游工具链较劲…除非你是超大规模的客户。
    agagega
        20
    agagega  
       298 天前
    第三个问题,其他一些类 Unix 系统会比 GNU/Linux 好一点,像 FreeBSD 至少会区分系统的/bin 和/usr/local/bin. 但传统意义上类 Unix 并没有那么严谨的「包」概念,所以没有采用把包安装到固定位置,再把 bin lib 等链接过去的做法。
    yazinnnn
        21
    yazinnnn  
       298 天前   ❤️ 3
    没有污染到用户目录的问题都不大(指在 home 目录里瞎鸡巴拉屎行为)


    望着我的 home 目录下将近一百个以.开头的文件夹叹道
    zzzsy
        22
    zzzsy  
       298 天前   ❤️ 2
    前三点:用 NixOS
    diagnostics
        23
    diagnostics  
       298 天前
    ssh 自带密码记住的功能啊,再不济用密钥也行,alias ssh='ssh -i xxx.pem'
    QWE321ASD
        24
    QWE321ASD  
       298 天前
    windows 的 username 下面全是各种软件的文件夹啊,和 linux 差不多吧感觉...
    cooper2020
        25
    cooper2020  
       298 天前
    @yazinnnn 每个应用一个. -_-
    tyrantZhao
        26
    tyrantZhao  
       298 天前
    跟一个 os 较啥劲
    whenov
        27
    whenov  
       298 天前
    第二点,用 pacman -Qdttq|sudo pacman -Rns -
    whenov
        28
    whenov  
       298 天前
    第三点,关注下 GoboLinux (我自己没试过
    whenov
        29
    whenov  
       298 天前
    第四点,ssh 免密登录一般是用密钥,不想每次输入命令的话就用 alias ,串口工具不太清楚
    whenov
        30
    whenov  
       298 天前
    @yazinnnn 我现在清理到只有六个哈哈哈:
    .bash_profile
    .bashrc
    .cache
    .config
    .local
    .mozilla
    0o0O0o0O0o
        31
    0o0O0o0O0o  
       298 天前 via iPhone
    你可以试试 NixOS
    weidaizi
        32
    weidaizi  
       298 天前
    关于 1:都由包管理帮你管了,你可以列出哪些是主动安装的,哪些是被动安装的,要卸载也很方便
    关于 2:如果有被依赖,当然不应该被卸载,如果想看看有什么可以真的有啥没被依赖却还在的包,可以 pacman -Qqdt
    关于 3:linux 下可以选择放到公共路径下,也可以是 portable 的,一般自己丢到 /opt 下。包管理安装的一般分散在各个目录,但是有包管理来管理
    关于 4:不太了解,不发表意见
    x77
        33
    x77  
       298 天前
    挺正常的,搞嵌入式的关注效率,对于每个 CPU 、内存、IO 都特别敏感。。。

    但是这个很难管,原生应用直接和操作系统接触,最自由,各种应用都有自己的玩法,自然会这拉点那拉点。除了文件和数据存储不一样,还有看不见的系统交互( API 调用)也不一样,有的高效有低效。想要“干净”的系统和应用真的没可能。

    基于虚拟机或者应用程序框架(平台)的应用好点,应用只和虚拟机或者平台打交道,这种约束力强一点,不可能到处乱拉也能干净卸载,中间层提供的 API 接口也一样的,比较“干净”,不过这类效率没原生的好能力也会受到平台的限制比如支持串口通讯的 App 就很少甚至没有,因为如果平台不支持 App 就很难搞。
    vcn8yjOogEL
        34
    vcn8yjOogEL  
       298 天前 via Android
    一般软件可以用 Flatpak 和 Podman 容器,侵入性较低
    adoal
        35
    adoal  
       298 天前
    关于 3 ,请认真阅读 Filesystem Hierarchy Standard 以及你所用发行版的 packaging guide ,了解这样做的理念。

    当然,你可以不同意。但人家这样设计是有原因的,而不是乱搞。

    你自己编译安装的话,一般默认就是你喜欢的 ./configure --prefix=/some/prefix/that/everything/goes/on
    CEBBCAT
        36
    CEBBCAT  
       298 天前
    如果你不理解它,可以先习惯它
    mokiki
        37
    mokiki  
       298 天前
    1 和 2 两个问题用 Gentoo 可解
    e7
        38
    e7  
       298 天前
    学会忽略这些你认为的“乱七八糟”,专注于工作本身,占不了多少空间的,善用搜索
    garywill
        39
    garywill  
       298 天前
    串口工具 linux 有 cutecom
    wlh233
        40
    wlh233  
       298 天前
    你用 Konsole 的话,Ctrl + Shift + S, Save output to file
    Ctrl + Shift + F2, SSH manager, 只不过功能简单,只是个 .ssh/config 的 GUI
    geekjoehome
        41
    geekjoehome  
       298 天前   ❤️ 4
    楼主的洁癖问题可以用 Fedora 的 Silverblue 版来治。

    我也是前天看到 V2EX 里面一个人的回复才有幸接触到 Silverblue 版( Fedora 官网貌似没大力宣传,藏在网页的最下方),这是一个 immutable (不可变)版的系统,意思是系统本身是绝对不能改变的,你说的那些软件包及相关依赖的安装都是在一个个容器封闭环境里,你不用了可以把创建的容器直接删除就完事了,系统始终洁净如新。

    楼主可以看看 Fedora Silverblue 版下载页面的 documetation (一定要看,否则没概念用起来有诸多麻烦)。里面有说到用 immutable linux 的优势,其中有一点就是防止随着时间推移装的软件越来越多,依赖越来越复杂,系统越来越臃肿…… 甚至 N 久前改了系统里的某些东西自己又不记得了,导致后期会出现某些奇怪问题等(如果用 immutable 版大不了重新创建一个新容器后一切就都恢复了)。

    系统不可变同时带来的就是安全性、稳定性、更顺滑的升级与后退(因为只更换系统,并不像传统系统一样还动到装到系统里的各种包,相当于系统和用户程序隔离的)、自己误操作搞崩 ……


    官网直达: https://fedoraproject.org/silverblue/
    uiosun
        42
    uiosun  
       298 天前
    Unix 影响工作就换回 Windwos

    在不了解 Windows 的文件系统的前提下,不建议发这种帖子。Windwos 的 C 盘为什么会不断的膨胀,光这个问题,文件系统方面,Linux 的透明度就吊打 Windwos 了。
    charlie21
        43
    charlie21  
       298 天前 via Android   ❤️ 1
    Fedora Silverblue 版的这个呢感觉跟自己做一个虚拟机的一个个快照没什么区别
    Ally
        44
    Ally  
       298 天前
    linux 显然比 windows 干净多了。你以为 geek 就帮你卸载干净了,其实还有好多隐藏文件夹,注册表啥的。linux 都这样,你当初 windows 怎么用下去的
    dayeye2006199
        45
    dayeye2006199  
       298 天前
    我感觉 LZ 可能还是不太熟,linux 下面的一些软件的逻辑和趁手的工具是什么。
    比如 SSH ,你要是会写 ssh_config 组合 key 使用的话,方便的很
    xlmo
        46
    xlmo  
       298 天前
    别的不说,SecureCRT 有 Linux 版啊。
    Jaosn
        47
    Jaosn  
       298 天前
    以前用 Android 就有这样的烦恼,现在用 iOS 眼不见为净,真舒服!
    ryan4yin
        48
    ryan4yin  
       298 天前
    我也认为前三点可以被 NixOS 完美 cover ,缺点就是学习成本高了点...

    第 4 点在 NixOS 上会有些问题,不过也不是不能解决.
    ivan_wl
        49
    ivan_wl  
       298 天前
    有洁癖?看看 NixOS
    串口和 ssh 工具可以用 WindTerm ,类似 SecureCRT ,非常强大
    unclemcz
        50
    unclemcz  
       298 天前 via Android
    软件管理可以试试 flatpak
    zx900930
        51
    zx900930  
       298 天前
    Fedora workstation, 部分不干净的应用就 flatpak, 舒服得不行.
    当然我是 SRE/DevOps, 根本不存在上游软件不兼容的问题, 实在不兼容服务器上 fire up 一个 vm 就搞定了.
    azuginnen
        52
    azuginnen  
       298 天前
    眼不见为净,硬盘是用来用的,不是用来炒的
    raptor
        53
    raptor  
       298 天前
    我以为你想玩 LFS
    yuyu01
        54
    yuyu01  
       298 天前
    linux 也有 SecureCRT
    ziseyinzi
        55
    ziseyinzi  
       298 天前
    windows 下连 qq 都会给你装个驱动用来反外挂,原神的反外挂驱动甚至卸载了还在,不过你平时看不到罢了。
    masterclock
        56
    masterclock  
       298 天前
    4. 前面一部分是对的
    大量 MCU 的开发工具都只有 Win 的,keil 、rt-studio 都没 linux 版,甚至 Keil 的 VS code 插件有 Win 、Mac ,就是没有 Linux 版。
    全志的工具链也没有 Linux 版,rockchip 的工具 Linux 版落后一大截。干这种的 Linux 开发还是 WSL 最方便。

    后半部分不太对,Linux 下串口工具等等比 Win 方便多了,WindTerm 没有任何问题。
    tin3w5
        57
    tin3w5  
       298 天前 via iPhone
    单纯的换 Linux 不是万能钥匙,即使是 Linux 也要做好隔离。
    一般情况,我是 Linux 裸系统+常规的基本配置+自己写的一些脚本。安装好浏览器、虚拟机和 docker 就 OK 了,其他的能 docker 就 docker ,不能 docker 的就虚拟机。虚拟机环境配置好之后做模版,装必要的软件,然后拍快照。发现有问题的时候恢复快照就好,不用担心任何问题。你的那些必须在 win 上跑的就扔到 win 虚拟机里,让臭鱼烂虾一锅炖,自己在里面想怎么掐就怎么掐。
    另外,顺带问一下楼主的电脑品牌和型号,我之前的笔记本都过保五六年才配上 Linux 下的驱动,换 Linux 容易,没驱动真闹心。
    xuanhuangguyan
        58
    xuanhuangguyan  
       298 天前
    我不应该看这个帖子,意识到之后,我的洁癖犯了
    yolee599
        59
    yolee599  
    OP
       298 天前
    @tin3w5 公司的电脑,好像是华硕的主板,CPU 是 4 核 Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz ,内存 16GB 。
    tin3w5
        60
    tin3w5  
       298 天前 via iPhone
    @yolee599 卧槽,啥公司?公司提供的电脑还让自己重装系统?我之前的公司都是由 IT 强制装了 AV 、FW 、DLP 、portal……想重装都不行……
    LXGMAX
        61
    LXGMAX  
       298 天前
    电脑比楼主强一些,i5 6500
    当时 Linux 主机编译+Windows 笔记本烧录+MacBook 微信玩得不亦乐乎
    SMB 或者 NFS 中转文件就完事
    yanqiyu
        62
    yanqiyu  
       298 天前
    建议用 silverblue ,开发用容器,专治洁癖
    Corybyte
        63
    Corybyte  
       298 天前
    ssh 可以写 shell 脚本保存密码
    Jirajine
        64
    Jirajine  
       297 天前   ❤️ 1
    1. 其实库就那几个,Linux 下已经尽力在复用了,Windows 是每安装一个软件自带一套。
    2. 你的可选依赖是显示安装的,所以算做显示安装的包。你可以把可选依赖作为依赖包安装,这样会自动卸载,清理孤儿包也很方便。
    3. 恰恰相反,Windows 安装软件装到哪里拉屎的都有,Linux 包管理安装的卸载完全干净,除了残留一些数据,就那几个 xdg 目录,自己清理一下就行,比注册表清爽的多。
    4. Linux 下搞串口比 Windows 方便多了,串口设备作为文件暴露,随便什么终端和各种工具都能自由使用。
    ssh 一般用 ssh config 足够,要高级的可以用 tabby ,功能非常丰富,就是比较臃肿。
    ufo5260987423
        65
    ufo5260987423  
       297 天前   ❤️ 1
    结论,楼主不熟悉 linux ,也不太熟悉 windows
    dog82
        66
    dog82  
       297 天前
    自找虐,嵌入式开发就该老实用 windows
    chingyat
        67
    chingyat  
       297 天前 via iPhone
    op 可以试试各种 immutable 发行版,比如 fedora silverblue/kinoite ,nixos ,guix 之类的.
    DefoliationM
        68
    DefoliationM  
       297 天前
    1. windows 也是,只是你不知道而已。
    2. pacman -Qttd
    3. 用包管理器安装一般都是固定目录。
    4. 不懂,建议用 windows 。
    kenvix
        69
    kenvix  
       297 天前
    你们不会买两个硬盘双系统吗
    vcn8yjOogEL
        70
    vcn8yjOogEL  
       297 天前 via Android
    @charlie21 Silverblue 每次升级都会从头生成一个系统,快照则仅仅只是提供回滚功能而已
    Aluhao
        71
    Aluhao  
       297 天前
    用 FreeBSD 吧, 这方面比 Linux 做的好太多了;
    wtsamuel
        72
    wtsamuel  
       297 天前
    嵌入式没办法,所以我公司电脑主力就是 windows 。
    再带个自己的 mac air 做别的事
    jevonszmx
        73
    jevonszmx  
       297 天前
    说出第三点的,我很怀疑你是不是地球人,起码不是大陆人。
    psuwgipgf
        74
    psuwgipgf  
       297 天前
    @whenov 你把 bash 换成 fish 还能干掉两个
    Adelell
        75
    Adelell  
       297 天前 via iPhone
    换 dwm 感受下,主打一个 simple 。
    zysuper
        76
    zysuper  
       297 天前
    选择 linux 的乐趣,就是在于和各种 bug 、不和谐做 battle ,如果你接受不了这种生活,你可以继续使用 windows 呢
    cy18
        77
    cy18  
       297 天前
    1 、2 算是发行版的问题。
    3. Windows 下面除了 Program Files 、还有 Users ,AppData ,还有注册表,有些软件会往 Windows 目录下塞 DLL 。甚至还有些软件会往你的系统里面添加根证书。国内外厂商都有,国外厂商比较收敛,证书的使用范围都很窄,对安全性影响不大。国内某些厂商那操作可就没那么收敛了。
    4. 这个是使用习惯问题。Windows 的 GUI 程序确实吊打 Linux ,但是 Linux 的 CLI 吊打 Windows 。
    sikaco
        78
    sikaco  
       297 天前
    总结,感觉可以试试 mac 。。。虽然我没用过 mac 做过嵌入式,但是作为类 unix 系统 mac 对 linux 的相关生态应该都是支持的。
    zpf124
        79
    zpf124  
       297 天前
    在如今 部分软件全平台适配结果全按 unix 路径把数据放 ~/.xx 的情况下,以及 electron 流行的年代, 建议楼主看看下面这几个文件夹。

    C:\Users\~\
    C:\Users\~\AppData\Local\
    C:\Users\~\AppData\Roaming\
    moonjourney
        80
    moonjourney  
       296 天前
    NixOS 治好我的系统洁癖症,笔记强迫症,更新焦虑症。。。
    ryan4yin
        81
    ryan4yin  
       296 天前
    @moonjourney #80 +1 我也是,再也不用写笔记记录自己装了些啥东西,改了些啥配置了。
    zisen
        82
    zisen  
       290 天前 via iPhone
    无所谓吧,这些小东西占用的空间也不是很大,学会去忽略这些不必要的担忧,这些残留的小东西并不会对你的工作产生任何的影响,你的操作系统变得很干净了也不会加快你的工作效率。我自己的原则就是,只要这些软件不干扰我想要做的事情,那就不管它们,否则就是给自己徒增烦恼。说白了就是闲得,当你的工作和生活中的事堆积成山的时候,你会发现很多人的手机电脑壁纸都是系统初始的,因为他们更关注工作本身和享受自己的生活。
    CSM
        83
    CSM  
       289 天前
    Hobr
        84
    Hobr  
       285 天前
    可以试试 gentoo 或 nixos, 这两个都是可控性极强的系统
    nsynet57
        85
    nsynet57  
       285 天前
    串口工具找到 gtkterm 比较好用,当然和 sscom 不能比
    aaniao002
        86
    aaniao002  
       221 天前 via Android
    欢迎加入。1 这些太多不用你管,用什么依赖自动会搞定,选 gtk ,kde ,还是其他的都行。2 依赖太多也不用你管,package manager 会搞定,安装软件就行。3 简单来说,windows 一个软件一个文件夹,linux 一类文件一个文件夹。4 嵌入式看你开发环境选系统。securecrt 不觉得有很多乱码吗? xshell 勉强能用,但一个 ssh 就搞定了,为什么这么麻烦?无密码登录配置一下就行,要快的话无密码+host 配置。保存就用 script test.log 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2840 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:51 · PVG 17:51 · LAX 02:51 · JFK 05:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.