A twisted maze of dependencies
source link: http://rachelbythebay.com/w/2022/02/16/deps/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
A twisted maze of dependencies
Oh sure, everyone laughs about things having a lot of dependencies, but do they ever really think about the implications of having hundreds of teeny little libraries, all moving independently? This is how it manifests in the real world.
I put Debian on my Mac mini last year after it finally reached the point of no longer receiving even security fixes from Apple. It's over 10 years old, so I'm more than fine with that. It makes a nice little Linux box, and so it won't be turning into e-waste any time soon. I'm very happy with the situation.
My relative inexperience with Debian systems means I'm constantly being delighted to discover that such and such has already been packaged up and is just an apt command away. Things that I would have done by hand in the years up to this point now have someone else worrying about them.
Unfortunately, the packagers can only work with what they've been given, and in the case of certain ecosystems, that means an explosion of crazy. Case in point: the other night, I was working on some Javascript code (unavoidable for the problem at hand), wanted to see how much I had screwed up, and thought "hmm, there was this jshint thing that would show me where I did something stupid back in the day". I went looking and didn't find that, but did find something called "eslint". I figured, okay, es, ECMAScript, that's the fancy name for this stuff now, should work, right?
This is what happened next:
mini:~$ sudo apt install eslint
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
javascript-common libc-ares2 libgdk-pixbuf-xlib-2.0-0 libgdk-pixbuf2.0-0
libjs-highlight.js libjs-inherits libjs-regenerate libjs-source-map
libjs-sprintf-js libnode72 libnotify-bin libnotify4 livescript mocha
node-acorn node-ajv node-ansi-colors node-ansi-escapes node-ansi-regex
node-ansi-styles node-anymatch node-argparse node-async-each
node-balanced-match node-binary-extensions node-brace-expansion node-braces
node-browser-stdout node-camelcase node-chalk node-chokidar node-cli-cursor
node-cli-width node-cliui node-clone node-color-convert node-color-name
node-concat-stream node-core-util-is node-debbundle-acorn node-debug
node-decamelize node-deep-is node-defaults node-diff node-doctrine
node-end-of-stream node-escape-string-regexp node-eslint-scope
node-eslint-utils node-eslint-visitor-keys node-espree node-esprima
node-esquery node-esrecurse node-estraverse node-esutils node-execa
node-exit-hook node-external-editor node-fast-deep-equal
node-fast-levenshtein node-file-entry-cache node-fill-range node-find-up
node-flat-cache node-flatted node-fs.realpath node-functional-red-black-tree
node-get-caller-file node-get-stream node-glob node-glob-parent node-globals
node-graceful-fs node-growl node-has-flag node-he node-iconv-lite
node-ignore node-imurmurhash node-inflight node-inherits node-inquirer
node-invert-kv node-is-binary-path node-is-buffer node-is-extglob
node-is-glob node-is-number node-is-plain-obj node-is-promise node-is-stream
node-isarray node-isexe node-js-yaml node-jschardet node-json-schema
node-json-schema-traverse node-json-stable-stringify node-jsonify
node-kind-of node-lcid node-levn node-locate-path node-lodash node-lru-cache
node-mem node-merge-stream node-mimic-fn node-minimatch node-mkdirp node-ms
node-mute-stream node-normalize-path node-npm-run-path node-object-assign
node-once node-optionator node-os-locale node-p-limit node-p-locate
node-path-dirname node-path-exists node-path-is-absolute node-path-is-inside
node-prelude-ls node-process-nextick-args node-progress node-pump
node-punycode node-randombytes node-readable-stream node-readdirp
node-regenerate node-regenerate-unicode-properties node-regexpp
node-repeat-string node-require-directory node-require-main-filename
node-resolve-from node-restore-cursor node-rimraf node-run-async node-rx
node-safe-buffer node-semver node-serialize-javascript node-set-blocking
node-set-immediate-shim node-shebang-command node-shebang-regex
node-signal-exit node-source-map node-source-map-support node-sprintf-js
node-string-decoder node-string-width node-strip-ansi
node-strip-json-comments node-supports-color node-text-table node-through2
node-tmp node-to-regex-range node-type-check node-typedarray node-uri-js
node-util-deprecate node-wcwidth.js node-which node-which-module
node-wide-align node-wordwrap node-wrap-ansi node-wrappy node-write
node-xtend node-y18n node-yallist node-yargs node-yargs-parser nodejs
nodejs-doc notification-daemon
Suggested packages:
node-babel-code-frame node-babel-eslint node-table node-esprima-fb
libjs-angularjs chai npm
The following NEW packages will be installed:
eslint javascript-common libc-ares2 libgdk-pixbuf-xlib-2.0-0
libgdk-pixbuf2.0-0 libjs-highlight.js libjs-inherits libjs-regenerate
libjs-source-map libjs-sprintf-js libnode72 libnotify-bin libnotify4
livescript mocha node-acorn node-ajv node-ansi-colors node-ansi-escapes
node-ansi-regex node-ansi-styles node-anymatch node-argparse node-async-each
node-balanced-match node-binary-extensions node-brace-expansion node-braces
node-browser-stdout node-camelcase node-chalk node-chokidar node-cli-cursor
node-cli-width node-cliui node-clone node-color-convert node-color-name
node-concat-stream node-core-util-is node-debbundle-acorn node-debug
node-decamelize node-deep-is node-defaults node-diff node-doctrine
node-end-of-stream node-escape-string-regexp node-eslint-scope
node-eslint-utils node-eslint-visitor-keys node-espree node-esprima
node-esquery node-esrecurse node-estraverse node-esutils node-execa
node-exit-hook node-external-editor node-fast-deep-equal
node-fast-levenshtein node-file-entry-cache node-fill-range node-find-up
node-flat-cache node-flatted node-fs.realpath node-functional-red-black-tree
node-get-caller-file node-get-stream node-glob node-glob-parent node-globals
node-graceful-fs node-growl node-has-flag node-he node-iconv-lite
node-ignore node-imurmurhash node-inflight node-inherits node-inquirer
node-invert-kv node-is-binary-path node-is-buffer node-is-extglob
node-is-glob node-is-number node-is-plain-obj node-is-promise node-is-stream
node-isarray node-isexe node-js-yaml node-jschardet node-json-schema
node-json-schema-traverse node-json-stable-stringify node-jsonify
node-kind-of node-lcid node-levn node-locate-path node-lodash node-lru-cache
node-mem node-merge-stream node-mimic-fn node-minimatch node-mkdirp node-ms
node-mute-stream node-normalize-path node-npm-run-path node-object-assign
node-once node-optionator node-os-locale node-p-limit node-p-locate
node-path-dirname node-path-exists node-path-is-absolute node-path-is-inside
node-prelude-ls node-process-nextick-args node-progress node-pump
node-punycode node-randombytes node-readable-stream node-readdirp
node-regenerate node-regenerate-unicode-properties node-regexpp
node-repeat-string node-require-directory node-require-main-filename
node-resolve-from node-restore-cursor node-rimraf node-run-async node-rx
node-safe-buffer node-semver node-serialize-javascript node-set-blocking
node-set-immediate-shim node-shebang-command node-shebang-regex
node-signal-exit node-source-map node-source-map-support node-sprintf-js
node-string-decoder node-string-width node-strip-ansi
node-strip-json-comments node-supports-color node-text-table node-through2
node-tmp node-to-regex-range node-type-check node-typedarray node-uri-js
node-util-deprecate node-wcwidth.js node-which node-which-module
node-wide-align node-wordwrap node-wrap-ansi node-wrappy node-write
node-xtend node-y18n node-yallist node-yargs node-yargs-parser nodejs
nodejs-doc notification-daemon
0 upgraded, 186 newly installed, 0 to remove and 0 not upgraded.
Need to get 15.7 MB/15.8 MB of archives.
After this operation, 80.8 MB of additional disk space will be used.
Do you want to continue? [Y/n]
... huh. The story basically ends there. I'm going to handle this some other way.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK