Tsuk1ko / pxder

🖼 Download illusts from pixiv.net P站插画批量下载器
https://moe.best/projects/pxder.html
GNU General Public License v3.0
743 stars 78 forks source link

/usr/bin/env: "node\r": 没有那个文件或目录 #6

Closed VergeDX closed 6 years ago

VergeDX commented 6 years ago

如题... 执行 sudo npm i -g pxder 后,再执行 pxder 报错如下:

/usr/bin/env: "node\r": 没有那个文件或目录

系统为 XUbuntu 32位,nodejs 版本为 v8.10.0nodejs 使用 apt 安装)

请问是怎么回事呢... (PS:在 Windows 8.1 上完美运行) 谢谢!

Tsuk1ko commented 6 years ago

可以参考 https://stackoverflow.com/questions/18130164/nodejs-vs-node-on-ubuntu-12-04

VergeDX commented 6 years ago

成功解决,十分感谢! 从 https://nodejs.org/en/download/ 下载了编译好的二进制文件,然后

sudo ln -s /home/vanilla/nodejs/bin/node /usr/local/bin/node
sudo ln -s /home/vanilla/nodejs/bin/npm /usr/local/bin/npm
npm install -g pxder

但是:

vanilla@vanilla-Presario-V3700-Notebook-PC:~/git/pxder$ npm install -g pxder
/home/vanilla/nodejs/bin/pxder -> /home/vanilla/nodejs/lib/node_modules/pxder/bin/pxder
+ pxder@2.5.4
added 52 packages from 58 contributors in 2.487s
vanilla@vanilla-Presario-V3700-Notebook-PC:~/git/pxder$ pxder
pxder:未找到命令

不过:

vanilla@vanilla-Presario-V3700-Notebook-PC:~/nodejs/bin$ ll
总用量 32236
drwxrwxr-x 2 vanilla vanilla     4096 9月  24 15:39 ./
drwxrwxr-x 6 vanilla vanilla     4096 9月  24 15:25 ../
-rwxrwxr-x 1 vanilla vanilla 32998049 9月  24 15:25 node*
lrwxrwxrwx 1 vanilla vanilla       38 9月  24 15:25 npm -> ../lib/node_modules/npm/bin/npm-cli.js*
lrwxrwxrwx 1 vanilla vanilla       38 9月  24 15:25 npx -> ../lib/node_modules/npm/bin/npx-cli.js*
lrwxrwxrwx 1 vanilla vanilla       35 9月  24 15:39 pxder -> ../lib/node_modules/pxder/bin/pxder*
vanilla@vanilla-Presario-V3700-Notebook-PC:~/nodejs/bin$ ./pxder

You must login first!
    Try pxder --login

You must set download path first!
    Try pxder --setting

Run pxder -h for more usage information.

于是手动创建软链接后正常 感谢! (顺便问一下:可以开 pr 汉化嘛?)

Tsuk1ko commented 6 years ago

主要是考虑到某些VPS奇奇怪怪的语言环境所以统一用了英文😃 因为都是很简单的英文所以感觉也没什么汉化的必要 如果真要汉化的话我是打算等我想想怎么做GUI

VergeDX commented 6 years ago

唔...问个问题

  -F, --follow-private    download / update illusts from your private follows
      --force             ignore last progress

请问这个 force 选项是做什么用的呢?

VergeDX commented 6 years ago

还有,好像发现了个问题 像 pxder -b -B 这样的命令,似乎只会识别 -b 这一个选项... 如果是 pxder -Bb 的命令也是如此...

Tsuk1ko commented 6 years ago

比如你-f之后下到一半退出了,然后你又新关注了画师,如果直接-f就还是你上次的下载队列,而-f --force可以重新收集画师队列(包含你新关注的画师)

这些命令是互斥的,只会执行一个 https://github.com/YKilin/pxder/blob/fd032d7a1724508f8abd2448b5ce574fc209f4a4/bin/pxder#L62-L72

VergeDX commented 6 years ago

谢谢

tcdw commented 5 years ago

我尝试在 macOS 把 pxder 全局安装后,也出现了一样的问题。。

