ansible-collections / ansible.posix

Ansible Collection for Posix
Other
153 stars 150 forks source link

Cannot install on Windows (MSYS2 or Cygwin) #315

Open samhocevar opened 2 years ago

samhocevar commented 2 years ago
SUMMARY

The installation tarball contains symbolic links that appear before the file they link to in the archive. This makes ansible.posix uninstallable on Windows because tar fails to create dangling symlinks and there is no control on the order in which files appear in the tarball.

There does not seem to be an easy fix. I can think of several suggestions:

ISSUE TYPE
COMPONENT NAME
ANSIBLE VERSION
% ansible --version
ansible 2.9.21
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/sam/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.9.9 (main, Nov 21 2021, 19:18:40) [GCC 10.2.0]
COLLECTION VERSION
% ansible-galaxy collection list ansible.posix
usage: ansible-galaxy collection [-h] COLLECTION_ACTION ...
ansible-galaxy collection: error: argument COLLECTION_ACTION: invalid choice: 'list' (choose from 'init', 'build', 'publish', 'install')

I guess it’s version 1.3.0.

CONFIGURATION
% ansible-config dump --only-changed
ANSIBLE_SSH_ARGS(env: ANSIBLE_SSH_ARGS) = -o ControlMaster=no
OS / ENVIRONMENT

Up-to-date Windows 11, with up-to-date MSYS2 (mingw64), configured with strict native symlinks (winsymlinks:nativestrict).

STEPS TO REPRODUCE

Just attempt to install using ansible-galaxy collection install ansible.posix.

Or simply try to unpack the tarball: wget -qO- https://galaxy.ansible.com/download/ansible-posix-1.3.0.tar.gz | tar xz

EXPECTED RESULTS

The tarball should unpack without errors.

ACTUAL RESULTS

Using ansible-galaxy:

% ansible-galaxy collection install ansible.posix
Process install dependency map
Starting collection install process
Installing 'ansible.posix:1.3.0' to '/home/sam/.ansible/collections/ansible_collections/ansible/posix'
ERROR! Unexpected Exception, this is probably a bug: [Errno 2] No such file or directory: b'cloud.sh' -> b'/home/sam/.ansible/collections/ansible_collections/ansible/posix/tests/utils/shippable/azure.sh'
to see the full traceback, use -vvv

Using tar:

% wget -qO- https://galaxy.ansible.com/download/ansible-posix-1.3.0.tar.gz | tar xz
tar: tests/utils/shippable/azure.sh: Cannot create symlink to ‘cloud.sh’: No such file or directory
tar: tests/utils/shippable/cs.sh: Cannot create symlink to ‘cloud.sh’: No such file or directory
tar: tests/utils/shippable/rhel.sh: Cannot create symlink to ‘remote.sh’: No such file or directory
tar: tests/utils/shippable/aix.sh: Cannot create symlink to ‘remote.sh’: No such file or directory
tar: tests/utils/shippable/macos.sh: Cannot create symlink to ‘remote.sh’: No such file or directory
tar: tests/utils/shippable/tower.sh: Cannot create symlink to ‘cloud.sh’: No such file or directory
tar: tests/utils/shippable/freebsd.sh: Cannot create symlink to ‘remote.sh’: No such file or directory
tar: tests/utils/shippable/osx.sh: Cannot create symlink to ‘remote.sh’: No such file or directory
tar: Exiting with failure status due to previous errors
hiyokotaisa commented 2 years ago

It works on my cygwin 3.3.4-2 on Windows 11:

$ ansible-galaxy collection install ansible.posix
Process install dependency map
Starting collection install process
Installing 'ansible.posix:1.3.0' to '/home/thelv/.ansible/collections/ansible_collections/ansible/posix'

thelv@hiyoko-hadesnuc ~
$ ls ~/.ansible/collections/ansible_collections/ansible/posix/
CHANGELOG.rst  MANIFEST.json  docs     plugins           test-requirements.txt
COPYING        README.md      hacking  requirements.txt  tests
FILES.json     changelogs     meta     shippable.yml

Also, your test command wget -qO- https://galaxy.ansible.com/download/ansible-posix-1.3.0.tar.gz | tar xz is working on my environment without issue too.

thelv@hiyoko-hadesnuc ~
$ wget -qO- https://galaxy.ansible.com/download/ansible-posix-1.3.0.tar.gz | tar xz

thelv@hiyoko-hadesnuc ~
$ ls
CHANGELOG.rst  MANIFEST.json  docs     plugins           shippable.yml
COPYING        README.md      hacking  requirements.txt  test-requirements.txt
FILES.json     changelogs     meta     rustup-init.exe   tests

Could you check you are using latest version of Cygwin? It seems there is no issue on collection side.

saito-hideki commented 2 years ago

Hi @samhocevar If it is possible, can you re-confirm that according to the advice from @hiyokotaisa ?

@hiyokotaisa thank you for your valuable advice! :)