最近开始折腾了aria2
作为下载工具。感觉那些 Web GUI 有些不友好,至少我用着有些困惑。在melpa上看到了 aria2.el ,觉得至少 emacs 比那些 Web GUI 舒服一点,至少不用开浏览器。
一看那更新时间:20141107.1517,感觉不妙。点了那链接: https://bitbucket.org/ukaszg/aria2-mode
404:页面不存在,感觉没有售后了。
下了源码看了看,这个作者做的挺不错的,默认键绑定兼用 emacs 和 evil,还很贴心地给了个 aria2-add-evil-quirks
选项,自动把两个 major-mode 加入 evil-emacs-state-modes
。
但是 M-x aria2-downloads-list
启动以后,并不能下载,提示如下:
Starting process: /usr/local/bin/aria2c -D --enable-rpc=true --rpc-secret=25C4C3E2-D020-4F7A-B9D3-295653BE77E5 --rpc-listen-port=6800 --dir=/Users/apple/Downloads/ --save-session=/Users/apple/.emacs.d/aria2c.session --input-file=/Users/apple/.emacs.d/aria2c.session
if: Failed to start
在 Github 上能找到这个 package 的 mirror。
我的配置是 Spacemacs 0.222.7, GNU/Emacs 25.1.1, x86_64-apple-darwin16.3.0 macOS Sierra 10.12.3
Homebrew 安装的 aria2 ,版本1.31.0
1 个赞
其实已经启动了,只是这个扩展自己判断错误,可能是因为不兼容 macOS。
函数 process-attributes
在 mac 下不起作用:
(process-attributes 1) ;; => nil
(defun my/aria2--is-aria-process-p (f &rest ARG)
"Returns t if PID belongs to aria."
(let ((pid (car ARG)))
(eq pid (string-to-number
(shell-command-to-string
(format "pgrep -u %s aria2c" (user-real-login-name)))))))
(advice-add 'aria2--is-aria-process-p :around #'my/aria2--is-aria-process-p)
这样就可以启动了,但是并不好用,还有其它问题。
Error running timer ‘aria2--refresh’: (wrong-type-argument listp 49)
启动是启动了,输入 url 也能下载,但是不会显示项目进程。
慢慢来吧。
alist-get(uri 54)
(file-name-nondirectory (alist-get (quote uri) (elt uris 0)))
(and (< 0 (length uris)) (file-name-nondirectory (alist-get (quote uri) (elt uris 0))))
具体的报错,因为太长只贴一部分。
(defsubst aria2--list-entries-File (e)
(let ((bt (alist-get 'bittorrent e)))
(or (and bt (alist-get 'name (alist-get 'info bt)))
(let ((uris (cdr (car (elt (alist-get 'files e) 0)))))
(and (< 0 (length uris)) (file-name-nondirectory (alist-get 'uri (elt uris 0)))))
"unknown")))
问题估计在这里。
在熟悉 Lisp 以后成功修复。怀疑原版本和最新版不兼容。
在 macOS 上对 aria2 1.31.0 和 Emacs 25.2进行了测试。