Couldn't find a valid ICU package when starting Viper in Linux .NET environment


Overview of the Issue

This issue occurs in the following circumstances:

  1. An organization has a Linux .NET application to be tracked by vFunction
  2. The organization installs the vFunction Controller Installation TGZ on a Linux VM
  3. The vFunction Viper process does not start and throws the following error
 Process terminated. 
 Couldn't find a valid ICU package installed on the system. 
 Please install libicu using your package manager and try again.
 Alternatively you can set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.
 Please see https://aka.ms/dotnet-missing-libicu for more information.
  1. The /var/log/vfunction/instances/INSTANCE_NAME/vfviper-error.log throws the following error
Process terminated. 
Couldn't find a valid ICU package installed on the system. 
Please install libicu using your package manager and try again.
Alternatively you can set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.
Please see https://aka.ms/dotnet-missing-libicu for more information.
   at System.Environment.FailFast(System.String)
   at System.Globalization.GlobalizationMode+Settings..cctor()
   at System.Globalization.GlobalizationMode+Settings.get_Invariant()
   at System.Globalization.GlobalizationMode.get_Invariant()
   at System.Globalization.CultureData.CreateCultureWithInvariantData()
   at System.Globalization.CultureData.get_Invariant()
   at System.Globalization.TextInfo..cctor()
   at System.String.ToUpperInvariant()
   at System.Diagnostics.Tracing.EventSource.GetGuid(System.Type)
   at System.Diagnostics.Tracing.EventSource..ctor(System.Diagnostics.Tracing.EventSourceSettings, System.String[])
   at System.Diagnostics.Tracing.EventSource..ctor(System.Diagnostics.Tracing.EventSourceSettings)
   at System.Diagnostics.Tracing.EventSource..ctor()
   at System.Net.NetEventSource..ctor()
   at System.Net.NetEventSource..cctor()
   at System.Net.Quic.Implementations.MsQuic.Internal.MsQuicApi..cctor()
   at System.Net.Quic.Implementations.MsQuic.Internal.MsQuicApi.get_IsQuicSupported()
   at System.Net.Quic.Implementations.MsQuic.MsQuicImplementationProvider.get_IsSupported()
   at Microsoft.AspNetCore.Hosting.WebHostBuilderQuicExtensions.UseQuic(Microsoft.AspNetCore.Hosting.IWebHostBuilder)
   at Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrel(Microsoft.AspNetCore.Hosting.IWebHostBuilder)
   at Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrel(Microsoft.AspNetCore.Hosting.IWebHostBuilder, System.Action`2<Microsoft.AspNetCore.Hosting.WebHostBuilderContext,Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions>)
   at Microsoft.AspNetCore.WebHost.ConfigureWebDefaults(Microsoft.AspNetCore.Hosting.IWebHostBuilder)
   at Microsoft.Extensions.Hosting.GenericHostBuilderExtensions+<>c__DisplayClass0_0.<ConfigureWebHostDefaults>b__0(Microsoft.AspNetCore.Hosting.IWebHostBuilder)
   at Microsoft.Extensions.Hosting.GenericHostWebHostBuilderExtensions.ConfigureWebHost(Microsoft.Extensions.Hosting.IHostBuilder, System.Action`1<Microsoft.AspNetCore.Hosting.IWebHostBuilder>, System.Action`1<Microsoft.Extensions.Hosting.WebHostBuilderOptions>)
   at Microsoft.Extensions.Hosting.GenericHostWebHostBuilderExtensions.ConfigureWebHost(Microsoft.Extensions.Hosting.IHostBuilder, System.Action`1<Microsoft.AspNetCore.Hosting.IWebHostBuilder>)
   at Microsoft.Extensions.Hosting.GenericHostBuilderExtensions.ConfigureWebHostDefaults(Microsoft.Extensions.Hosting.IHostBuilder, System.Action`1<Microsoft.AspNetCore.Hosting.IWebHostBuilder>)
   at Microsoft.AspNetCore.Builder.WebApplicationBuilder..ctor(Microsoft.AspNetCore.Builder.WebApplicationOptions, System.Action`1<Microsoft.Extensions.Hosting.IHostBuilder>)
   at Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder(System.String[])
   at Program.<Main>$(System.String[])

Steps to Resolve the Issue

This issue can be resolved by taking the following steps:

  1. SSH to the Linux VM
  2. Use the local package manager to install the Libicu package
sudo yum install libicu
  1. Run the vFunction Controller Installation script again to install Viper