--- a/meson.build
+++ b/meson.build
@@ -574,7 +574,7 @@ endif
 
 dir_lib = get_option('libdir')
 
-dir_lib_pkg = dir_lib
+dir_lib_pkg = '/usr/lib/postgresql' / pg_version_major.to_string() / 'lib'
 if not (dir_prefix_contains_pg or dir_lib_pkg.contains('pgsql') or dir_lib_pkg.contains('postgres'))
   dir_lib_pkg = dir_lib_pkg / pkg
 endif
@@ -593,7 +593,7 @@ endif
 dir_man = get_option('mandir')
 
 # FIXME: These used to be separately configurable - worth adding?
-dir_doc = get_option('datadir') / 'doc'
+dir_doc = '/usr/share/doc/postgresql-doc-' + pg_version_major.to_string()
 if not (dir_prefix_contains_pg or dir_doc.contains('pgsql') or dir_doc.contains('postgres'))
   dir_doc = dir_doc / pkg
 endif
@@ -605,7 +605,7 @@ dir_locale = get_option('localedir')
 # Derived values
 dir_bitcode = dir_lib_pkg / 'bitcode'
 dir_include_internal = dir_include_pkg / 'internal'
-dir_include_server = dir_include_pkg / 'server'
+dir_include_server = dir_include_pkg / pg_version_major.to_string() / 'server'
 dir_include_extension = dir_include_server / 'extension'
 dir_data_extension = dir_data / 'extension'
 dir_doc_extension = dir_doc / 'extension'
--- a/src/port/meson.build
+++ b/src/port/meson.build
@@ -194,6 +194,7 @@ foreach name, opts : pgport_variants
       kwargs: opts + {
         'dependencies': opts['dependencies'] + [ssl],
         'install': install_internal_static_lib and name != '_srv',
+        'install_dir': dir_lib_pkg,
       }
     )
   pgport += {name: lib}
--- a/src/common/meson.build
+++ b/src/common/meson.build
@@ -179,6 +179,7 @@ foreach name, opts : pgcommon_variants
         'c_args': c_args,
         'build_by_default': false,
         'install': false,
+        'install_dir': dir_lib_pkg,
       },
     )
   endforeach
@@ -194,6 +195,7 @@ foreach name, opts : pgcommon_variants
         ],
         'dependencies': opts['dependencies'] + [ssl],
         'install': install_internal_static_lib and name != '_srv',
+        'install_dir': dir_lib_pkg,
       }
     )
   pgcommon += {name: lib}
@@ -209,6 +211,7 @@ common_excluded_shlib = static_library('
   build_by_default: false,
   kwargs: default_lib_args + {
     'install': false,
+    'install_dir': dir_lib_pkg,
   },
 )
 
--- a/src/fe_utils/meson.build
+++ b/src/fe_utils/meson.build
@@ -37,5 +37,6 @@ fe_utils = static_library('libpgfeutils'
   dependencies: frontend_common_code,
   kwargs: default_lib_args + {
             'install': install_internal_static_lib,
+            'install_dir': dir_lib_pkg,
           },
 )
--- a/src/backend/meson.build
+++ b/src/backend/meson.build
@@ -322,6 +322,7 @@ pkgconfig.generate(
 
   variables: pg_ext_vars + pg_ext_vars_inst,
   uninstalled_variables: pg_ext_vars + pg_ext_vars_uninst,
+  install_dir: dir_lib_pkg / 'pkgconfig',
 )
 
 # a .pc depending on the above, but with all our warnings enabled
@@ -334,6 +335,7 @@ pkgconfig.generate(
 
   variables: pg_ext_vars + pg_ext_vars_inst,
   uninstalled_variables: pg_ext_vars + pg_ext_vars_uninst,
+  install_dir: dir_lib_pkg / 'pkgconfig',
 )
 
 
