conda-forge / perl-feedstock

A conda-smithy repository for perl.
BSD 3-Clause "New" or "Revised" License
3 stars 32 forks source link

libcrypt.so.1 is no longer available from some distributions #56

Closed chrisburr closed 9 months ago

chrisburr commented 2 years ago

Solution to issue cannot be found in the documentation.

Issue

When using perl from conda-forge on Arch Linux I see:

perl: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory

To reproduce with docker (I'm using micromamba for convenience but I see the same with conda/mamba on a full desktop installation of Arch):

$ docker run -it --rm archlinux:latest bash
$ pacman -Syy && pacman --noconfirm -S wget && wget -qO- https://micromamba.snakepit.net/api/micromamba/linux-64/latest | tar -xvj bin/micromamba && bin/micromamba --root-prefix /micromamba-root create --name test -c conda-forge perl --yes
$ /micromamba-root/envs/test/bin/perl

Installed packages

List of packages in environment: "/micromamba-root/envs/test"

  Name           Version  Build             Channel
─────────────────────────────────────────────────────────
  _libgcc_mutex  0.1      conda_forge       conda-forge
  _openmp_mutex  4.5      1_gnu             conda-forge
  libgcc-ng      11.2.0   h1d223b6_14       conda-forge
  libgomp        11.2.0   h1d223b6_14       conda-forge
  libnsl         2.0.0    h7f98852_0        conda-forge
  perl           5.32.1   2_h7f98852_perl5  conda-forge

Environment info

environment : None (not found)
           env location : -
      user config files : /root/.mambarc
 populated config files :
       libmamba version : 0.22.0
     micromamba version : 0.22.0
           curl version : libcurl/7.81.0 OpenSSL/1.1.1l zlib/1.2.11 libssh2/1.10.0 nghttp2/1.47.0
     libarchive version : libarchive 3.3.3 zlib/1.2.11 liblzma/5.2.5 bz2lib/1.0.8 liblz4/1.9.2 libzstd/1.4.5
       virtual packages : __unix=0=0
                          __linux=5.16.11=0
                          __glibc=2.35=0
                          __archspec=1=x86_64
               channels :
       base environment : /root/micromamba
               platform : linux-64
chrisburr commented 2 years ago

Some more information:

I haven't done that much research but it seems like maybe we should be using libxcrypt instead.

@conda-forge/core Any thoughts?

isuruf commented 2 years ago

We can provide libcrypt.so.2 as part of libxcrypt package and use it in perl, python etc and then delete the headers and libcrypt.so.1 from the sysroot. This is what we did for libnsl.so.1 being removed from glibc.

(@chrisburr edited to change libcrypto.so.2 -> libcrypt.so.2)

chrisburr commented 2 years ago

That makes sense to me. I've opened a PR to staged-recipes for libxcrypt/libxcrypt-1: https://github.com/conda-forge/staged-recipes/pull/18377

After it's merged I'll look at making a repodata patch to make perl depend on libxcrypt-1 (and any other packages that depend on libcrypt.so.1).

Bai-Chiang commented 1 year ago

For anyone looking for solution, you need to install libxcrypt1 package.

After it's merged I'll look at making a repodata patch to make perl depend on libxcrypt-1 (and any other packages that depend on libcrypt.so.1).

Maybe libxcrypt-1 get renamed to libxcrypt1?

mbargull commented 9 months ago

Finally, done via gh-64.