我正在安装蚺蛇在 Linux 上。对于Linux,Anaconda提供了bash脚本,但文件很大,将近300 MB。我决定看看为什么,并在文本编辑器中打开它。
该文件大约 95% 都是机器语言乱码,如下所示:
ºîØôЕzÒA¶©h¶¥R•„&´ìÒUÓçß3{^eÑòà(|ÄÃk뎆ºîØôЕzÒA¶©h¶¥R•„&´ìÒUÓçß3{™½ö|q ŽÖm¶¥¡ôÚgú¡@óìÛkkº£C»Iš)à÷¾Û¸êw½æõîJN7í×p€A¡ÈzÞÝï8
该文件没有损坏,因为我可以安装 Python。
其中大部分都在许可证文件中,所以我想知道它是否是另一种语言的 unicode,但这不会占用文件的 95%,不是吗?
可以编译代码/机器语言吗?是否允许将机器代码放入 bash 文件中?
答案1
扩展@Graeme 的评论。
下载的脚本是一个带有嵌入式 tarball 的 bash 脚本。这脚本部分首先通过 md5sum 验证 tarball,然后解压 tar,其中包含多个.tar.bz2
存档。然后,它继续使用自定义函数extract_dist()
来解压缩档案。 IE:
extract_dist python-2.7.10-0
extract_dist conda-3.14.1-py27_0
...
提取文件:
python-2.7.10-0.tar.bz2
conda-3.14.1-py27_0.tar.bz2
...
对于 32 位版本脚本部分可以通过以下方式提取:
head -n 467 Anaconda-2.3.0-Linux-x86.sh
对于 64 位版本脚本部分可以通过以下方式提取:
head -n 466 Anaconda-2.3.0-Linux-x86_64.sh
正如你所看到的脚本部分以中止exit 0
bash 对脚本的任何进一步处理。
tarball 是通过以下方式提取的:
tail -n +469 $THIS_PATH | tar xf - --no-same-owner
tail -n +468 $THIS_PATH | tar xf - --no-same-owner
分别针对 32 位和 64 位。
例如,您可以这样做:
tail -n +469 Anaconda-2.3.0-Linux-x86.sh | tar -t
列出 32 位存档中的文件。