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.sub
、config.guess
和install-sh
。missing
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