如何在没有 root 权限的情况下为 kubuntu 构建 mc?

如何在没有 root 权限的情况下为 kubuntu 构建 mc?

Kubuntu 9.10 (Karmic Koala) 中的 mc (Midnight Commander) 有一个问题以虚拟文件系统的形式访问.zip和其他档案。这与输出格式的改变有关unzip。讨论提供了一种解决方法,但这需要系统(即root)文件访问权限;我的工作箱已被锁定。

我家里有 Ubuntu(没有 K)9.10,我下载了源码包并做了一个代码更改,这是一个可怕的黑客行为(我做梦也不会发布),它允许我mc在 的子目录中运行我自己的正确工作的 副本$HOME。唉,我的“家用”电脑的配置不同,无论是在处理器方面还是在 KDE 和 Gnome 方面;传输过来的 mc 可执行文件立即失败bus error

那么问题来了:

鉴于

  • 我完全控制的 Ubuntu 盒子,
  • 在 KUbuntu 机器上以非 root 用户身份make运行,该机器具有gcc一些其他工具,但没有完整的开发工具链,例如下面的内容config
  • 能够下载我需要的任何软件包
  • 能够创建并乱弄我自己的 $HOME 树

我怎样才能构建一个mc可以在我锁定的 Kubuntu 盒子上运行的?

答案1

由于mc采用自动工具,您可以配置软件包,使其不安装到系统中,而是安装到您可以写入的用户目录中。您可以通过为发出的./configure调用提供额外的选项来实现这一点。要查看所有可用的构建选项,请运行

./configure --help

此处的妙招是PREFIX使用的变量:它(大致)告诉构建过程所有程序和支持文件的安装位置。这可以进一步微调。

当我以用户身份构建和安装时,我通常会安装到中PREFIX$HOME/bin/progname.dir而可执行文件则直接进入$HOME/bin,因此对于您的情况

./configure --prefix=$HOME/bin/mc.dir --bindir=$HOME/bin

进而

make install

在您的.profile文件中,您应该通过添加类似这样的行来更新$PATH要包含的变量$HOME/bin/

export PATH=$HOME/bin:PATH

答案2

成功!这是对有类似问题的人的反馈。

作为鸣喇叭解释得非常有帮助,configure可以提供帮助以及一些选项。但我发现这还不够:我必须手动将链接从更改./config/config.subconfig.guessinstall-shmissing

configure此后,我在查找 时遇到了很多问题glib 2.0。事实证明,configure调用chk-config并且 有多种不同的方法来查找glib,但都不起作用。我手动查找它试图查找的内容,发现glib-2.0.pc确实可用。我可以通过指向包含所有这些文件的目录来chk-config找到它。PKG_CONFIG_PATH.pc

我编写了一个小型 shell 脚本来提供configure所有必需的环境变量和选项。它如下:

#!/bin/bash
my_root=/home/carl/MC
export PKG_CONFIG=$my_root/usr/bin/pkg-config
export PKG_CONFIG_PATH=$my_root/usr/lib/pkgconfig
OPTS=""
OPTS="$OPTS --disable-glibtest"
OPTS="$OPTS --enable-extcharset"
OPTS="$OPTS --enable-netcode"
OPTS="$OPTS --enable-charset"
# OPTS="$OPTS --with-glib-static"
# OPTS="$OPTS --with-glib-12=no"
./configure --prefix=$my_root $OPTS

相关内容