Atom是由GitHub开发的免费开源文本编辑器。基于Electron (CoffeeScript, JS, Less, HTML),它是一个使用web技术构建的桌面应用程序,经常被称为21世纪的文本编辑器,核心是可编程的。Atom的主要特性是跨平台编辑、内置包管理器、文件系统浏览器、多个窗格支持、查找和替换功能,以及智能自动完成。
结论写在最前面,免得耽误别人时间,本次折腾没成功,因为atom都是64位的,最后我才发现我的树莓派(3B+)装的是32位的Kali系统,但是看最新版的树莓派4B 4核心,最大内存8G,它应该是可以的。
官方的Linux安装说明:https://flight-manual.atom.io/getting-started/sections/installing-atom/#platform-linux
安装方法一:
命令如下:
0 1 2 |
# add-apt-repository ppa:webupd8team/atom # apt-get update # apt-get install atom |
add-apt-repository命令,将PPA添加到您的源列表中,以便Kali系统知道从该PPA以及官方Kali源中查找更新。通常是用于允许开发人员比在官方Kali存储库中的更快地提供更新。
我的Kali是安装在树莓派上的,没有add-apt-repository命令,需要安装,修复如下方法:
0 |
# apt-get install software-properties-common |
修复大约需要5~10分钟,修复完成后,再执行atom的安装命令。
add-apt-repository 这个命令是安装上了,也可以用了,但是又有新报错,
图一
python抛出异常,网上查了查,说是要修改这个文件(/etc/lsb-release),上图中下面的方框中就是这个文件的内容,把原有的用“#”注释掉,我要把它改成Debian系统,就不截图了。为了上面的截图,还安装了一个kali的截图工具scrot,挺好用的。
0 1 2 3 4 5 6 7 8 |
# DISTRIB_ID=Kali # DISTRIB_RELEASE=kali-rolling # DISTRIB_CODENAME=kali-rolling # DISTRIB_DESCRIPTION="Kali GNU/Linux Rolling" DISTRIB_ID=Debian DISTRIB_RELEASE=10 DISTRIB_CODENAME=stable DISTRIB_DESCRIPTION="Debian 10" |
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,但是之前改这个文件后,我也没有成功。
0 1 2 3 |
# apt-get install software-properties-common # apt-get install apt-file # apt-file update # apt-file search add-apt-repository |
看参考的两个网页是输出如下内容,但是我的没有输出这些,是不是因为我安装的是software-properties-common的缘故呢?
0 1 |
python-software-properties: /usr/bin/add-apt-repository python-software-properties: /usr/share/man/man1/add-apt-repository.1.gz |
继续
0 |
# vim /usr/sbin/add-apt-repository |
添加如下代码:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/bin/bash if [ $# -eq 1 ] NM=`uname -a && date` NAME=`echo $NM | md5sum | cut -f1 -d" "` then ppa_name=`echo "$1" | cut -d":" -f2 -s` if [ -z "$ppa_name" ] then echo "PPA name not found" echo "Utility to add PPA repositories in your debian machine" echo "$0 ppa:user/ppa-name" else echo "$ppa_name" echo "deb http://ppa.launchpad.net/$ppa_name/ubuntu xxxxxx main" >> /etc/apt/sources.list apt-get update >> /dev/null 2> /tmp/${NAME}_apt_add_key.txt key=`cat /tmp/${NAME}_apt_add_key.txt | cut -d":" -f6 | cut -d" " -f3` apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key rm -rf /tmp/${NAME}_apt_add_key.txt fi else echo "Utility to add PPA repositories in your debian machine" echo "$0 ppa:user/ppa-name" fi |
上面内容中的 xxxxxx 到这里(http://ppa.launchpad.net/webupd8team/atom/ubuntu/dists/)去查,就是文件夹名称,我实际用得是bionic,那么文内的语句就是echo "deb http://ppa.launchpad.net/$ppa_name/ubuntu bionic main"
了。
改为可执行文件和修改所有者和所有组
0 1 |
# chmod +x /usr/sbin/add-apt-repository # chown root:root /usr/sbin/add-apt-repository |
执行脚本:
0 1 2 3 4 |
# /usr/sbin/add-apt-repository ppa:webupd8team/atom // 输出,有异常 webupd8team/atom Executing: /tmp/apt-key-gpghome.FSaOqgrw3p/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys |
看网上有说卸载重装dirmngr的,照做后,错误依旧。
暂时不用这个方法了……
安装方法二:
编译安装,不知道会有多少坑呀,开始折腾,命令如下:
缺少依赖的,安装依赖,Ubuntu系统使用 apt
0 |
# apt-get install git gconf2 gconf-service libgtk2.0-0 libudev1 libgcrypt20 libnotify4 libxtst6 libnss3 python gvfs-bin xdg-utils libcap2 |
Atom编译安装命令如下:
0 1 2 3 |
# git clone https://github.com/atom/atom # script/build # Creates application at $TMPDIR/atom-build/Atom # sudo script/grunt install # Installs command to /usr/local/bin/atom # script/grunt mkdeb # Generates a .deb package at $TMPDIR/atom-build |
do 在第二步命令(script/build # Creates application at $TMPDIR/atom-build/Atom)时用时很长,执行后就睡觉了,醒来就发现满屏的报错。我太难了!
如图二:
0 1 2 3 4 |
Package libsecret-1 was not found in the pkg-config search path. Perhaps you should add the directory containing `libsecret-1.pc' to the PKG_CONFIG_PATH environment variable No package 'libsecret-1' found gyp: Call to 'pkg-config --libs-only-l libsecret-1' returned exit status 1 while in binding.gyp. while trying to load binding.gyp |
这是几个意思呢,gyp创建libsecret-1,之后程序检索发现没有libsecret-1,之后配置环境变量PKG_CONFIG_PATH;之后程序检索提示:也许您应该添加包含’ libsecret-1.pc’的目录;之后在pkg-config搜索路径中没有找到包libsecret-1。问题就此产生。
图三
如图三提示,配置错误,nodejs的gyp模块抛出异常
图四
如图四:
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的最新版本
0 1 |
# npm view node-gyp version 6.1.0 |
比我的版本高很多,还真有可能是node-gyp版本低的问题,那就新安装最新版node-gyp,一定要全局安装。
0 |
# npm install -g 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′ foundconfigure: 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=$/includeglib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenumsName: 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 目录,不存在。
那么再回来图二中的两句提示:
0 1 |
Package libsecret-1 was not found in the pkg-config search path. Perhaps you should add the directory containing `libsecret-1.pc' |
在pkg-config搜索路径中没有找到包libsecret-1。
也许您应该添加包含’libsecret-1.pc’的目录
再研究一下 libsecret-1 是什么东西?
我想我现在是不是应该跑一遍Atom的依赖安装呢,前文中提到过,但是我没有跑全部依赖的安装,可是官方(https://github.com/atom/atom/)提示是Ubuntu系统。试试看吧,就算白跑一遍也不会死。
0 |
apt-get install git gconf2 gconf-service libgtk2.0-0 libudev1 libgcrypt20 libnotify4 libxtst6 libnss3 python gvfs-bin xdg-utils libcap2 |
确实有新装的包。
while 2 再进行编译安装Atom……
执行结束,错误依旧……
方法三:
在页面 https://github.com/atom/atom/releases/latest 下载 atom-amd64.tar.gz
0 1 |
# wget https://github.com/atom/atom/releases/download/v1.42.0/atom-amd64.tar.gz # tar -zxvf atom-amd64.tar.gz |
没弄明白怎么用,这个应该是直接可用的。
更改atom-1.42.0-amd64的所有者和所有组,他原来的是所有者和所有组是mysql
0 |
# chown -R atom-1.42.0-amd64 |
修改为可执行文件
0 |
# chmod +x ./atom-1.42.0-amd64/atom |
创建软链接
0 |
# ln -s ./atom-1.42.0-amd64/atom /usr/local/bin/atom |
往下怎么弄不明白了,也没查,暂时搁置……
方法四:
在页面 https://github.com/atom/atom/releases/latest 下载 atom-amd64.deb
0 |
# wget https://github.com/atom/atom/releases/download/v1.42.0/atom-amd64.deb |
下个载都TM这么费劲,这回不让我鼓捣了,直接你就下不来了,操!
跳转到亚马逊的服务器上了,尝试4次连接,全部超时。我TM真是服了!
找到了淘宝源:
0 |
# wget https://npm.taobao.org/mirrors/atom/1.42.0/atom-amd64.deb |
正在下载中,抽根烟,准备继续跳坑……
下载完成,大约用时25分钟左右。
0 |
# dpkg -i atom-amd64.deb |
报错,这张截图传不上来,不知道什么原因,上文本吧,报错内容如下:
0 1 2 3 |
dpkg: 处理归档 atom-amd64.deb (--install)时出错: 软件包体系架构(amd64)与本机系统体系结构(armhf)不符 在处理时有错误发生: atom-amd64.deb |
查了查体系架构的知识,大致了解。
https://dhcp.cn/raspberry/QuickStart/Arm64VsArmhf.html
armhf 代表的是 32 位,arm64 才是代表 64 位
armv7
代表架构还是 32-bit.
armv8
是第一个 arm64 的架构
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
# lscpu Architecture: armv7l Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Model: 4 Model name: ARMv7 Processor rev 4 (v7l) CPU max MHz: 1200.0000 CPU min MHz: 600.0000 BogoMIPS: 38.40 Flags: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 |
到此,我一直以为我的树莓派当时装得是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