ScoopInstaller / Scoop

A command-line installer for Windows.
https://scoop.sh
Other
20.91k stars 1.39k forks source link

[Bug] If file in url is valid torrent file, aria2 stays on seeding #6089

Open filip2cz opened 1 month ago

filip2cz commented 1 month ago

Bug Report

Current Behavior

If I try download torrent file from webserver (for examlpe https://www.retro-exo.com/eXoDOS_Lite.torrent), aria2c will automatically download content of that torrent. This is not bad, but after it is downloaded, it stayson seeding of that torrent, so installation cannot be completed.

Expected Behavior

It should just download that torrent file and I will use it properly later, or download content of that torrent without seeding after download is completed.

Additional context/output

I am working on manifest for eXoDOS, which is only distributed via torrents. I wanted to download that torrent file and added aria2c into dependencies, so I can download content of that torrent in pre_install part. For my surprise, aria2c started download content of that torrent. That is good thing, but after it is downloaded, it stays on seeding.

Possible Solution

Detect if link is torrent file or magnet link and if it is, add this parameter into aria2c: --seed-time=0

or

Decide that we dont want to support torrents at all and find way to "disable" that thing that it start automatically download content of that torrent.

System details

Windows version: 11

OS architecture: 64bit

PowerShell version: 7.4.4

Scoop Configuration

{
    "last_update":  "2024-08-01T02:25:26.3177069+02:00",
    "scoop_repo":  "https://github.com/ScoopInstaller/Scoop",
    "scoop_branch":  "master"
}
filip2cz commented 1 month ago

Manifest file for reproducing:

{
    "version": "6.0",
    "license": "Freeware",
    "homepage": "https://www.retro-exo.com/exodos.html",
    "url": "https://www.retro-exo.com/eXoDOS_Lite.torrent",
    "depends": ["main/aria2"],
    "pre_install":[
        "echo Here will be pre_install part"
    ]
}
HUMORCE commented 1 month ago
                                                     ↓ https://github.com/ScoopInstaller/Scoop/wiki/App-Manifests#optional-properties
"url": "https://www.retro-exo.com/eXoDOS_Lite.torrent#/eXoDOS_Lite.torrent.dl",
"pre_install":[
        ↓ 'eXoDOS_Lite.torrent.dl'
  "echo $fname",
  "# Your scripts..."
]
filip2cz commented 1 month ago
                                                     ↓ https://github.com/ScoopInstaller/Scoop/wiki/App-Manifests#optional-properties
"url": "https://www.retro-exo.com/eXoDOS_Lite.torrent#/eXoDOS_Lite.torrent.dl",
"pre_install":[
        ↓ 'eXoDOS_Lite.torrent.dl'
  "echo $fname",
  "# Your scripts..."
]

still does not working, same result

delete "depends": ["main/aria2"] This would solve it, but I need aria2 later to download that torrent, so I cannot just work without it.

HUMORCE commented 1 month ago

emmmm, you are right, the function cannot resolve this issue. The issue you pointed out is a bug absolutely.

But you can move the torrent file download to script.

{
    "version": "6.0",
    "url": "https://www.example.org/#/retro-exo",
    "depends": ["main/aria2"],
    "pre_install":[
        "$torrent='https://www.retro-exo.com/eXoDOS_Lite.torrent' # Or magnet",
        "aria2c ..."
    ]
}

filip2cz commented 3 weeks ago

emmmm, you are right, the function cannot resolve this issue. The issue you pointed out is a bug absolutely.

But you can move the torrent file download to script.

{
    "version": "6.0",
    "url": "https://www.example.org/#/retro-exo",
    "depends": ["main/aria2"],
    "pre_install":[
        "$torrent='https://www.retro-exo.com/eXoDOS_Lite.torrent' # Or magnet",
        "aria2c ..."
    ]
}

I have to download at least something, so I am just downloading exodosvi_cover.jpg from main page. But this solved my issue.

filip2cz commented 3 weeks ago

The issue you pointed out is a bug absolutely.

I will left this issue open, because it is bug and maybe someone fill fix it.