Pharo 9 (amd64) Ubuntu 20.04.3 LTS (Focal Fossa)
I installed Pharo 9 by following the instructions for Xubuntu 20.04 at [OpenSuse Builder](https://bityl.co/ABlH "OpenSuse Builder"). Next I checked for a starter script: `hedster:~$ which pharo` `/usr/bin/pharo` Then I executed the script … `hedster:~$ pharo` … which did not start the Pharo GUI but produced a pile of error messages I don’t understand. I’m sorry to inflict this on you because it is rather long. See the CLI output below. Regards, Hedster --- `hedley-PC:~$ pharo` `Module not found.` `LGitLibrary(Object)>>error:` `LGitLibrary>>unixModuleName` `LGitLibrary(FFILibrary)>>unixLibraryName` `LGitLibrary(FFILibrary)>>unix64LibraryName` `Unix64Platform>>ffiLibraryName:` `LGitLibrary(FFILibrary)>>libraryName` `FFICalloutMethodBuilder>>libraryName` `FFICalloutMethodBuilder>>createFFICalloutLiteralFromSpec:` `FFICalloutMethodBuilder>>generateFFICallout:spec:` `[ :builder | self generateFFICallout: builder spec: functionSpec ] in FFICalloutMethodBuilder>>generateMethodFromSpec: in Block: [ :builder | self generateFFICallout: builder spec...etc...` `IRBuilder class>>buildIR:` `FFICalloutMethodBuilder>>generateMethodFromSpec:` `FFICalloutMethodBuilder>>generate` `FFICalloutMethodBuilder>>build:` `FFICalloutAPI>>function:library:` `LGitLibrary(Object)>>ffiCall:library:options:` `LGitLibrary(Object)>>ffiCall:library:` `LGitLibrary(Object)>>ffiCall:` `LGitLibrary>>libgit2_init` `[ self libgit2_init.` `self recordInitializationSuccess ] in LGitLibrary>>initializeLibGit2 in Block: [ self libgit2_init....` `BlockClosure>>on:do:` `LGitLibrary>>initializeLibGit2` `LGitLibrary class>>startUp:` `ClassSessionHandler>>startup:` `[ :each | each startup: isImageStarting ] in WorkingSession>>runStartup: in Block: [ :each | each startup: isImageStarting ]` `[ aBlock value: each ] in [ :each | ` `[ aBlock value: each ]` ` on: Exception` ` do: [ :error | self errorHandler handleError: error ] ] in WorkingSession>>runList:do: in Block: [ aBlock value: each ]` `BlockClosure>>on:do:` `[ :each | ` `[ aBlock value: each ]` ` on: Exception` ` do: [ :error | self errorHandler handleError: error ] ] in WorkingSession>>runList:do: in Block: [ :each | ...` `Array(SequenceableCollection)>>do:` `WorkingSession>>runList:do:` `Failed to find SDL2 library.` `SDL2 class(Object)>>error:` `SDL2 class>>findSDL2` `SDL2 class>>moduleName` `SDL2 class>>ffiLibraryName` `SDL2 class(Object)>>ffiLibrary` `SDL2 class(Object)>>ffiCall:` `SDL2 class>>setHint:value:` `SDL2 class>>initLibrary` `SDL2 class>>initEverything` `OSSDL2Driver>>initialize` `OSSDL2Driver class(Behavior)>>new` `OSWindowDriver class>>current` `OSWorldRenderer>>pickMostSuitableWindowDriver` `OSWorldRenderer>>doActivate` `OSWorldRenderer(AbstractWorldRenderer)>>activate` `WorldState>>worldRenderer:` `MorphicUIManager>>activate` `UIManager class>>default:` `UIManagerSessionHandler>>startup:` `[ :each | each startup: isImageStarting ] in WorkingSession>>runStartup: in Block: [ :each | each startup: isImageStarting ]` `[ aBlock value: each ] in [ :each | ` `[ aBlock value: each ]` ` on: Exception` ` do: [ :error | self errorHandler handleError: error ] ] in WorkingSession>>runList:do: in Block: [ aBlock value: each ]` `BlockClosure>>on:do:` `[ :each | ` `[ aBlock value: each ]` ` on: Exception` ` do: [ :error | self errorHandler handleError: error ] ] in WorkingSession>>runList:do: in Block: [ :each | ...` `Array(SequenceableCollection)>>do:` `WorkingSession>>runList:do:` `WorkingSession>>runStartup:` `WorkingSession>>start:` `SessionManager>>launchSnapshot:andQuit:` `[ isImageStarting := self launchSnapshot: save andQuit: quit.` `wait signal ] in SessionManager>>snapshot:andQuit: in Block: [ isImageStarting := self launchSnapshot: save and...etc...` `[ self value.` `Processor terminateActive ] in BlockClosure>>newProcess in Block: [ self value....` `Error: Failed to find SDL2 library.` `SDL2 class(Object)>>error:` `SDL2 class>>findSDL2` `SDL2 class>>moduleName` `SDL2 class>>ffiLibraryName` `SDL2 class(Object)>>ffiLibrary` `SDL2 class(Object)>>ffiCall:` `SDL2 class>>setHint:value:` `SDL2 class>>initLibrary` `SDL2 class>>initEverything` `OSSDL2Driver>>initialize` `OSSDL2Driver class(Behavior)>>new` `OSWindowDriver class>>current` `OSWorldRenderer>>pickMostSuitableWindowDriver` `OSWorldRenderer>>doActivate` `OSWorldRenderer(AbstractWorldRenderer)>>activate` `WorldState>>worldRenderer:` `MorphicUIManager>>activate` `UIManager class>>default:` `UIManagerSessionHandler>>startup:` `[ :each | each startup: isImageStarting ] in WorkingSession>>runStartup: in Block: [ :each | each startup: isImageStarting ]` `[ aBlock value: each ] in [ :each | ` `[ aBlock value: each ]` ` on: Exception` ` do: [ :error | self errorHandler handleError: error ] ] in WorkingSession>>runList:do: in Block: [ aBlock value: each ]` `BlockClosure>>on:do:` `[ :each | ` `[ aBlock value: each ]` ` on: Exception` ` do: [ :error | self errorHandler handleError: error ] ] in WorkingSession>>runList:do: in Block: [ :each | ...` `Array(SequenceableCollection)>>do:` `WorkingSession>>runList:do:` `WorkingSession>>runStartup:` `WorkingSession>>start:` `SessionManager>>launchSnapshot:andQuit:` `[ isImageStarting := self launchSnapshot: save andQuit: quit.` `wait signal ] in SessionManager>>snapshot:andQuit: in Block: [ isImageStarting := self launchSnapshot: save and...etc...` `[ self value.` `Processor terminateActive ] in BlockClosure>>newProcess in Block: [ self value....` `#renderer was sent to nil` `UndefinedObject(Object)>>doesNotUnderstand: #renderer` `UndefinedObject>>doesNotUnderstand: #renderer` `OSWorldRenderer>>osWindowRenderer` `OSWorldRenderer>>checkForNewScreenSize` `WorldState>>doOneCycleNowFor:` `WorldState>>doOneCycleFor:` `WorldMorph>>doOneCycle` `WorldMorph class>>doOneCycle` `[ [ WorldMorph doOneCycle.` `Processor yield.` `false ] whileFalse: [ ] ] in MorphicUIManager>>spawnNewProcess in Block: [ [ WorldMorph doOneCycle....` `[ self value.` `Processor terminateActive ] in BlockClosure>>newProcess in Block: [ self value....`