Mangled generated path on `ln_s` with `relative: true`
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 68/100
Piste de recherche
Commencez par fileutils.rb autour des lignes 709 et 760, où la stack trace montre que FileUtils.ln_s et FileUtils.ln_sr gèrent le lien relatif. Reproduisez les snippets qui échouent et ceux qui fonctionnent avec relative: true, en vérifiant les deux modes noop. C’est terminé lorsque le cas du répertoire parent produit la cible relative correcte dans la sortie détaillée et crée le symlink avec succès.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
I found this accidently when trying to wrote a dotfile linker utility.
Seems like FileUtils.ln_s will fail when the resulting relative path contains ../ (one directory hierarchy higher) as the relative path being generated is mangled.
Sample snippets to reproduce:
FileUtils.ln_s(
"/home/mipan/.dotfiles/zsh", "/home/mipan/.config/zsh",
verbose: true, noop: true, relative: true
)
Output: ln -s /home/mipan/.config/zsh/zsh
And this is not a pure logging bug, when the noop set to false:
FileUtils.ln_s(
"/home/mipan/.dotfiles/zsh", "/home/mipan/.config/zsh",
verbose: true, noop: false, relative: true
)
ln -s /home/mipan/.config/zsh/zsh
/usr/lib/ruby/3.4.0/fileutils.rb:760:in 'File.symlink': No such file or directory @ rb_file_s_symlink - (, /home/mipan/.config/zsh/zsh) (Errno::ENOENT)
from /usr/lib/ruby/3.4.0/fileutils.rb:760:in 'block in FileUtils.ln_sr'
from /usr/lib/ruby/3.4.0/fileutils.rb:765:in 'FileUtils.ln_sr'
from /usr/lib/ruby/3.4.0/fileutils.rb:709:in 'FileUtils.ln_s'
from ./dot_linker.rb:362:in '<main>'
Sample for working parameters:
FileUtils.ln_s(
"/home/mipan/.dotfiles/zsh", "/home/mipan/zsh",
verbose: true, noop: true, relative: true
)
Output: ln -s .dotfiles/zsh /home/mipan/zsh
Ruby version:
❯ ruby --version
ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [x86_64-linux]
- Langage dominant
- Ruby
- Étoiles
- 69
- Forks
- 37
- Merge moyen
- 3 h 38 min
- PR mergées (30 j)
- 19
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de ruby/fileutils
Toutes les issues de ruby/fileutils
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
riscv/riscv-unified-db#2626 ·
-
Component: GLib
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
ds-drift
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
we-promise/sure#3693 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
simp/pupmod-simp-simp#395 ·