Linux Kali-Rolling(树莓派)安装Atom编辑器

Atom是由GitHub开发的免费开源文本编辑器。基于Electron (CoffeeScript, JS, Less, HTML),它是一个使用web技术构建的桌面应用程序,经常被称为21世纪的文本编辑器,核心是可编程的。Atom的主要特性是跨平台编辑、内置包管理器、文件系统浏览器、多个窗格支持、查找和替换功能,以及智能自动完成。

结论写在最前面,免得耽误别人时间,本次折腾没成功,因为atom都是64位的,最后我才发现我的树莓派装的是32位的Kali系统。

官方的Linux安装说明:https://flight-manual.atom.io/getting-started/sections/installing-atom/#platform-linux

安装方法一:

命令如下:

add-apt-repository命令,将PPA添加到您的源列表中,以便Kali系统知道从该PPA以及官方Kali源中查找更新。通常是用于允许开发人员比在官方Kali存储库中的更快地提供更新。

我的Kali是安装在树莓派上的,没有add-apt-repository命令,需要安装,修复如下方法:

修复大约需要5~10分钟,修复完成后,再执行atom的安装命令。

add-apt-repository 这个命令是安装上了,也可以用了,但是又有新报错,

20200109054322

图一

python抛出异常,网上查了查,说是要修改这个文件(/etc/lsb-release),上图中下面的方框中就是这个文件的内容,把原有的用“#”注释掉,我要把它改成Debian系统,就不截图了。为了上面的截图,还安装了一个kali的截图工具scrot,挺好用的。

DISTRIB_ID 显示发行版的ID
DISTRIB_RELEASE 显示当前系统是发行版的具体版本号
DISTRIB_CODENAME 发行版代号
DISTRIB_DESCRIPTION 显示该发行版的描述信息

如果当前发行版是LSB兼容的,那么“/etc/lsb_release”文件中会包含LSB_VERSION域。这个域的值可以是用冒号隔开的一系列支持的模块。这些模块名是当前版本支持的LSB的模块名。如果当前版本不是LSB兼容的,就不要包含这个域。
可选的域包括DISTRIB_ID, DISTRIB_RELEASE, DISTRIB_CODENAME, DISTRIB_DESCRIPTION,它们可以覆盖/etc/distrib-release文件中的内容。注:这里的distrib要替换为当前的发行版的名字。
如果存在/etc/lsb-release.d目录,会在该目录中查找文件名并作为附加的模块版本加在LSB_VERSION前面。文件/etc/distrib-release中包含了一些描述信息,用来说明应该分析哪些文件名。
一般的格式是:”Distributor release x.x (Codename)”
注意:Debian系统中缺乏相应的描述信息(见/etc/debian-version),为了支持Debian系统,大部分信息都被加在了lsb-release文件中。

Debian 版本信息 https://www.debian.org/releases/index.zh-cn.html

使用上面的方法解决add-apt-repository的问题,其实对于我的Kali-Rolling系统来说并没有解决。

使用另一种方法解决add-apt-repository的问题。

参考:https://www.bbsmax.com/A/KE5QbLLjdL/ 和 https://www.blackmoreops.com/2014/02/21/kali-linux-add-ppa-repository-add-apt-repository/

实际的库地址是http://ppa.launchpad.net/webupd8team/atom/ubuntu

用上两个页面中的方法弄了一下,最后还是要回到修改/etc/lsb-release,但是之前改这个文件后,我也没有成功。

看参考的两个网页是输出如下内容,但是我的没有输出这些,是不是因为我安装的是software-properties-common的缘故呢?

继续

添加如下代码:

