[应用商店]希望20的包可以在/usr/bin创建软连接
Tofloor
poster avatar
神末shenmo
deepin
Spark-App
Q&A Team
2020-04-21 05:13
Author
我没猜错的话,20仓库里面大量的软件包转成/opt安装,应该是自动化改包的吧?
那可否加一个postinst专门给/usr/bin创建一个软连接呢?
终端没法唤起很难受啊!
就连我的下一步打包都要添加/usr/bin的软连接了

是否可以弄一个链接呢?https://bbs.deepin.org/user/48640 https://bbs.deepin.org/user/101846

BTW希望可以解答为何放到/opt,20以后都这样么?还是仅仅是从UOS转过来的问题,在正式版会保持和15.11同步为安装到/usr?

Reply Favorite View the author
All Replies
avatar
neko
deepin
Ecological co-builder
Q&A Team
2020-04-21 07:56
#1
本帖最后由 neko 于 2020-4-21 09:01 编辑

一、Linux 整体目录树
在 Linux 系统中,所有文件和目录都是从根目录开始,一级一级向下分支形成一个树状结构的。

我们把这种目录配置方式称为目录树。

Linux 的根目录为 “/”,我们在该目录下执行 ls -l 命令,查看根目录的目录结构。



你可以想象一下,这么多目录,如果所有使用 Linux 开发的用户,都以自己的原则和方式随意放置文件,这会给后续开发和运维增加无谓的工作量。

因此,在 Linux 中,根目录下的目录内容都会相对固定的,而且,每个目录放置什么内容都是有规定约束的。这个标准称为 FHS 标准(Filesystem Hierarchy Standard)。

下面,我们会从 FHS 标准出发,说明这些目录的主要作用与放置文件的内容。

二、FHS 标准
FHS 标准主要是希望使软件在安装时,或用户自己能够判断安装和存放文件的位置。

This standard enables:

Software to predict the location of installed files and directories, and
Users to predict the location of installed files and directories.
所以,FHS 标准的核心在于确定每个特定的目录下应该放什么内容的文件和数据,并希望 Linux 用户能够遵循该准则。

FHS 标准根据文件系统使用的频繁与否以及是否允许用户随意改动,将目录定义为四种交互作用形态。

可分享的:可以分享给其他系统挂载使用的目录
不可分享的:与自身机器直接相关的设备文件等,不能分享给其他主机
不变的:数据不常变动的文件
可变动的:经常改变的数据,如登录文件、新闻组等。


在了解了 FHS 准则的大致内容后,我们依据 FHS 准则,介绍根目录(/)下的所有文件夹的作用。

观察 FHS 原文后我们发现,FHS 除了说明了根目录(/)下的子目录的作用,还专门介绍了 /usr 目录及 /var 目录两个二级目录的子目录的作用。

也就是说,FHS 针对目录树架构着重强调了三个目录下的内容定义:

根目录(/),与开机系统相关
/usr,与软件安装和执行相关
/var,与系统运作过程相关
因此,我们依据 FHS 的内容,分别介绍这三个目录的主要内容。

三、根目录
根目录是 Linux 的最高层目录,是整个目录树的根节点。

同时,根目录与开机、还原、系统修复等操作直接相关。

因此,FHS 认为,在根目录下应该包含与系统开机、还原、系统修复等必要文件的目录。

/bin:放置执行文件/命令的目录,尤其是放置在单用户维护模式下还能够被操作执行的命令。

/boot:放置开机会使用到的文件,包括 Linux 内核文件以及开机菜单与开机所需配置文件等。

/dev:以文件的形式保存 Linux 所有的设备及接口设备。

/etc:系统主要配置文件基本上都在这个目录下,包括人员账号密码文件、多种服务的起始文件等。

/home:系统默认的普通用户的主文件夹。

/lib:主要放置系统开机使用的、/bin 和 /sbin 目录下的命令使用的库函数。

/media:放置可删除的设备。

/mnt:用于暂时挂载某些额外设备。

/opt:第三方软件放置的目录。

/proc:这个目录是一个虚拟文件系统,它放置的数据都是在内存当中,例如进程、外部设备状态、网络状态等。

/root:root 用户的主目录。

/sbin:该目录下放置开机过程中需要的命令,包括开机、修复、还原系统等。

/srv:该目录放置与网络服务相关的文件数据

/sys:这个目录是一个虚拟文件系统,主要记录与内核相关的信息,与 /proc 目录十分相似。

/tmp:让一般用户或者正在执行程序暂时放置文件的地方。

在根目录下,还有两个目录,分别是 /usr、/var。

FHS 详细描述了这两个目录及其子目录的结构,我们对此做一个简单介绍。

四、/usr 目录
usr 其实是 UNIX Software Resource 的全称,即 UNIX 操作系统软件资源。

FHS 建议所有软件开发者都应该将数据合理地放置到这个目录的子目录下。

一般来说,/usr 下的子目录有:

/usr/bin/:绝大部分的用户命令都在此处,它与/bin目录的区别在于后者存放与开机相关的命令。
/usr/include/:C/C++的头文件和包含文件。
/usr/lib/:包含各应用软件的函数库、目标文件,以及一些不被用户惯用的执行文件。
/usr/local/:系统管理员在本机自行下载的软件。
/usr/sbin/:非系统正常运行需要的系统命令。
/usr/share/:放置共享文件的地方
/usr/src/:源码放置的地方
五、/var 目录
/var 目录下主要放置常态化变动的文件,例如缓存、登录日志文件、软件运行产生的文件等。

/var 下的子目录常见有:

/var/cache/:应用程序运行过程中产生的暂存文件。
/var/lib/:应用程序运行过程中,需要使用到的数据文件放置的目录。
/var/lock/:某些设备或文件要求使用时具有排他性,即上锁,该目录存放这类设备文件。
/var/log/:日志或登录文件放置的目录。
/var/mail/:放置个人电子邮件的目录。
/var/run/:某些程序或者是服务启动后,将它们的 PID 记录在这个目录下
/var/spool/:这个目录通常会放置一些队列数据,包括等待收寄的电子邮件、cron 任务等。
最后,大家如果有兴趣,可以自行前往 FHS 英文文档查看 FHS 相关内容,附上链接:

FHS 英文文档

(完)

本文为原创文章,转载请告知作者,未经授权请勿转载。

欢迎关注我的微信公众号、知乎:多面手程序员

如果您觉得这篇文章还不错,随手点赞,手有余香~ : )
————————————————
版权声明:本文为CSDN博主「MultiSkill」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MultiSkill/java/article/details/104345821
Reply View the author
avatar
neko
deepin
Ecological co-builder
Q&A Team
2020-04-21 07:58
#2
建议你用环境变量
Reply View the author
avatar
神末shenmo
deepin
Spark-App
Q&A Team
2020-04-21 15:42
#3
https://bbs.deepin.org/post/192436
Linux目录配置标准---FHS

Linux使用规范的目录结构,系统安装时就已经创建了完整而规定的目录结构,并且指 ...

问题是官方都把应用扔到/opt啊
Reply View the author
avatar
ksplite
deepin
2020-04-21 16:24
#4
我觉得基本可以肯定,一切在打包时往/opt丢一堆文件的,都属于偷懒行为
连软链接都不留一个,属于懒上加懒
Reply View the author
avatar
neko
deepin
Ecological co-builder
Q&A Team
2020-04-21 16:56
#5
https://bbs.deepin.org/post/192436
问题是官方都把应用扔到/opt啊

放/opt没毛病啊,本来就是第三方应用的存放目录
Reply View the author
avatar
neko
deepin
Ecological co-builder
Q&A Team
2020-04-21 16:58
#6

Reply View the author
avatar
neko
deepin
Ecological co-builder
Q&A Team
2020-04-21 17:07
#7
https://bbs.deepin.org/post/192436
我觉得基本可以肯定,一切在打包时往/opt丢一堆文件的,都属于偷懒行为
连软链接都不留一个,属于懒上加懒 ...

根本没有必要留软链接,多此一举,所有deb安装或命令安装的都可以通过名用包名调用
Reply View the author
avatar
158******08
deepin
2020-04-21 17:26
#8
软链接是不明智的,通常在archlinux的打包的时候程序在/opt,或者在其他路径的时候,都会在/usr/bin下创建个程序启动的bash脚本,脚本里面用exec运行程序,用脚本的方式还可以配置一些环境变量对程序进行调整。
Reply View the author
avatar
君子爱财取之以道
deepin
2020-04-21 17:28
#9
终端下code命令找不到了,vscode无法直接在命令行打开文件,有点不习惯,只能手动建了软链.
Reply View the author
avatar
ksplite
deepin
2020-04-21 18:25
#10
https://bbs.deepin.org/post/192436
根本没有必要留软链接,多此一举,所有deb安装或命令安装的都可以通过名用包名调用 ...

那是因为你用的这些包直接在/usr/bin有同名二进制文件
你不妨试试sudo apt install aria2,看看能不能用包名调用它(二进制文件名为aria2c)
Reply View the author
avatar
神末shenmo
deepin
Spark-App
Q&A Team
2020-04-21 22:54
#11
https://bbs.deepin.org/post/192436
根本没有必要留软链接,多此一举,所有deb安装或命令安装的都可以通过名用包名调用 ...

要么是软连接,要么是启动脚本,不然你根本就调不起来
Reply View the author