在Linux上装个软件像鸡下蛋似的搞的整个系统到处都是
c语言吧
全部回复
仅看楼主
level 11
g495326 楼主
什么二进制放bin,配置文件放etc,文档放
doc。就不能一个软件一个文件夹吗,这不是更
好管理啊,卸载也方便,也不知道怎么想的[喷]
2024年06月30日 16点06分 1
level 8
包管理器很清楚文件是怎么放的
2024年07月01日 02点07分 2
包管理器也不是有所有的软件呀,脚本安装的就无法管理啊
2024年07月01日 04点07分
@g495326 脚本安装的就用脚本卸载,对应文件的cp换成rm
2024年07月01日 07点07分
level 10
二进制文件放bin,这样可以在shell打文件名直接执行,配置文件放etc,这样可以在编辑器打文件名编辑。当然像绿色软件那样放一个目录也是可以的,只是执行的时候需要输入完整路径,或者cd切换到对应目录里。
2024年07月01日 03点07分 3
直接打文件名编辑配置文件?你怎么知道一个可执行文件的配置文件叫什么?
2024年07月01日 04点07分
@g495326 通常是和软件包同名的目录里,甚至连Windows也有etc目录,比如网络配置文件。
2024年07月01日 05点07分
@豪杰兴邦 你也说了是通常,那有的软件就是不遵守这个规则。还有想请教下,哪个编辑器可以直接打包名就能编辑配置文件的
2024年07月01日 05点07分
@g495326 直接编辑配置文件的叫配置编辑器,gui界面的,只能编辑etc里面的配置文件。也有配置文件在home目录里的,这样不用root权限就能安装。
2024年07月01日 05点07分
level 14
一个目录不太现实,至少用户数据和程序本体就不应该放在一起。
程序及其依赖库通常是不需要经常修改的,所以可以加上比较严格的权限限制,避免被恶意程序破坏;
但是用户数据是需要经常修改的,就不需要加上严格的权限了;这样用户数据和程序本体至少就两个目录了。
至于到底是一个软件尽量集中到一个目录,还是把它的文件划分到事先设定好的目录里,这就见仁见智了,Windows和Linux就是两种不同思路的代表,可以说是各有优劣吧,这里就拿一点来说:
Linux的共享库都是放在/lib下面的,这样的好处是一个库不需要多个副本,可以节省空间;
Windows的软件就喜欢自带一套动态链接库,所以你会发现系统里面有些DLL可能会有十几个一模一样的副本(尤其是像msvcrt这样的),这种做法会导致有些本来很简单的软件因为带了一套DLL变得很庞大,但好处是一个软件可以使用与另一个软件不同版本的库而不会互相干扰
2024年07月01日 11点07分 5
吧务
level 14
Windows的用户转移到linux上很容易有这种疑问,本质上是因为仍然在用Windows的方式思考问题。linux上软件的特点是什么?大部分软件是单文件、功能单一、终端交互方式、有若干依赖项。这样的软件很适合linux目录的组织方式,可执行文件存放在/usr/bin和/usr/sbin,库文件存放在/usr/lib。如果学Windows一个软件一个目录,那会有什么问题?
1.需要频繁维护PATH,每一个软件的bin目录都需要添加到PATH中
2.软件之间无法轻易找到依赖链,解决方式要么是每个软件单独打包所有依赖,要么像PATH一样在LD_LIBRARY_PATH里添加每一个软件的lib目录。linux上一个软件有十几个依赖很正常,一个服务器程序可能依赖libc, libev, libcurl, openssl, zlib, lib
lz
ma, li
bp
thread等等库,难道每个这样的程序都打包一遍库文件?ubuntu的snap招致众怒不是没有原因的
2024年07月01日 12点07分 6
level 11
g495326 楼主
@▫XeO2▫ @GTA小鸡
我想了个下,如果我来设计系统应该怎么安排这些库(生产者),还要保证它们不重复。
首先想到,上层软件(消费者)需要什么依赖库,直接向系统报告,由系统来下载、载入、删除。系统怎么知道当下哪些库已存在哪些库需要下载?
最方便的方法就是把这些库放一个目录,查找起来最方便,这不就回到linux的做法了吗!
不不,如果上层软件本身不需要对外提供服务,安装时不就可以放一起了吗?
2024年07月02日 04点07分 7
level 9
第一个问题:举个例子,如果两个程序需要用到同一个功能(就假设是ffmpeg功能吧),如果软件都放在自己的目录里,那就两个程序的文件夹里都有ffmpeg的内容,好处是这两个ffmpeg版本可以不同,坏处是这两个ffmpeg版本相同的时候就会多占用一份不必要的空间。
第二个问题:另外如果所有的依赖库都需要内核来管理的话,如果内核没有更新到支持最新版的ffmpeg但是这个程序又需要最新的ffmpeg怎么办?简单的办法就是让应用开发人员也可以管理依赖库,那么这个库放哪里又回到第一个问题了?
2024年07月04日 06点07分 8
管理的通用功能才让系统来接管,变动的数据提供接口就可以了。对于没有最新的库?这不是问题,因为更新依赖库的仓库地址是可配置的。
2024年07月04日 08点07分
对于目的是对外提供服务的各个功能,放在一个文件夹下也无可厚非(比如lib)。而专用于某个软件的库,我认为应该和主执行文件放在一起
2024年07月04日 08点07分
@g495326 那问题就来了,linux很大一部分程序是需要在命令行执行的,如果不配置path 终端就不能执行这个命令,安装和卸载程序就需要修改path文件了
2024年07月05日 01点07分
@g495326 或者说,Linux里面的程序很大一部分就是为了“给命令行程序提供某种功能”的
2024年07月05日 01点07分
level 9
你没有理解linux的管理逻辑
2024年07月27日 13点07分 9
level 7

2024年07月28日 01点07分 10
level 7

2024年07月28日 01点07分 11
level 7

2024年07月28日 01点07分 12
level 7

2024年07月28日 01点07分 13
level 7

2024年07月28日 01点07分 14
level 6
Linux上安装的应用程序通常称为组件,组件本身只是一种部件,不是给你实现一个功能,而是在安装了一系列组件之后,这些组件和Linux系统共同构成了一个整体,用来实现各种功能
2024年07月29日 13点07分 15
1