tcdw@tcdw-mac.local ~/Repos $ pxder
env: node\r: No such file or directory
tcdw@tcdw-mac.local ~/Repos $ which pxder
/usr/local/bin/pxder
tcdw@tcdw-mac.local ~/Repos $ which node
/Users/tcdw/n/bin/node
tcdw@tcdw-mac.local ~/Repos $ node -v
v10.13.0
tcdw@tcdw-mac.local ~/Repos $

于是我使用 node $(which pxder) 运行,可以正常打开。。

我检查了一下,发现 pxder 使用的是 CRLF 换行符。。然后用 dos2unix 转换了一下,就可以直接在终端执行 pxder 启动程序了。。

Tsuk1ko commented 5 years ago

@tcdw 因为git clone以及npm i的时候会根据系统环境自动转换换行符所以应该不会有这个问题…… 并且我在我自己的Linux上测试不会有换行符格式问题 可能macOS上有些什么差异……

VergeDX commented 5 years ago

窝在 Ubuntu 上npm i -g pxder也是那样的问题 node 是下载下来然后软连接装的 所以窝现在都npm i以后再手动软链接的…

Tsuk1ko commented 5 years ago

@tcdw 新版本已经将入口脚本换成 LF 换行了

Tsuk1ko commented 5 years ago

@VergeDX 说起来你这个问题最原本可能也是因为\r换行符的问题,但我自己没出现过,总之有点迷……

tcdw commented 5 years ago

哇,十分感谢www

Tsuk1ko commented 5 years ago

@tcdw 话说你解决问题的时候是只转换了入口脚本是么,但是内部有几个js仍是 CRLF,而只转换了入口脚本就正常了也感觉很迷……

tcdw commented 5 years ago

是的,我的确只转换了一个入口文件。。

看起来 node.js 内部会处理好换行符的问题,所以对于 require 来的文件没有影响。。

Tsuk1ko commented 5 years ago

@tcdw 我好像明白了

npm 全局安装时比如把 pxder 安装到了node/lib/node_modules/pxder

对于 Unix,入口文件会被拷贝一份到node/bin并且在开头加上#!/usr/bin/env node以直接作为系统的可执行脚本,由于 macOS 命令行也是 Unix 的所以应该是相同的处理方式,node 的这个操作不知道什么情况下就没有考虑换行符转换,而是维持原来的换行符格式,因此会提示找不到node\r

而 Windows 的处理方式不太一样,是新增了一个pxder.cmd作为入口,实质上是调用 node 传参数的方法执行,所以换行符对 Windows 没有影响

:: pxder.cmd
@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\node_modules\pxder\bin\pxder" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  "%~dp0\node_modules\pxder\bin\pxder" %*
)
VergeDX commented 5 years ago

嗯...在 Arch 上没一点问题了:

[vanilla@Vanilla_Arch_Server pxder]$ screenfetch
                   -`
                  .o+`                 vanilla@Vanilla_Arch_Server
                 `ooo/                 OS: Arch Linux
                `+oooo:                Kernel: x86_64 Linux 4.19.4-arch1-1-ARCH
               `+oooooo:               Uptime: 1h 25m
               -+oooooo+:              Packages: 225
             `/:-:++oooo+:             Shell: bash 4.4.23
            `/++++/+++++++:            CPU: Intel Core2 Duo T5550 @ 2x 1.833GHz [53.0°C]
           `/++++++++++++++:           GPU: GeForce 8400M GS
          `/+++ooooooooooooo/`         RAM: 72MiB / 982MiB
         ./ooosssso++osssssso+`
        .oossssso-````/ossssss+`
       -osssssso.      :ssssssso.
      :osssssss/        osssso+++.
     /ossssssss/        +ssssooo/-
   `/ossssso+/:-        -:/+osssso+-
  `+sso+:-`                 `.-/+oso:
 `++:.                           `-/+/
 .`                                 `/
[vanilla@Vanilla_Arch_Server pxder]$ pxder

You must login first!
    Try pxder --login

You must set download path first!
    Try pxder --setting

Run pxder -h for more usage information.

感谢修复!