上面内容中的 xxxxxx 到这里(http://ppa.launchpad.net/webupd8team/atom/ubuntu/dists/)去查,就是文件夹名称,我实际用得是bionic,那么文内的语句就是echo "deb http://ppa.launchpad.net/$ppa_name/ubuntu bionic main"了。

改为可执行文件和修改所有者和所有组

执行脚本:

看网上有说卸载重装dirmngr的,照做后,错误依旧。

暂时不用这个方法了……

安装方法二:

编译安装,不知道会有多少坑呀,开始折腾,命令如下:

缺少依赖的,安装依赖,Ubuntu系统使用 apt

Atom编译安装命令如下:

do 在第二步命令(script/build # Creates application at $TMPDIR/atom-build/Atom)时用时很长,执行后就睡觉了,醒来就发现满屏的报错。我太难了!

20200109182943图二

如图二:

这是几个意思呢,gyp创建libsecret-1,之后程序检索发现没有libsecret-1,之后配置环境变量PKG_CONFIG_PATH;之后程序检索提示:也许您应该添加包含’ libsecret-1.pc’的目录;之后在pkg-config搜索路径中没有找到包libsecret-1。问题就此产生。

20200109165706

图三

如图三提示,配置错误,nodejs的gyp模块抛出异常

2020-01-09-163943_818x465_scrot

图四

如图四:

npm ERR! keytar@4.11.0 install: prebuild-install || node-gyp rebuild

npm ERR! This is probably not a problem with npm. There is likely additional logging output above

需要安装 prebuild-install 模块 或者 重构node-gyp模块

网上搜索了一下,(https://www.jianshu.com/p/487617abfba3)说删除管理员目录下的 ~/.node-gyp ,但是他不是安装atom,所以这种方法暂时先不能用,还是按我的错误提示来研究。

又搜索到这个(https://stackoverflow.com/questions/26275881/atom-editor-node-gyp-rebuild-crashes),他也是安装atom,这外国哥们估计鼓捣时间很长啊,使用了各种方法,换ptyhon版本,原来是2.7的,后来降到2.6,又重装npm,又删除~/.node-gyp,又重装node-gyp等等,最终还是没有解决问题。

这外国哥们的错误位置与我不同,但是我分析错误的原理相同,严格讲这也算不是分析,那就说是假定我们的错误是一样的吧,很可能是node-gyp的版本问题。

我的nodejs 版本是 v10.15.3,在这里(https://npm.taobao.org/mirrors/node/)查了下时间,是2019-10-5 17:15

我的node-gyp版本是 v3.7.0,npm查一下node-gyp的最新版本

比我的版本高很多,还真有可能是node-gyp版本低的问题,那就新安装最新版node-gyp,一定要全局安装。

while 1 再进行编译安装Atom……

就像外国那哥们说的 The error is still there

这次运行的快了很多,不像第一次那么慢了,几分钟后就返回报错了,还是同样的错误。

到node-gyp在github(https://github.com/nodejs/node-gyp)的项目中看一下依赖,

  • Python v2.7, v3.5, v3.6, or v3.7
  • make
  • A proper C/C++ compiler toolchain, like GCC

我的本地环境:python v2.7,make v4.2.1,GCC v8.3.0

环境都是存在的,但就是不知道是不是版本低的问题呢,研究提升版本吧。

查到https://www.cnblogs.com/noxy/p/6832304.html,这哥们最后说得一句话【错误提示有时不能直接把你带到解决问题的路上,提示仅仅是一个相关包异常发生时的提示,可以以此为中心发散自己的思维, 即:”没安装包 或者环境变量没有设置“】,有些启示,所以上暂时不提升版本了。

研究图二中的提示,环境变量PKG_CONFIG_PATH,找不到这个文件libsecret-1.pc。

在这里(https://blog.csdn.net/ubuntulover/article/details/6978305)找到对PKG_CONFIG_PATH的介绍,截取如下:

经常在论坛上看到有人问”为什么我已经安装了glib-2.4.x,但是编译gtk+-2.4.x 还是提示glib版本太低阿?
为什么我安装了glib-2.4.x,还是提示找不到阿?。。。。。。”都是这个变量搞的鬼。
先来看一个编译过程中出现的错误 (编译gtk+-2.4.13):

checking for pkg-config… /usr/bin/pkg-config
checking for glib-2.0 >= 2.4.0 atk >= 1.0.1 pango >= 1.4.0… Package glib-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `glib-2.0.pc’
to the PKG_CONFIG_PATH environment variable
No package ‘glib-2.0′ found

configure: error: Library requirements (glib-2.0 >= 2.4.0 atk >= 1.0.1 pango >= 1.4.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.
[root@NEWLFS gtk+-2.4.13]#
很明显,上面这段说明,没有找到glib-2.4.x,并且提示应该将glib-2.0.pc加入到PKG_CONFIG_PATH下。
究竟这个pkg-config PKG_CONFIG_PATH glib-2.0.pc 是做什么的呢? let me tell you ^_^
先说说它是哪冒出来的,当安装了pkgconfig-x.x.x这个包后,就多出了pkg-config,它就是需要PKG_CONFIG_PATH的东东
pkgconfig-x.x.x又是做什么的? 来看一段说明:

The pkgconfig package contains tools for passing the include path and/or library paths to build tools during the make file execution.

pkg-config is a function that returns meta information for the specified library.

The default setting for PKG_CONFIG_PATH is /usr/lib/pkgconfig because of the prefix we use to install pkgconfig. You may add to PKG_CONFIG_PATH by exporting additional paths on your system where pkgconfig files are installed. Note that PKG_CONFIG_PATH is only needed when compiling packages, not during run-time.

我想看过这段说明后,你已经大概了解了它是做什么的吧。
其实pkg-config就是向configure程序提供系统信息的程序,比如软件的版本啦,库的版本啦,库的路径啦,等等
这些信息只是在编译其间使用。你可以 ls /usr/lib/pkgconfig 下,会看到许多的*.pc,用文本编辑器打开
会发现类似下面的信息:

prefix=/usr
exec_prefix=$
libdir=$/lib
includedir=$/include

glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums

Name: GLib
Description: C Utility Library
Version: 2.4.7
Libs: -L$ -lglib-2.0
Cflags: -I$/glib-2.0 -I$/glib-2.0/include

明白了吧,configure就是靠这些信息判断你的软件版本是否符合要求。并且得到这些东东所在的位置,要不去哪里找呀。
不用我说你也知道为什么会出现上面那些问题了吧。

解决的办法很简单,设定正确的PKG_CONFIG_PATH,假如将glib-2.x.x装到了/usr/local/下,那么glib-2.0.pc就会在
/usr/local/lib/pkgconfig下,将这个路径添加到PKG_CONFIG_PATH下就可以啦。并且确保configure找到的是正确的
glib-2.0.pc,就是将其他的lib/pkgconfig目录glib-2.0.pc干掉就是啦。(如果有的话 ^-^)
设定好后可以加入到~/.bashrc中,例如:
PKG_CONFIG_PATH=/opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:
/usr/X11R6/lib/pkgconfig
[root@NEWLFS ~]#echo $PKG_CONFIG_PATH
/opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:/usr/X11R6/lib/pkgconfig

从上面可以看出,安装库文件时,指定安装到/usr,是很有好处的,无论是/etc/ld.so.conf还是PKG_CONFIG_PATH
默认都会去搜索/usr/lib的,可以省下许多麻烦,不过从源码包管理上来说,都装在/usr下
管理是个问题,不如装在/usr/local下方便管理
其实只要设置好ld.so.conf,PKG_CONFIG_PATH路径后,就OK啦 ^_^

另外某些软件因为版本原因(比如emacs-21.3),在gcc-3.4.x下编译无法成功,(make 出错)
使用低版本的gcc就可能编译通过。
可能是因为gcc-3.3.x和gcc-3.4.x变化很大的缘故吧。

通过上面的介绍,我看了一下我的 /usr/lib/pkgconfig 目录下,是么也没有。再看一下 /usr/local/pkgconfig 目录,不存在。

那么再回来图二中的两句提示:

在pkg-config搜索路径中没有找到包libsecret-1。
也许您应该添加包含’libsecret-1.pc’的目录

再研究一下 libsecret-1 是什么东西?

我想我现在是不是应该跑一遍Atom的依赖安装呢,前文中提到过,但是我没有跑全部依赖的安装,可是官方(https://github.com/atom/atom/)提示是Ubuntu系统。试试看吧,就算白跑一遍也不会死。

确实有新装的包。

while 2 再进行编译安装Atom……

执行结束,错误依旧……

方法三:

在页面 https://github.com/atom/atom/releases/latest 下载 atom-amd64.tar.gz

没弄明白怎么用,这个应该是直接可用的。

更改atom-1.42.0-amd64的所有者和所有组,他原来的是所有者和所有组是mysql

修改为可执行文件

创建软链接

往下怎么弄不明白了,也没查,暂时搁置……

方法四:

在页面 https://github.com/atom/atom/releases/latest 下载 atom-amd64.deb

下个载都TM这么费劲,这回不让我鼓捣了,直接你就下不来了,操!

跳转到亚马逊的服务器上了,尝试4次连接,全部超时。我TM真是服了!

找到了淘宝源:

正在下载中,抽根烟,准备继续跳坑……

下载完成,大约用时25分钟左右。

报错,这张截图传不上来,不知道什么原因,上文本吧,报错内容如下:

查了查体系架构的知识,大致了解。

https://dhcp.cn/raspberry/QuickStart/Arm64VsArmhf.html

armhf 代表的是 32 位,arm64 才是代表 64 位

armv7 代表架构还是 32-bit.

armv8 是第一个 arm64 的架构

到此,我一直以为我的树莓派当时装得是64位系统呢,那可能是Kali针对树莓派没有64位,当时才装的32位的,当时就是想装Kali。

atom就没有64位的,所以,现在基本就是死锁了。

那么,有时间我再弄一张T卡,装个64位Ubuntu系统吧。结束本次折腾!

其它:

如果想用其它方法安装或者查看编辑器信息,网址如下:

Atom官网:https://atom.io/ ,打开有些慢,耐心等待。如果页面显示不正常,可以刷新一下(刷新也没用,还那样儿)。

Atom在github上是开源的,地址:https://github.com/atom

Atom在github上的源码:https://github.com/atom/atom

Atom在github各版本列表页面1:https://github.com/atom/atom/tags

Atom在github各版本列表页面2:https://github.com/atom/atom/releases/latest

 

承接各种网站开发与修改、爬虫、数据采集分析、小程序等任务

Html+Css+JS+PHP+Nodejs+Python

专治网站各种不服

一起探讨,互相学习,共同进步!有事儿您说话。

This entry was posted in Kali-Rolling and tagged , by 织梦先生. Bookmark the permalink.