关于 Linux 下面的 包管理器的 疑惑

2022-05-11 15:40:27 +08:00
 huyangq

linux 的包管理器很强大 下载软件十分的方便 但是下载的软件各个目录 好像是分散在 各个目录中的,比如下载了 redis 启动程序 好像在 /usr/bin 中 数据好像在 /usr/local/redis-3.2.0/data 为啥 要这种设计呢? 直接在一个固定的目录下面不行吗?

3828 次点击
所在节点    Linux
28 条回复
huiyifyj
2022-05-11 17:45:36 +08:00
这些都还好吧,因为 FHS 标准如此。
但是 FHS 标准有些时候挺抓狂的,尤其是 opt 的文件夹,就没几个开发喜欢放那
westoy
2022-05-11 17:50:49 +08:00
你这个会把数据放 /usr/local/redis-3.2.0/data 下面的不像什么正经的包管理啊

/usr/local 一般官方的包管理不会去碰的, 数据是放 /var/lib/XXXX 下面的
Huelse
2022-05-11 17:51:05 +08:00
如果不遵守约定或不知道应该怎么放,就放在自己用户目录下吧 ~/
Buges
2022-05-11 18:03:03 +08:00
因为这种目录结构能集成。比如一个应用的本体可执行文件可以直接在终端运行,那就放到 /usr/bin 里。如果给其他程序提供库,那就放到 /usr/lib 里。如果要添加文件关联,直接放到 /usr/share/applications 里。配置文件统一放在 /etc ,数据在 /var/lib/appname 等等。比 Windows 注册表那样添加一堆莫名其妙的东西卸载了还删不干净好吧。
lolizeppelin
2022-05-11 18:16:00 +08:00
window 闭源都不共享内容,自然都是自己东西全放自己文件夹完事也不需要什么规范,也就是大家最喜欢的绿色模式

linux 是个开源共享的系统,共享意思是你可以用我东西我也可以用你东西,为了方便共享大家有统一规范

非共享的情况软件自己管好自己一亩三分地就可以,没有依赖也不需要依赖管理,因为别人和你没关系
共享就要遵守统一规则否则依赖混乱,你自己变更还要考虑到别人的兼容
whenov
2022-05-11 21:05:32 +08:00
可以关注下 GoboLinux ,根目录结构为:
Depot Mount System Files Programs Users
baobao1270
2022-05-12 02:24:48 +08:00
题主说的不对,要么是 /usr/bin 放程序、/var 放数据;要么放 /usr/local/bin 、/usr/local/var
如果用包管理器,几乎不会用到 /usr/local ,如果遇到了说明打包者没有打包好(编译时设置了错误的 prefix 选项)

这个标准叫做 FHS 。其实 FHS 这个东西也有点过时了,现在很多发行版都在作 USR Merge (只保留 /usr /etc /var ,/bin 、/sbin 、/lib 都是软连接)

FHS 确实有很多优点,但是在某些场景也有一些不太令人满意的地方。我感觉最好是单开一个 /app 目录,然后设置 /app/something/bin 、/app/something/lib 、/app/something/etc ,然后软连接到 /usr/bin 、/usr/lib/something 、/etc/something 。
codehz
2022-05-12 07:21:29 +08:00
主要的问题是为了使用共享库,而为了使用共享库,必然就得有公共路径,这样一来,单独给程序放独立文件夹的意义就少很多了 - 你还得考虑统一性吧,总不能一些文件在独立目录,一些文件又在公共路径
你单独发布的软件可以把需要的 so 全部打包在一起,发行版还这么干,那里面得有多少重复文件啊( nix 等另辟蹊径的暂且不提)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/852203

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX