通过软件中心或者使用DEB文件安装应用程序时,通常会将其系统范围内安装给所有用户。
有没有办法只为单个用户安装应用程序?
有没有办法只为单个用户安装应用程序?
好的,dpkg
对此并没有帮助,因为这不是它的设计目的。它想成为系统上安装软件包的根所有者唯一的普查。
唯一能想到的事情就是提取软件包并尝试手动将文件放置在主目录中。
然而,这只对某些东西有效。许多软件包被分成块(在/usr/bin
中的可执行文件或脚本,在/lib
中的库以及在/usr/share
中的其他垃圾等),这些位置由构建脚本硬编码。因此,如果您尝试将这样的东西拉入~
中,它将会破裂。您可以花费数小时来解开依赖关系,但您可以利用自己的时间做一些有用的事情,比如找到治愈癌症的方法或吸收世界上的美。
最好的方法是从编写软件的人那里获取非打包版本。几乎所有免费软件都以某种形式的压缩存档作为源代码提供,因此获取并构建即可。您不需要进行make install
步骤。您的应用程序已经构建完成,只需将其放在所需位置即可。
/etc/init
,在/etc
中寻找配置文件,或者有一些其他硬编码路径。 - arrange./configure --prefix=$HOME/local
设置自定义安装目录。 - Ingo Karkat我对这个主题了解不太多,但从其他答案来看,您可能可以使用 dpkg
的 --root
参数将软件包安装到另一个目录而不是 /
,然后通过 chroot
进入此软件包被“安装”的目录(当然可以是用户的主目录中的一个目录)。
要为除 root
之外的用户安装软件包,可能可以尝试使用 fakechroot
替代 chroot
来进行上述过程。
免责声明:我没有尝试过这个方法,并且在撰写本文时对 dpkg
或 chroot
的经验不多,但根据我对这些工具的了解,这种方法有可能有效。
以下链接提供了一些信息,对于希望在没有 root
权限的情况下实现类似 chroot
效果的人可能会有所帮助:
chroot
的人也很有用)fakechroot
的man页面现在我已经对与这个主题有关的一些事情有了一些了解,并发现了更多信息...
碎片(本地环境构建块):chroot(1)
完整(完整的本地环境提供者):
chroot(1)
、mount --bind
、binfmt_misc
功能,并使用qemu-user-space运行其他架构的二进制文件摘要:通过模拟或实际拥有本地的根权限,可以为本地环境安装DEB软件包。
dpkg
的--root
选项来安装到另一个目录。但是如果应用程序在固定位置(如/etc
)寻找文件,可能会遇到问题。~/bin
中仅为自己安装程序。这个问题存在一个模糊之处,即 Takkat 是否想限制多用户应用程序的访问/可见性,还是他想安装一个单用户应用程序。你和 arrange 的问题使用了前者的解释,而其他人则假设了后者。 - ændrük