小编use*_*964的帖子

如何在不更新 GLIBC 的情况下运行新软件?

我在旧的 Red Hat Enterprise Linux AS 4 版系统上安装了 Mathematica 9。安装后,我尝试启动 Mathematica,但出现以下消息:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica:/lib64/tls/libc.so.6:找不到版本`GLIBC_2.4'(需要/家/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/Libraries/Linux-x86-64/libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica:/lib64/tls/libc.so.6:找不到版本`GLIBC_2.4'(需要/家/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/Libraries/Linux-x86-64/libQtCore.so.4)

我不想更新系统 glibc,因为它有风险,而且管理员不允许我这样做。

有人建议可以在其他地方安装新版本的 glibc,然后将程序运行为

LD_LIBRARY_PATH=/lib/new your_application
Run Code Online (Sandbox Code Playgroud)

这不会影响系统。

所以我在这里问这个方法是否真的有效。如果可行,我想知道如何一步一步地进行(我现在缺乏Linux经验,想尽快在Linux上使用Mathematica)。

编辑

我注意到有一个叫做“Ermine”的软件。它似乎可以将软件部署为不依赖外部环境的独立包。不幸的是,它是一个共享软件。所以我想既然“Ermine”能做到,那么老系统上一定有新软件的办法。

rhel glibc

20
推荐指数
1
解决办法
3万
查看次数

我真的需要屏幕中的 -dmS 选项来稳定运行后台作业甚至注销吗?

我看到很多地方都介绍screen了稳定运行后台作业甚至注销。他们使用

screen -dmS name
Run Code Online (Sandbox Code Playgroud)

根据screen -h,这个选项意味着

-dmS name 作为守护进程启动:分离模式下的屏幕会话。

什么是守护进程?我不明白。

我发现只要输入screen,就可以自动进入屏幕。在我运行一些命令后,按Ctrl+a d,然后注销。工作仍然运行良好。那么这个简单的方法可以吗?我真的需要-dmS让后台工作稳定吗?


让我试着做一个总结:

任何在 screen 中运行的东西都可以安全地注销(但你应该分离屏幕,而不是在你注销时退出屏幕),无论你为 screen 设置了什么选项。

-dmS只是在后台非迭代地提交作业的一个方便的选项。那是

screen -dmS nameOfScreen command
Run Code Online (Sandbox Code Playgroud)

linux gnu-screen

5
推荐指数
1
解决办法
1万
查看次数

