当尝试将.deb
包转换为.rpm
使用外星人,我使用这个命令:
$ alien -r foo.rpm
但它抱怨如下:
> Warning: alien is not running as root!
> Warning: Ownerships of files in the generated packages will probably be wrong.
以 root 身份运行时和以普通用户身份运行时文件所有权有何不同?
为什么包中的文件所有权很重要?
答案1
Debian 的 deb 包很简单,包中要安装的所有文件都存储在档案中。
此存档包含完整的文件树,以及它们的权限和所有权数据。在安装过程中,存档会按原样提取到根文件系统中。
一个例子
fping 软件包包含一个带有以下文件的档案:
/usr/bin/fping
/usr/bin/fping6
/usr/share/doc/fping/README
/usr/share/doc/fping/changelog.Debian.gz
/usr/share/doc/fping/changelog.gz
/usr/share/doc/fping/copyright
/usr/share/lintian/overrides/fping
/usr/share/man/man8/fping.8.gz
/usr/share/man/man8/fping6.8.gz
权限和所有者数据(所有者几乎总是 root)仅从档案中获取。
考虑到这一点,如果没有超级用户权限,就不可能提取保留正确所有权的档案。在不了解 rpm 和 alien 的内部工作原理的情况下,我猜 alien 在转换过程中提取了源档案。
回答您的问题:
以 root 身份运行时和以普通用户身份运行时文件所有权有何不同?
普通用户只能创建自己拥有的文件,并且不能更改文件的所有权。
为什么包中的文件所有权很重要?
也许可以,也许不行。请记住:如果不是 root 用户,文件将归转换软件包的 uid 所有。虽然让非特权用户在 /usr/bin 中安装二进制文件不是好做法,但它可能会起作用。但是当安装的内容必须由 root 用户拥有时,它将中断。
回到示例,fping 需要 setuid root 才能工作 -> 由于所有权错误,包损坏。