* Add `safe_system` to `initdb` call to catch errors
If the `initdb` step fails (which it can if the options passed are
invalid), then the script will continue having marked `initdb_run` as
`true`. This causes the script to continue to `pg_upgrade` step which
will fail, ultimately triggering the `ensure` block. Since `initdb_run`
is `true`, the script tries to remove `datadir` which we don't want
since that step failed.
The change here adds `safe_system` to ensure if the `initdb` step fails,
it correctly bails out.
* Add -X to `psql` call to ignore `.psqlrc` files
Customizations in `.psqlrc` files can make the output of `psql`
unpredictable, which can break parsing of the command's output. Using -X
causes `psql` to ignore any such files and use the default output
behavior, which can be parsed with consistency.