--- lib/update.js.orig	1985-10-26 01:15:00.000000000 -0700
+++ lib/update.js	2021-03-23 15:13:13.000000000 -0700
@@ -44,6 +44,21 @@
       ? global
       : this.npm.prefix
 
+    // Prevent the npm package in global from updating. Prevent
+    // 'npm update -g' since it'll implicity upgrade npm and also
+    // prevent 'npm update -g npm'.
+    if (this.npm.config.get('global')) {
+      if (!args.length || (args.length && args.find(e => e === 'npm'))) {
+        log.error('update', 'Ignoring attempt to update npm in ' + global);
+        log.error('update', 'which is part of the MacPorts npm7 base');
+        log.error('update', 'installation. To update npm please run:');
+        log.error('update', 'sudo port selfupdate && sudo port upgrade npm7');
+        throw new Error('Ignoring attempt to update npm in ' + global +
+                        ' which is part of the MacPorts npm7 base' +
+                        ' installation.');
+      }
+    }
+
     if (this.npm.config.get('depth')) {
       log.warn('update', 'The --depth option no longer has any effect. See RFC0019.\n' +
         'https://github.com/npm/rfcs/blob/latest/implemented/0019-remove-update-depth-option.md')
