internal: better checking of external required dependencies
internal: allow installing/upgrading from a specific branch