我的处境有点有趣。
为了尝试对学校的物理网络计算机进行 root 访问,我最终使用 fakeroot 和 fakechroot 创建了一个 chroot 环境。由于我读过的所有资料似乎都表明 debootstrap(一种在子目录中安装 Debian 的工具)需要 root 权限,因此我继续使用列出的方法这里- 这需要复制,是的,使用cp
, 将终端命令及其依赖项复制到此环境中。
我已经多次使用了这个巧妙的技巧,以至于我几乎将整个操作系统(Debian +一系列物理工具)复制到一个子目录中,一个假装是操作系统的子目录,在那里我可以假装我'我须藤/上帝。
令人惊讶的是,很多事情都有效。他们一开始并没有这么做,但咖啡确实能杀死虫子。
不幸的是,我有点卡住了。每当我使用 python(apt-get 等)时,我都会得到:
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
此问题的大多数修复实际上涉及设置 PYTHONHOME 和 PYTHONPATH 变量,但这并没有修复任何问题。另一个常见的解决方案是从源代码构建 python,我尝试过,但是当我尝试构建任何内容时,我收到以下信息:
configure: error: C compiler cannot create executables
可以找到此错误的附加 config.log 文件这里。
任何帮助将不胜感激。另外,如果您有建议完全避免这种情况或让 debootstrap 在没有 root 的情况下工作,那也很好。
更新1:尝试简化一些事情 - 尝试编译一个简单的 c 文件并得到另一个常见的错误:
gcc: error trying to exec 'cc1': execvp: No such file or directory
试图whereis
找到它 - 结果发现 cc1 在我的环境中不存在!现在我还要继续苦苦挣扎……
更新2:创建了从 gcc 到 cc1 ( ) 的软链接ln -s /usr/bin/gcc /usr/bin/cc1
,这给火山带来了轻绷带 - 现在,当我 gcc 示例文件时,我有无法识别的命令行选项,包括'-quiet'
、'-imultiarch x86_64-linux-gnu'
和'-auxbase'
。
更新3:让编译器工作!通过尝试不同的编译器(即 gcc-4.4、gcc-4.7、gcc-ar)修复了上述所有问题 - 最后一个游戏出现了不同的错误 - 它找不到所需的插件。这让我意识到并不是所有的 c 库都是从基本操作系统复制过来的。我解决了这个问题,解决了我的问题(众多问题之一)。
我的新问题是(明显)缺乏 GMP、MPFR 和 MPC。这些是重建 gcc 所需要的。
更新4:编译了所有三个库。 gcc 构建过程中的下一个问题是无法找到 crt1.o、crti.o、crtn.o、-lgcc、-lgcc_s 和 -lc。通过设置--enable-multilib
为配置脚本的标志来修复此问题。