我发现作为普通用户在 Linux 机器上安装软件极其困难。我没有这台机器的 root 权限,因此无法使用任何包管理器系统。
例如,我正在尝试安装一个简单的 IRC 客户端,但从源代码安装所有内容很麻烦,因为我必须手动下载并安装树上的每一个依赖项(irssi->glib->ncurses 等等等等)。
所以我下载了 ircii,它似乎是我能找到的最简约的客户端,但它仍然需要一个名为法我找不到。
有没有简单的方法可以解决这个麻烦的任务?为什么人们不直接提供包含我需要的所有文件的二进制文件(有点像 .exe)?
答案1
您可能想看看 Nix 包管理器。它不仅整个包管理方法非常有趣,而且该网站还声称它适用于每个 Linux 发行版,并允许非特权用户使用它来安装软件。您可以在以下位置找到更多信息以及所有可用软件包(约 2500 个)的完整列表:http://nixos.org/nix/。
答案2
您可能认为更多的人会记得多用户系统以及从主目录运行软件通常是可以接受的。不过,您应该确认您的主机是否同意这一点。
如果系统没有从源代码编译的依赖项并且您的管理员不会安装它们,您最好的选择如下:
- 找到为机器编译的包并提取二进制文件。(如果没有依赖项,此操作仍可能会失败。)
- 找到适合您系统的静态编译二进制文件。软件包或其他。
- 在类似的机器上静态编译并复制
答案3
Any easy solutions for this hassling task? Why don't people just deliver binaries that have all I need included in them (sort of like .exes)?
听起来有点讽刺,但这样做的方法是要么
- 获取 root 权限
- 让你的系统管理员随时听候你的差遣
我假设你正在使用的机器不是你的,否则 #1 是可以实现的。基于这个假设,如果你正在使用的是我的机器,我不我希望你能随时安装新的软件包和库,并且我希望你能来找我做这件事,除非我真的相信你。这就是 Linux 发行版和 Linux 管理应该如何运作。
那么……为什么人们不提供二进制文件?这很可能是因为 linux(库)本质上更模块化,而且稍微更分散。没有像 win32 那样庞大的核心 api 可供开发人员保证。他们必须依靠所需的显式库以及这些库的特定版本,以便在编译时和运行时都可用,才能成功分发他们的软件。这几乎是普遍正确的。据我所知,Windows 在所有 exe 上都存在同样的问题,除了最简单的 exe,它们只依赖于核心 Windows 库 - 您必须运行具有管理员权限的安装程序才能进行注册表修改和安装库。MacOSX 是最著名的 3 个操作系统中唯一一个涵盖您所说的用例的操作系统,因为所有 .app 文件都是完全独立的,可以安装在用户的 $HOME 中并正常工作。
答案4
您可以在虚拟机中设置相同版本的 Linux,然后尝试构建应用程序的静态版本。然后,您只需将其传输到服务器上的主目录,它就会运行(假设您可以从主目录执行程序,但这并不总是可行的,有时出于安全原因,/home 位于使用 noexec 选项挂载的文件系统上)。