Ubuntu的11.10已迁移远离
/var/run
,/var/lock
并/dev/shm
与现在使用/run
,/run/lock
而/run/shm
不是(分别)。
- 我在应用程序中对这些路径进行了硬编码,为什么对Oneiric进行了此更改?
- 如何使我的应用程序向后兼容和向前兼容?除了先检查
/run
,然后再检查是否有更好的方法/var/run
?
Ubuntu的11.10已迁移远离
/var/run
,/var/lock
并/dev/shm
与现在使用/run
,/run/lock
而/run/shm
不是(分别)。
/run
,然后再检查是否有更好的方法/var/run
?Answers:
目的是减少tmpfs
文件系统的数量。在11.04 tmpfs
上/var/lock
,/var/run
和处有单独的文件系统/dev/shm
。如果这些目录都在单个父目录下,则只需一个目录tmpfs
。它还为其他运行时状态数据提供了明显的位置,这些数据不应在重新启动后持续存在。
除非您的应用程序依赖于文件的规范路径,否则您的应用程序应在运行时不做任何修改,因为旧位置将被符号链接到新位置。AppArmor策略是一种情况,它确实取决于真实的路径名,这就是为什么专门提到它的原因。
以下链接应有助于解释基本原理:
/run
是用于存储暂态文件的新的跨分布tmpfs位置,瞬态文件是指包含运行时信息的文件,这些信息在引导过程的早期可能需要写入,也可能不需要,并且不需要在重新引导期间保留。
使/run
目录可用使我们更进一步,可以正常使用以只读方式安装了根文件系统的系统,而不需要任何笨拙的解决方法(例如aufs/unionfs
覆盖)。
/run
替换了文件系统层次结构标准中描述的几个现有位置:
/var/run
→ /run
/var/lock
→ /run/lock
/dev/shm
→ /run/shm
[目前只有Debian计划这样做]/tmp
→ /run/tmp
[可选;目前只有Debian计划提供此功能]/run
还替换了用于临时文件的其他一些位置:
/lib/init/rw
→ /run
/dev/.*
→ /run/*
/dev/shm/*
→ /run/*
/etc
→ 下可写文件/run/*
(因此您可能会期望它们也会随之移动)。
资料来源:Debian发行目标
我建议您在软件中创建一个部分,在其中将这些目录设置为变量,更改代码以使用这些变量,然后根据使用该变量的系统更改变量(但我敢打赌,您已经知道这一点)。
/etc
,/etc/lvm/cache/
/etc/mtab
/etc/network/run/ifstate
很快/etc/adjtime
。我想对他们来说很糟糕/etc
。
根据我的阅读,这是对为什么引入/ run的原始解释。http://lwn.net/Articles/436012/
/etc
。这些都必须在重新启动后继续存在,对吗?那只是通用的conf文件。