If [ is a builtin and [[ is a keyword, then what is ((?

According to this post, [ is a builtin and [[ is a keyword. Since they can be regarded as command, everything after [ and [[ is regarded as command arguments and should be separated by spaces, until they meet final argument ] and ]]

But what is the type of (( ?

type ((
Run Code Online (Sandbox Code Playgroud)

will give an error:

 bash: syntax error near unexpected token `('. 
Run Code Online (Sandbox Code Playgroud)

I found that spaces is not relevant inside (( )).

echo $((1+1))
echo …
Run Code Online (Sandbox Code Playgroud)

shell bash syntax

5
推荐指数
1
解决办法
349
查看次数

为什么grep“!” 显示“bash: !: event not found”?

如果我跑

grep "!" test.txt
Run Code Online (Sandbox Code Playgroud)

它会显示错误

bash: !: 事件未找到

好吧,我知道我实际上应该使用grep '!'. 但是如何理解上面的错误呢?

我知道!是 bash 特殊字符。根据http://mywiki.wooledge.org/Quotes

双引号:"..." 阻止某些替换,但允许其他替换。执行每个以美元符号 $ 开头的替换,以及遗留...(反引号)命令替换。还执行反斜杠转义。不执行分词或文件名扩展。

它没有提到双引号会影响 !。有人可以解释一下 bash 或 grep 是如何解释的grep "!"吗?什么是“事件”?

grep bash special-characters

4
推荐指数
1
解决办法
4801
查看次数

如何知道正在运行的可执行文件的路径?

我在 Linux 服务器上工作,我在不同的节点上运行不同的作业。

但是,在编译我的程序时,我没有设置它们的具体名称,所以它们都是 a.out

现在我发现其中一个正在运行a.out,可能不对,想终止。但该Top命令不显示可执行文件的路径。

在此处输入图片说明

怎么做?

process executable files

3
推荐指数
2
解决办法
4228
查看次数

什么是 tar 错误消息“无法打开:无效参数”

我从这里下载 xcrysden 源包http://www.xcrysden.org/download/xcrysden-1.5.60.tar.gz

然后我使用

tar zxvf xcrysden-1.5.60.tar.gz
Run Code Online (Sandbox Code Playgroud)

但是,如图tar zxvf xcrysden-1.5.60.tar.gz|grep tar:所示,我遇到了几个错误

tar: xcrysden-1.5.60/examples/XSF_Files/c2h4\:Ag001.xsf: Cannot open: Invalid argument
    tar: xcrysden-1.5.60/otherLICENSES/TclTk\:LICENSE: Cannot open: Invalid argument
    tar: xcrysden-1.5.60/otherLICENSES/Togl\:LICENSE: Cannot open: Invalid argument
    tar: xcrysden-1.5.60/otherLICENSES/Mesa\:LICENSE: Cannot open: Invalid argument
    tar: xcrysden-1.5.60/otherLICENSES/Meschach\:LICENSE: Cannot open: Invalid argument
    tar: xcrysden-1.5.60/otherLICENSES/LGPL\:LICENSE: Cannot open: Invalid argument
    tar: xcrysden-1.5.60/otherLICENSES/GL2PS\:LICENSE: Cannot open: Invalid argument
    tar: xcrysden-1.5.60/otherLICENSES/FFTW3\:LICENCE: Cannot open: Invalid argument
    tar: xcrysden-1.5.60/otherLICENSES/BWidget\:LICENSE: Cannot open: Invalid argument
    tar: Exiting with failure status due to previous errors
Run Code Online (Sandbox Code Playgroud)

这些消息是什么意思?为什么提取没有完成?

tar filenames windows-subsystem-for-linux

3
推荐指数
1
解决办法
4128
查看次数

找不到屏幕以及如何在没有网络和管理的情况下安装它?

我正在使用 LSF 作业系统开发 HPC。

screen在登录节点和大多数我可以通过 ssh 连接到它们的计算节点上工作正常。which命令显示screen位于/usr/bin. 但是,我发现了一些节点上,打坏只是找不到屏幕,神秘,我无法找到screen/usr/bin该节点上。但我必须使用它。

所以我想也许我可以安装一个本地版本的screen,所以我下载了这个screen-4.5.1.tar.gz包。但是,./configure因错误而终止

配置:检查tgetent...配置:检查libcurses...配置:检查libtermcap...配置:检查libtermlib...配置:检查libncursesw...配置:检查libtinfow...配置:检查libncurses...配置:检查 libtinfo... 配置:错误:!!!没有 tgetent - 没有屏幕

谷歌显示,我们需要或者sudo apt-get install libncurses-devsudo apt-get install ncurses-dev。但是,我不是管理员,而且我在 HPC 上没有互联网连接。所以我认为手动安装ncurses应该没问题。我下载了ncurses-6.0.tar.gz。配置、制作、安装,最后我在我的自定义文件夹中得到了 4 个文件夹myInstall_ncurses:bin、lib、include、shared。

但是我screen现在应该如何安装?我试过这个

./configure --bindir="/home/myInstall_ncurses/bin" --includedir="/home/myInstall_ncurses/include" --libdir="/home/myInstall_ncurses/lib"
Run Code Online (Sandbox Code Playgroud)

但错误是一样的。怎么了?

gnu-screen ncurses

1
推荐指数
1
解决办法
1402
查看次数

无法理解bash双引号中的反斜杠换行符

根据gnu 文档

反斜杠仅在后跟以下字符之一时保留其特殊含义:'$'、'`'、'"'、'\' 或换行符。在双引号内,后跟这些字符之一的反斜杠将被删除.

我试过

p="a\$b";echo $p  # a$b
p="a\`b";echo $p  # a`b
p="a\"b";echo $p  # a"b
p="a\\b";echo $p  # a\b
Run Code Online (Sandbox Code Playgroud)

一切正常。但是换行??

p="a\newlineb";echo $p  # a\newlineb
Run Code Online (Sandbox Code Playgroud)

文档中的换行符是什么意思?

shell bash

1
推荐指数
1
解决办法
3063
查看次数

为什么“ls *bash*”不显示 .bashrc 文件

我 cd 到我的主目录并输入

ls *bash*
Run Code Online (Sandbox Code Playgroud)

期望它会显示包含“bash”的文件列表。然而事实并非如此。

同时,键入

ls .bash*
Run Code Online (Sandbox Code Playgroud)

作品。

根据文档,*代表任何字符,对吗?但.在这种情况下,它似乎并不代表。怎么了?

linux bash wildcards

0
推荐指数
1
解决办法
2034
查看次数

Bash:什么是赋值`a=` 定义?

在 bash 中,如果我进行分配

a=
Run Code Online (Sandbox Code Playgroud)

a现在是什么?我确定 a 不是''字符串,而不是0.

我发现只有下面的测试是真的

if [ $a = ];then echo 'good';fi
Run Code Online (Sandbox Code Playgroud)

bash

0
推荐指数
1
解决办法
91
查看次数