NeoGeographyToolkit / StereoPipeline

The NASA Ames Stereo Pipeline is a suite of automated geodesy & stereogrammetry tools designed for processing planetary imagery captured from orbiting and landed robotic explorers on other planets.
Apache License 2.0
478 stars 168 forks source link

Conda ASP 3.3.0 installation issue using miniforge3 #432

Closed ryodohemmi closed 2 months ago

ryodohemmi commented 2 months ago

Describe the bug Conda ASP 3.3.0 installation issue using miniforge3 of Ubuntu22.04/WSL2

To Reproduce

cd ~
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
sh ./Miniforge3-Linux-x86_64.sh

# Do you accept the license terms? [yes|no]
# >>> yes
# [/home/hemmi/miniforge3] >>> [Enter]
# You can undo this by running `conda init --reverse $SHELL`? [yes|no]
# [no] >>> yes

source ~/.bashrc

conda update -y -n base -c conda-forge conda
conda install -y -n base conda-libmamba-solver
conda config --set solver libmamba
conda config --show solver
# solver: libmamba

conda create -y -n asp330
conda activate asp330

conda config --env --add channels conda-forge \
                   --add channels usgs-astrogeology \
                   --add channels nasa-ames-stereo-pipeline
conda config --show channels
# channels:
#   - nasa-ames-stereo-pipeline
#   - usgs-astrogeology
#   - conda-forge

conda install -y stereo-pipeline==3.3.0
# Channels:
#  - nasa-ames-stereo-pipeline
#  - usgs-astrogeology
#  - conda-forge
# Platform: linux-64
# Collecting package metadata (repodata.json): done
# Solving environment: failed
# 
# LibMambaUnsatisfiableError: Encountered problems while solving:
#   - package stereo-pipeline-3.3.0-h3fd9d12_0 requires multiview isis8.*, but none of the providers can be installed
# 
# Could not solve for environment specs
# The following package could not be installed
# └─ stereo-pipeline 3.3.0  is not installable because it requires
#    ├─ libglvnd-cos7-x86_64, which requires
#    │  └─ sysroot_linux-64 2.17.* , which can be installed;
#    └─ multiview isis8.* , which requires
#       └─ mesa-libgl-cos6-x86_64 but there are no viable options
#          ├─ mesa-libgl-cos6-x86_64 11.0.7 would require
#          │  └─ sysroot_linux-64 99999999999 , which conflicts with any installable versions previously reported;
#          └─ mesa-libgl-cos6-x86_64 11.0.7 would require
#             └─ sysroot_linux-64 2.12.* , which conflicts with any installable versions previously reported.

Expected behavior Just a successful installation. Actually istalling ASP3.2.0 with conda install -y stereo-pipeline==3.2.0 is successful on the same environement (miniforge3/Ubuntu22.04/WSL2).

Your Environment (please complete the following information):

Additional context The reason I use miniforge3 rather than miniconda3 or anaconda3 is to use libmamba solver and to avoid the use of "defaults" channel, which may lead to the commercial use of Anaconda in the future.

oleg-alexandrov commented 2 months ago

I was able to install ASP 3.3.0 on Linux while using the mamba installer. (The conda one should work too, I guess, it is just slower.)

I first deleted all local packages to ensure they are fetched fresh, then did:

conda create -n asp conda activate asp mamba install -c nasa-ames-stereo-pipeline -c usgs-astrogeology -c conda-forge stereo-pipeline==3.3.0

See if you have any luck with this. You should install in a completely new environment.

On Wed, Apr 24, 2024 at 6:13 PM Ryodo Hemmi @.***> wrote:

Describe the bug Conda installation ASP 3.3.0 issue using miniforge3 of Ubuntu22.04/WSL2

To Reproduce

wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh sh ./Miniforge3-Linux-x86_64.sh

Do you accept the license terms? [yes|no]# >>> yes# [/home/hemmi/miniforge3] >>> [Enter]# You can undo this by running conda init --reverse $SHELL? [yes|no]# [no] >>> yes

source ~/.bashrc

conda update -y -n base -c conda-forge conda conda install -y -n base conda-libmamba-solver conda config --set solver libmamba conda config --show solver# solver: libmamba

conda config --env --add channels conda-forge \ --add channels usgs-astrogeology \ --add channels nasa-ames-stereo-pipeline conda config --show channels# channels:# - nasa-ames-stereo-pipeline# - usgs-astrogeology# - conda-forge

conda install -y stereo-pipeline==3.3.0# Channels:# - nasa-ames-stereo-pipeline# - usgs-astrogeology# - conda-forge# Platform: linux-64# Collecting package metadata (repodata.json): done# Solving environment: failed# # LibMambaUnsatisfiableError: Encountered problems while solving:# - package stereo-pipeline-3.3.0-h3fd9d12_0 requires multiview isis8., but none of the providers can be installed# # Could not solve for environment specs# The following package could not be installed# └─ stereo-pipeline 3.3.0 is not installable because it requires# ├─ libglvnd-cos7-x86_64, which requires# │ └─ sysroot_linux-64 2.17. , which can be installed;# └─ multiview isis8. , which requires# └─ mesa-libgl-cos6-x86_64 but there are no viable options# ├─ mesa-libgl-cos6-x86_64 11.0.7 would require# │ └─ sysroot_linux-64 99999999999 , which conflicts with any installable versions previously reported;# └─ mesa-libgl-cos6-x86_64 11.0.7 would require# └─ sysroot_linux-64 2.12. , which conflicts with any installable versions previously reported.

Expected behavior Just a successful installation. Actually istalling ASP3.2.0 is successful on the same environement (miniforge3/Ubuntu22.04/WSL2).

Your Environment (please complete the following information):

  • OS: Ubuntu22.04/WSL2/Windows11Pro
  • ASP Version: 3.3.0

Additional context The reason I use miniforge3 rather than miniconda3 or anaconda3 is to use libmamba solver and to avoid the use of "defaults" channel, which will lead to the commercial use of Anaconda.

— Reply to this email directly, view it on GitHub https://github.com/NeoGeographyToolkit/StereoPipeline/issues/432, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKDU3EOOBU2Q7VKA6B2TA3Y7BKFLAVCNFSM6AAAAABGX5LFROVHI2DSMVQWIX3LMV43ASLTON2WKOZSGI3DENBSG4ZTQNI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

ryodohemmi commented 2 months ago

Thanks! I also tested mamba install not via libmamba solver but on Miniforge3:

conda deactivate
conda config --set solver classic
conda config --show solver
# solver: classic
conda create -y -n asp
conda activate asp
conda install -y -c conda-forge mamba
mamba install -y -c nasa-ames-stereo-pipeline \
                            -c usgs-astrogeology \
                            -c conda-forge \
                            stereo-pipeline==3.3.0

# Looking for: ['stereo-pipeline==3.3.0']
# 
# conda-forge/linux-64                                        Using cache
# conda-forge/noarch                                          Using cache
# usgs-astrogeology/linux-64                                    No change
# usgs-astrogeology/noarch                                      No change
# nasa-ames-stereo-pipeline/noarch                              No change
# nasa-ames-stereo-pipeline/linux-64                            No change
# 
# Pinned packages:
#   - python 3.12.*
# 
# 
# warning  libmamba Added empty dependency for problem type SOLVER_RULE_UPDATE
# Could not solve for environment specs
# The following package could not be installed
# └─ stereo-pipeline 3.3.0  is installable and it requires
#    └─ multiview isis8.* , which requires
#       └─ python >=3.9,<3.10.0a0 , which can be installed.

So I changed it python=3.9

conda deactivate
conda env remove -y -n asp
conda create -y -n asp python=3.9
conda install -y -c conda-forge mamba
mamba install -y -c nasa-ames-stereo-pipeline \
                            -c usgs-astrogeology \
                            -c conda-forge \
                            stereo-pipeline==3.3.0

# Looking for: ['stereo-pipeline==3.3.0']
# 
# conda-forge/linux-64                                        Using cache
# conda-forge/noarch                                          Using cache
# usgs-astrogeology/linux-64                                    No change
# nasa-ames-stereo-pipeline/noarch                              No change
# nasa-ames-stereo-pipeline/linux-64                            No change
# usgs-astrogeology/noarch                                      No change
# 
# Pinned packages:
#   - python 3.9.*
#  
#  
#  
#  Could not solve for environment specs
#  The following package could not be installed
#  └─ stereo-pipeline 3.3.0  is not installable because it requires
#     ├─ libglvnd-cos7-x86_64, which requires
#     │  └─ sysroot_linux-64 2.17.* , which can be installed;
#     └─ multiview isis8.* , which requires
#        └─ mesa-libgl-cos6-x86_64 but there are no viable options
#           ├─ mesa-libgl-cos6-x86_64 11.0.7 would require
#           │  └─ sysroot_linux-64 99999999999 , which conflicts with any installable versions previously reported;
#           └─ mesa-libgl-cos6-x86_64 11.0.7 would require
#              └─ sysroot_linux-64 2.12.* , which conflicts with any installable versions previously reported.

The same issue remains. I guess Miniforge3 itself seems the cause.

oleg-alexandrov commented 2 months ago

Tough one. Since it works for me and nobody else raised this issue, not sure. You can try the tarball, which is also a lot more recent. See https://stereopipeline.readthedocs.io/en/latest/installation.html.

If you need isis, that can be installed separately.

You can also install with conda, not with mamba. Or you can follow the recipe here: https://stereopipeline.readthedocs.io/en/latest/installation.html#using-a-precise-list-of-packages

ryodohemmi commented 2 months ago

Many thanks, Oleg! Finally I found a simpler solution to install ASP3.0.0 together with ISIS8.0.0. No errors occurred even on the environment of Miniforge3/Ubuntu22.04/WSL2. I just followed the instruction with use of yaml.

cd ~
wget https://raw.githubusercontent.com/NeoGeographyToolkit/StereoPipeline/master/conda/asp_3.3.0_linux_env.yaml

conda env create -y -n asp330 -f asp_3.3.0_linux_env.yaml
conda activate asp330

conda env config vars set ISISROOT=$CONDA_PREFIX ISISDATA=~/isisdata
conda activate asp330

which stereo
# /home/hemmi/miniforge3/envs/asp330/bin/stereo

cat $CONDA_PREFIX/version
# 8.0.0 # Public version number
# 2023-08-02 # Release date
# stable # Release stage (alpha, beta, stable)

conda list | grep "usgs"
# bullet                    2.86.1                        0    usgs-astrogeology
# isis                      8.0.0                   np125_0    usgs-astrogeology
# jama                      125                           0    usgs-astrogeology
# kakadu                    1                             0    usgs-astrogeology
# tnt                       126                           0    usgs-astrogeology
# usgscsm                   1.7.0                h00ab1b0_1    conda-forge

conda list | grep "nasa-ames-stereo-pipeline"
# fgr                       isis7                h3fd9d12_0    nasa-ames-stereo-pipeline
# geoid                     1.0_isis7                     1    nasa-ames-stereo-pipeline
# htdp                      1.0_isis7                     1    nasa-ames-stereo-pipeline
# laszip                    2.1.0_isis7          h3fd9d12_1    nasa-ames-stereo-pipeline
# libelas                   isis7                h3fd9d12_0    nasa-ames-stereo-pipeline
# libgdal                   3.5_isis8            h3fd9d12_0    nasa-ames-stereo-pipeline
# liblas                    1.8.2_isis8          h3fd9d12_0    nasa-ames-stereo-pipeline
# libnabo                   isis7                h3fd9d12_0    nasa-ames-stereo-pipeline
# libpointmatcher           isis7                h2bc3f7f_0    nasa-ames-stereo-pipeline
# multiview                 isis8            py39h3fd9d12_0    nasa-ames-stereo-pipeline
# s2p-subset                isis7                h3fd9d12_0    nasa-ames-stereo-pipeline
# stereo-pipeline           3.3.0                h3fd9d12_0    nasa-ames-stereo-pipeline
# visionworkbench           3.3.0                h3fd9d12_0    nasa-ames-stereo-pipeline
oleg-alexandrov commented 2 months ago

That it worked with precisely spelled out package versions and did not work with conda's own lookup, may mean that there is some issue with the dependency solver in conda. Not sure why mine works.

Anyhow, glad it works.

Note that ASP 3.3.0 is more than half a year old by now. The latest doc refers to the latest version. One should choose the "stable" doc version on readthedocs, though the stereo-only logic did not change much.

ryodohemmi commented 2 months ago

Yes. I also confirmed that I can make the conda environment of the ASP latest build successfully on Miniforge3.

cd ~
wget https://raw.githubusercontent.com/NeoGeographyToolkit/StereoPipeline/master/conda/asp_deps_3.4.0_alpha_linux_env.yaml  

conda env create -y -n asp -f asp_deps_3.4.0_alpha_linux_env.yaml
conda activate asp

mkdir ~/isisdata
conda env config vars set ISISROOT=$CONDA_PREFIX ISISDATA=~/isisdata
conda activate asp
conda install -y rclone -c conda-forge
downloadIsisData base $ISISDATA

wget https://github.com/NeoGeographyToolkit/StereoPipeline/releases/download/2024-04-24-daily-build/StereoPipeline-3.4.0-alpha-2024-04-24-x86_64-Linux.tar.bz2  
mkdir asp
tar xvf StereoPipeline-3.4.0-alpha-2024-04-24-x86_64-Linux.tar.bz2 \
        -C asp --strip-components 1

echo '#!/bin/bash' > $CONDA_PREFIX/etc/conda/activate.d/asp-activate.sh
echo 'export PATH="/home/hemmi/asp/bin:${PATH}"' >> $CONDA_PREFIX/etc/conda/activate.d/asp-activate.sh
chmod +x $CONDA_PREFIX/etc/conda/activate.d/asp-activate.sh

echo '#!/bin/bash' > $CONDA_PREFIX/etc/conda/deactivate.d/asp-deactivate.sh
echo "export PATH=$(echo $PATH | tr ':' '\n' | grep -v '/home/hemmi/asp/bin' | tr '\n' ':')" >> $CONDA_PREFIX/etc/conda/deactivate.d/asp-deactivate.sh
echo 'export PATH=${PATH%:}' >> $CONDA_PREFIX/etc/conda/deactivate.d/asp-deactivate.sh
chmod +x $CONDA_PREFIX/etc/conda/deactivate.d/asp-deactivate.sh

conda deactivate
conda activate asp

stereo --version
# NASA Ames Stereo Pipeline 3.4.0-alpha
#   Build ID: 6e08c416
#   Build date: 2024-04-24
# 
# Built against:
#   NASA Vision Workbench 3.4.0-alpha
#     Build ID: cae738a1
#   USGS ISIS 7.2.0
#   Boost C++ Libraries 1.82.0
#   GDAL 3.8.0 | 20231106

conda list | grep "usgs"
# bullet                    2.86.1                        0    usgs-astrogeology
# isis                      8.0.0                   np125_0    usgs-astrogeology
# jama                      125                           0    usgs-astrogeology
# kakadu                    1                             0    usgs-astrogeology
# tnt                       126                           0    usgs-astrogeology
# usgscsm                   1.7.0                h00ab1b0_1    conda-forge

conda list | grep "nasa-ames-stereo-pipeline"
# fgr                       isis7                h3fd9d12_0    nasa-ames-stereo-pipeline
# geoid                     1.0_isis7                     1    nasa-ames-stereo-pipeline
# htdp                      1.0_isis7                     1    nasa-ames-stereo-pipeline
# libelas                   isis7                h3fd9d12_0    nasa-ames-stereo-pipeline
# libgdal                   3.5_isis8            h3fd9d12_0    nasa-ames-stereo-pipeline
# libnabo                   isis7                h3fd9d12_0    nasa-ames-stereo-pipeline
# libpointmatcher           isis7                h2bc3f7f_0    nasa-ames-stereo-pipeline
# multiview                 isis8            py39h3fd9d12_0    nasa-ames-stereo-pipeline
# pdal                      2.4.2_asp3.3.0   py39h3fd9d12_0    nasa-ames-stereo-pipeline
# s2p-subset                isis7                h3fd9d12_0    nasa-ames-stereo-pipeline