Skip to content

Symlink errors from tar extraction on Windows #3

@edmorley

Description

@edmorley

Using this plugin on Windows resulted in this error:

$ heroku slugs:download -a treeherder-stage
Downloading... ████████████████████████▏  100% 00:00 72.35MB
tar: ./app/.heroku/vendor/lib/libmemcachedutil.so: Cannot create symlink to ‘libmemcachedutil.so.2.0.0’: No such file or directory
tar: ./app/.heroku/vendor/lib/libhashkit.so: Cannot create symlink to ‘libhashkit.so.2.0.0’: No such file or directory
tar: ./app/.heroku/vendor/lib/sasl2/libanonymous.so.3: Cannot create symlink to ‘libanonymous.so.3.0.0’: No such file or directory
tar: ./app/.heroku/vendor/lib/sasl2/libanonymous.so: Cannot create symlink to ‘libanonymous.so.3.0.0’: No such file or directory
tar: ./app/.heroku/vendor/lib/sasl2/libplain.so.3: Cannot create symlink to ‘libplain.so.3.0.0’: No such file or directory
tar: ./app/.heroku/vendor/lib/sasl2/libscram.so: Cannot create symlink to ‘libscram.so.3.0.0’: No such file or directory
tar: ./app/.heroku/vendor/lib/sasl2/libgssapiv2.so: Cannot create symlink to ‘libgssapiv2.so.3.0.0’: No such file or directory
tar: ./app/.heroku/vendor/lib/sasl2/libgs2.so.3: Cannot create symlink to ‘libgs2.so.3.0.0’: No such file or directory
tar: ./app/.heroku/vendor/lib/sasl2/libdigestmd5.so: Cannot create symlink to ‘libdigestmd5.so.3.0.0’: No such file or directory
tar: ./app/.heroku/vendor/lib/sasl2/libcrammd5.so: Cannot create symlink to ‘libcrammd5.so.3.0.0’: No such file or directory
tar: ./app/.heroku/python/share/man/man1/python.1: Cannot create symlink to ‘python2.1’: No such file or directory
tar: ./app/.heroku/python/bin/python-config: Cannot create symlink to ‘python2-config’: No such file or directory
tar: ./app/.heroku/python/bin/python: Cannot create symlink to ‘python2’: No such file or directory tar: ./app/.heroku/python/bin/python2-config: Cannot create symlink to ‘python2.7-config’: No such file or directory
tar: ./app/.heroku/python/bin/python2: Cannot create symlink to ‘python2.7’: No such file or directory
tar: ./app/.heroku/python/lib/libsqlite3.so: Cannot create symlink to ‘libsqlite3.so.0.8.6’: No such file or directory
tar: ./app/.heroku/python/lib/pkgconfig/python.pc: Cannot create symlink to ‘python2.pc’: No such file or directory
tar: Exiting with failure status due to previous errors
 !    Command failed: tar -xf treeherder-stage/slug.tar -C treeherder-stage
 !    tar: ./app/.heroku/vendor/lib/x86_64-linux-gnu/libmysqlclient.so: Cannot create symlink to
 !    ‘libmysqlclient.so.20’: No such file or directory
 !    tar: ./app/.heroku/vendor/lib/libmemcachedutil.so: Cannot create symlink to
 !    ‘libmemcachedutil.so.2.0.0’: No such file or directory
 !    tar: ./app/.heroku/vendor/lib/libhashkit.so: Cannot create symlink to ‘libhashkit.so.2.0.0’:
 !    No such file or directory
 !    tar: ./app/.heroku/vendor/lib/sasl2/libanonymous.so.3: Cannot create symlink to
 !    ‘libanonymous.so.3.0.0’: No such file or directory
 !    tar: ./app/.heroku/vendor/lib/sasl2/libanonymous.so: Cannot create symlink to
 !    ‘libanonymous.so.3.0.0’: No such file or directory
 !    tar: ./app/.heroku/vendor/lib/sasl2/libplain.so.3: Cannot create symlink to
 !    ‘libplain.so.3.0.0’: No such file or directory
 !    tar: ./app/.heroku/vendor/lib/sasl2/libscram.so: Cannot create symlink to ‘libscram.so.3.0.0’: !    No such file or directory
 !    tar: ./app/.heroku/vendor/lib/sasl2/libgssapiv2.so: Cannot create symlink to
 !    ‘libgssapiv2.so.3.0.0’: No such file or directory
 !    tar: ./app/.heroku/vendor/lib/sasl2/libgs2.so.3: Cannot create symlink to ‘libgs2.so.3.0.0’:
 !    No such file or directory
 !    tar: ./app/.heroku/vendor/lib/sasl2/libdigestmd5.so: Cannot create symlink to
 !    ‘libdigestmd5.so.3.0.0’: No such file or directory
 !    tar: ./app/.heroku/vendor/lib/sasl2/libcrammd5.so: Cannot create symlink to
 !    ‘libcrammd5.so.3.0.0’: No such file or directory
 !    tar: ./app/.heroku/python/share/man/man1/python.1: Cannot create symlink to ‘python2.1’: No
 !    such file or directory
 !    tar: ./app/.heroku/python/bin/python-config: Cannot create symlink to ‘python2-config’: No
 !    such file or directory
 !    tar: ./app/.heroku/python/bin/python: Cannot create symlink to ‘python2’: No such file or
 !    directory
 !    tar: ./app/.heroku/python/bin/python2-config: Cannot create symlink to ‘python2.7-config’: No  !    such file or directory
 !    tar: ./app/.heroku/python/bin/python2: Cannot create symlink to ‘python2.7’: No such file or
 !    directory
 !    tar: ./app/.heroku/python/lib/libsqlite3.so: Cannot create symlink to ‘libsqlite3.so.0.8.6’:
 !    No such file or directory
 !    tar: ./app/.heroku/python/lib/pkgconfig/python.pc: Cannot create symlink to ‘python2.pc’: No
 !    such file or directory
 !    tar: Exiting with failure status due to previous errors
 !

This is because Windows doesn't support symlinks.

Possible solutions:

  1. Default to not extracting the archive (see Allow downloading a slug without extracting it #2) and let the user deal with how they want to extract it.
  2. Pass the --dereference option to tar on Windows (only), to ensure symlinks are followed and converted to real files.

This was using:
heroku-cli/6.11.17-91bdf0b (windows-x64) node-v7.10.0
heroku-slugs 1.0.3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions