New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
mv: target ~/.cache/fisher/github.com/... is not a directory #557
Comments
@tobia Did you upgrade from 3.1.1 to 3.2.0 while using fish 2.7.1 just now? I'd like to know if the problem was fish 2.7.1 or a breaking change that I might have sneaked into the code. |
Yes, I'm using fish 2.7.1 and I tried several versions of fisher, resetting all caches in between, as you can see from the logs I posted. Either I have something weird in my system, or there was a breaking change in 3.20. |
@tobia Can you try removing fisher completely and trying again? |
I've been removing What else should I remove? |
I mean just run |
@tobia Any luck? |
I have the same problem with fish version 3.1.0. I tried it with fisher self-uninstall and after that installed it again but no luck |
After debuggin the script, i found out, that at line 306 the pkgname is missing.
|
Ok no this is not the problem the same happens with |
Maybe |
I tried to recreate it in docker but can't. |
Does not work with new version. I get the same error. |
Same here. I'm using a freshly installed Ubuntu 20.04 (although I did bring my home folder over from my previous installation) with the provided Fish 3.1.0 and I get the same error as before:
The 4 lines of code I'm running to test it, as I did in the OP, are: 1. downloading the specific version of fisher; 2. sourcing it into the running shell; 3. removing all fisher-related configurations and caches; 4. trying to add a package. |
These two environment variables don't exists.
|
@MaSven Does your |
Yes it does ❰sven❙~❱✘≻ mkdir --help
Aufruf: mkdir [OPTION]... VERZEICHNIS...
Erzeugen der/des Verzeichnisse(s), wenn sie noch nicht existieren.
Erforderliche Argumente für lange Optionen sind auch für kurze erforderlich.
-m, --mode=MODUS Zugriffsrechte setzen (wie bei chmod), nicht a=rwx − umask
-p, --parents kein Fehler, wenn vorhanden; übergeordnete
Verzeichnisse erzeugen, wenn notwendig
-v, --verbose für jedes angelegte Verzeichnis eine Meldung ausgeben
-Z SELinux-Sicherheitskontext jedes erzeugten Verzeichnisses
auf den Standardtyp setzen
--context[=KTXT] wie -Z, oder, wenn angegeben den SELinux- oder SMACK-
Kontext auf KTXT setzen
--help diese Hilfe anzeigen und beenden
--version Versionsinformation anzeigen und beenden
Onlinehilfe für GNU coreutils: <https://www.gnu.org/software/coreutils/>
Melden Sie Übersetzungsfehler für %s an <translation-team-de@lists.sourceforge.net>
Die vollständige Dokumentation ist hier: <https://www.gnu.org/software/coreutils/mkdir>
oder auch lokal mittels „info '(coreutils) mkdir invocation'“
❰sven❙~❱✔≻ |
Here you described the steps to reproduce the bug by installing So, repeat your steps, but instead of $ fisher add jorgebucaran/fish-spark What happens? Thank you for attempting to debug the script, but I don't think that's the issue, as our goal is just to create the parent directory tree. Copying the package there happens later. @MaSven What about your |
❰sven❙~❱✘≻ fisher add jorgebucaran/fish-spark
fetching https://codeload.github.com/jorgebucaran/fish-spark/tar.gz/master
linking ~/.config/fish/functions/spark.fish
added 1 package, removed 1 package in 0.56s This worked. ❰sven❙~❱✔≻ cp --help
Aufruf: cp [OPTION]... [-T] QUELLE ZIEL
oder: cp [OPTION]... QUELLE... VERZEICHNIS
oder: cp [OPTION]... -t VERZEICHNIS QUELLE...
Kopieren von QUELLE nach ZIEL, oder mehreren QUELLE(n) in VERZEICHNIS
Erforderliche Argumente für lange Optionen sind auch für kurze erforderlich.
-a, --archive genau wie -dpR --preserve=all
--attributes-only nicht die Dateidaten, sondern nur die Attribute
kopieren
--backup[=KONTROLLE] eine Sicherung existierender Zieldateien erzeugen
-b wie --backup, akzeptiert aber kein Argument
--copy-contents wenn rekursiv, Inhalt von Spezialdateien kopieren
-d genau wie --no-dereference --preserve=links
-f, --force wenn existierende Zieldatei nicht geöffnet werden
kann, löschen und erneut versuchen (wird bei
Verwendung der Option -n ignoriert)
-i, --interactive vor einem Überschreiben nachfragen (überstimmt
eine vorangehende Option -n)
-H symbolischen Verknüpfungen, die auf der
Kommandozeile als QUELLE angegeben sind,
folgen
-l, --link Dateien verknüpfen, statt sie zu kopieren
-L, --dereference symbolischen Verknüpfungen in QUELLE immer folgen
-n, --no-clobber keine existierenden Dateien überschreiben
(übersteuert eine vorangehende Option -i)
-P, --no-dereference symbolischen Verknüpfungen in QUELLE nie folgen
-p genau wie --preserve=mode,ownership,timestamps
--preserve[=ATTR_LIST] angegebene Datei‐Attribute erhalten wenn möglich
(Voreinstellung: mode,ownership,timestamps;
weitere Attribute: context, links, xattr, all)
--no-preserve=ATTR_LIST Angegebene Attribute nicht erhalten
--parents kompletten Quell‐Pfad an VERZEICHNIS anhängen
-R, -r, --recursive Verzeichnisse rekursiv kopieren
--reflink[=WANN] Klon/CoW Kopien kontrollieren. Siehe unten
--remove-destination jede Zieldatei vor dem Versuch, sie zu öffnen,
löschen (im Gegensatz zu --force)
--sparse=WANN Erstellung von Dateien mit Löchern (s. u.) steuern
--strip-trailing-slashes Schrägstriche vom Ende jedes QUELLE‐Arguments
entfernen
-s, --symbolic-link symbolische Verknüpfungen erzeugen anstatt
zu kopieren
-S, --suffix=ENDUNG Standard-Sicherungs‐Dateiendung ändern
-t, --target-directory=VERZ alle QUELLE‐Argumente in VERZ kopieren
-T, --no-target-directory ZIEL als normale Datei behandeln
-u, --update nur kopieren, wenn die QUELL‐Datei neuer ist
als die Zieldatei oder die Zieldatei nicht
existiert
-v, --verbose durchgeführte Tätigkeiten erklären
-x, --one-file-system in diesem Dateisystem verbleiben
-Z den SELinux-Sicherheitskontext der Zieldatei
auf den Standardtyp setzen
--context[=KTXT] Wie -Z, oder, wenn KTXT angegeben wurde, den
SELinux- oder SMACK-Sicherheitskontext auf
KTXT setzen
--help diese Hilfe anzeigen und beenden
--version Versionsinformation anzeigen und beenden |
If that worked, could you clarify what didn't work? I thought you couldn't install any packages at all? Or is the issue you can't install |
I think I misread the first comment. But for me it is only happening with sdkman-for-fish. |
Thank you for clarifying that, @MaSven. When fisher installs a package, it'll also attempt to activate it, that means sourcing all the files inside functions, completions and the conf.d directory. Maybe there's something in reitzig/sdkman-for-fish/blob/master/conf.d/sdk.fish causing Fisher to fail. Are you able to install reitzig/sdkman-for-fish by simply dropping {functions,conf.d}/sdk.fish inside your functions and conf.d directory respectively? |
Am Sonntag, 24. Mai 2020, 17:09:18 CEST schrieb Jorge Bucaran:
Thank you for clarifying that, @MaSven. When fisher installs a package, it'll also attempt to activate it, that means sourcing all the files inside functions, completions and conf.d directory.
Maybe there's something in [reitzig/sdkman-for-fish/blob/master/conf.d/sdk.fish](https://github.com/reitzig/sdkman-for-fish/blob/master/conf.d/sdk.fish) causing Fisher to fail.
Are you able to install reitzig/sdkman-for-fish by simply dropping {functions,conf.d}/sdk.fish inside your functions and conf.d directory respectively?
Yes this works.
|
Okay, I was worried about installing this package, but I decided to give it a go after checking the source code (which seemed fine): fetching https://codeload.github.com/reitzig/sdkman-for-fish/tar.gz/master
linking ~/.config/fish/functions/sdk.fish
linking ~/.config/fish/completions/sdk.fish
linking ~/.config/fish/conf.d/sdk.fish
added 1 package in 0.17s ...and it installed without problems. I'm afraid that without a reliable way to reproduce this error, there's not much I can do. |
One difference I note is that spark has only a single top-level file, while sdkman-for-fish has This line seems fragile to me: if command curl $curl_opts -Ss -w \"\" $url 2>&1 | command tar -xzf- -C $fisher_config/$pkg 2>/dev/null We don't have pipefail (?) so it relies on So, @tobia and @MaSven, what versions of
is? @jorgebucaran , would it make sense to capture error output, and print it in case of an issue? I'll note that What I think might be going on here is the download fails for some reason, and an old version of tar exits with Then we enter the cp/mv orgy despite not having downloaded anything. I will note that I do not understand this sequence of commands: rm -Rf $fisher_cache/$pkg
mv -f $fisher_config/$pkg/* $fisher_cache/$pkg If the glob matches exactly one file, this will work; otherwise, I read "copy A and B into C which doesn't exist". I tried to reproduce along these lines, but didn't manage to. 🤷 |
I tried the same with https://github.com/rafaelrinaldi/pure and this seems to work normally. My tar version is 1.32 GNU. Maybe i need an example with completions. |
@tobia will have to answer that; I've never been able to reproduce. :/ I'm happy to help and/or fix sdkman-for-fish -- if I get any hint as to what may be the problem. |
I cannot seem to be able to install new packages using any 3.2.x version of fisher.
Here is an example using 3.2.0, but the same error occurs with any later version including master:
Here is the same command with 3.1.1, which works properly:
I'm using fish 2.7.1, installed from the default apt repository of Ubuntu 18.04
The text was updated successfully, but these errors were encountered: