Skopeo failure in air-gapped installation script

After you mirror your images, the air-gapped installation script uses skopeo list-tags to gather tags for each olm-catalog image. The tags are encoded such that the tags can determine which image is the latest and tag it (if appropriate). If you cannot get a version of Skopeo that supports list-tags (any version of Skopeo after 1.0), you can manually tag the latest catalogs.

Symptom

Running the air-gapped installation script after all of the images are mirrored results in the following error message:

Prerequisite                                                                     Result
Client skopeo CLI must meet the following regex:  skopeo version 1.d*.d*         false
Required prereqs. result: FAILED
error: Parsing the actions prereqs faiiled

Solution

To manually tag the latest catalogs without Skopeo, edit the offline cache in the *-images.csv files and manually change the tags to latest before mirroring. For example, you can edit the ibm-cp-common-services-1.3.2-images.csv file in the offline directory, find the olm-catalog entries, then edit the latest tag to latest. Each row in the CSV file adheres to the following structure:

registry,image_name,tag,digest,mtype,os,arch,variant,insecure,digest_source,image_type,groups

Replace the value of tag with latest as in the following example.

Before replacing values:

docker.io,ibmcom/ibm-common-service-catalog,v3.7.2-20210325.000000-000000000,sha256:b20aae26ee6fa864c6e9595c3d8cdf9b9d8390fbe8f63769e74bf93fafb95d4b,LIST,"","","",0,CASE,olm-catalog,""
docker.io,ibmcom/ibm-common-service-catalog,v3.7.2-20210325.000000-000000000-linux.amd64,sha256:36695dac219270144e80ccf67ca49b95b537ac3959b5652e8a6d783169931db1,IMAGE,linux,amd64,"",0,CASE,olm-catalog,"
docker.io,ibmcom/ibm-common-service-catalog,v3.7.2-20210325.000000-000000000-linux.ppc64le,sha256:ca343191cdcb9ceb80b68b5095579881254f637878eadb743bc122002c591749,IMAGE,linux,ppc64le,"",0,CASE,olm-catalog,""
docker.io,ibmcom/ibm-common-service-catalog,v3.7.2-20210325.000000-000000000-linux.s390x,sha256:a377820194c0d1258555425b55d30238d0dc99f9ca9bd423abb74ea32e404092,IMAGE,linux,s390x,"",0,CASE,olm-catalog,""

After replacing values:

docker.io,ibmcom/ibm-common-service-catalog,latest,sha256:b20aae26ee6fa864c6e9595c3d8cdf9b9d8390fbe8f63769e74bf93fafb95d4b,LIST,"","","",0,CASE,olm-catalog,""
docker.io,ibmcom/ibm-common-service-catalog,latest-linux.amd64,sha256:36695dac219270144e80ccf67ca49b95b537ac3959b5652e8a6d783169931db1,IMAGE,linux,amd64,"",0,CASE,olm-catalog,"
docker.io,ibmcom/ibm-common-service-catalog,latest-linux.ppc64le,sha256:ca343191cdcb9ceb80b68b5095579881254f637878eadb743bc122002c591749,IMAGE,linux,ppc64le,"",0,CASE,olm-catalog,""
docker.io,ibmcom/ibm-common-service-catalog,latest-linux.s390x,sha256:a377820194c0d1258555425b55d30238d0dc99f9ca9bd423abb74ea32e404092,IMAGE,linux,s390x,"",0,CASE,olm-catalog,""