
Amazon Linux 2023에서 Dotnet runtime을 설치하는 이하의 과정을 수행한다.
Red Hat Enterprise Linux) 기반)sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum install aspnetcore-runtime-{version}
dotnet --list-runtimes
A fatal error occurred, the folder [/usr/lib64/dotnet/host/fxr] does not contain any version-numbered child folders
이전에는 발생하지 않는 오류였는데, 새로 환경을 구축할 때 발생하였다.
그나마 유사한 사례는 다음 링크. (완전히 동일한 사례는 아니다.)
여기서 제시하는 문제원인은 repo-conflict이라는 것이다.
이하는 현재 설치하려는 runtime과 관련된 Package의 목록의 일부이다.

amazonlinux의 Repo와 packages-migrosoft-com-prod의 repo-conflict가 아닌가? 예상된다.
이전에 정상 구동했던 환경에서의 폴더 구조는 다음과 같다.

지금 구축된 환경에서의 동일한 폴더에서의 폴더 구조는 다음과 같다.

사라진 dotnet파일은 다른 곳에 있다.

readlink를 통하여 user bin dotnet이 무엇을 실행하나 보았더니 이 폴더의 dotnet파일을 사용한다.
readlink /user/bin/dotnet
여기 위에 있는 host안에는 fxr폴더가 있는데, 이 안이 비어있다.
정상적이라면, 버전이름이 있는 폴더가 있어야 한다.
저것이 없어서 이하 오류가 발생한다.
A fatal error occurred, the folder [/usr/lib64/dotnet/host/fxr] does not contain any version-numbered child folders
.NET Core가 구버전인경우, Amazon Linux 2023을 사용하지 않는다.
(6+ 일때 2023 사용 권장)
Amazon Linux 2는 구버전이라도 정상적으로 구동되므로, 이를 이용한다.
혹시 의존성을 packages-microsoft-com-prod에서만 가져올 수 있는것이 아닐까? 하며
sudo yum --disablerepo=amazonlinux --skip-broken install aspnetcore-runtime-{version}
으로 amazonlinux repo를 disable해보았다.
Error:
Problem: conflicting requests
라는 오류와 함께 설치되지 않았다.
몇가지의 package가 microsoft repo에 없는 것으로 보인다.
RHEL7링크가 아니라 8링크로 해보았다.
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm
No match for argument: aspnetcore-runtime-{version}
Error: Unable to find a match: aspnetcore-runtime-{version}
해당 버전의 런타임을 찾지 못한다고 한다.
설치되는 repo의 이름 차이점은
packages-microsoft-prod-1.0-1.noarch (v8)
packages-microsoft-prod-1.0-1.el7.noarch (v7)
이다.
el7이 붙은 쪽이 더 최신이라고 한다.
파일 자체를 옮기기에는 환경적인 문제가 있을 수 있으므로,
rm -r /usr/lib64/dotnet/host
host, shared 폴더를 링크로 가져온다.sudo ln -s /usr/share/dotnet/shared ./shared
sudo ln -s /usr/share/dotnet/host ./host
하지만, 정상 구동은 되지 않는다.
위 방법 사용하지 말 것