[Exchange and share] 关于6月21日内测更新带入大量node包的问题
Tofloor
poster avatar
昨夜的星辰
deepin
2024-06-27 11:06
Author

2024年6月21日内测更新因为依赖问题带入了大量的node相关软件包

升级了 85 个软件包,新安装了 424 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 828 MB 的归档。
解压缩后会消耗 585 MB 的额外空间。
您希望继续执行吗? [Y/n] n
中止。

反馈BUG后,官方人员排除出是因为更新了deepin-unioncode,个人试验了一下确实如此

sudo apt install deepin-unioncode
请输入密码:
验证成功
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成             
将会同时安装下列软件:
  clangd clangd-17 cmake cmake-data gdb gyp handlebars libbabeltrace1 libc6-dbg libcapstone4 libclang-common-17-dev libclang-cpp17 libclang-rt-17-dev libclang1-17
  libdebuginfod-common libdebuginfod1 libdwarf++0 libelf++0 libgrpc++1.51 libgrpc29 libipt2 libjs-async libjs-events libjs-inherits libjs-is-typedarray libjs-prettify
  libjs-psl libjs-regenerate libjs-source-map libjs-sprintf-js libjs-typedarray-to-buffer libjs-util libjsoncpp25 libnode-dev libnode108 libprotobuf32 libprotoc32
  libqt5script5 libqt5scripttools5 librhash0 libsource-highlight-common libsource-highlight4v5 libuv1-dev node-abbrev node-acorn node-agent-base node-ajv node-ajv-keywords
  node-ampproject-remapping node-ansi-escapes node-ansi-regex node-ansi-styles node-anymatch node-aproba node-archy node-are-we-there-yet node-argparse node-arrify node-asn1
  node-assert node-assert-plus node-async node-async-each node-asynckit node-auto-bind node-aws-sign2 node-aws4 node-babel-helper-define-polyfill-provider
  node-babel-plugin-add-module-exports node-babel-plugin-lodash node-babel-plugin-polyfill-corejs2 node-babel-plugin-polyfill-corejs3 node-babel-plugin-polyfill-regenerator
  node-babel7 node-babel7-runtime node-balanced-match node-base node-base64-js node-bcrypt-pbkdf node-big.js node-binary-extensions node-brace-expansion node-braces
  node-browserslist node-builtins node-cacache node-cache-base node-camelcase node-caniuse-lite node-caseless node-chalk node-chokidar node-chownr node-ci-info
  node-cjs-module-lexer node-cli-boxes node-cli-cursor node-cli-table node-cli-truncate node-cliui node-clone node-clone-deep node-collection-visit node-color-convert
  node-color-name node-colors node-columnify node-combined-stream node-commander node-commondir node-console-control-strings node-convert-source-map node-copy-concurrently
  node-core-js node-core-js-compat node-core-js-pure node-core-util-is node-coveralls node-css-loader node-css-selector-tokenizer node-dashdash node-data-uri-to-buffer
  node-debbundle-es-to-primitive node-debug node-decamelize node-decompress-response node-deep-equal node-deep-is node-defaults node-define-properties node-define-property
  node-defined node-del node-delayed-stream node-delegates node-depd node-diff node-ecc-jsbn node-electron-to-chromium node-emojis-list node-encoding node-end-of-stream
  node-err-code node-error-ex node-es-abstract node-es6-error node-escape-string-regexp node-escodegen node-esprima node-estraverse node-esutils node-events node-extend
  node-extsprintf node-fancy-log node-fast-deep-equal node-fast-levenshtein node-fetch node-fill-range node-find-cache-dir node-find-up node-for-in node-for-own
  node-foreground-child node-forever-agent node-form-data node-fs-readdir-recursive node-fs-write-stream-atomic node-fs.realpath node-function-bind node-gauge
  node-get-caller-file node-get-stream node-get-value node-getpass node-glob node-glob-parent node-globals node-globby node-got node-graceful-fs node-growl node-gyp
  node-har-schema node-har-validator node-has-flag node-has-unicode node-has-value node-has-values node-hosted-git-info node-http-signature node-https-proxy-agent
  node-iconv-lite node-icss-utils node-ieee754 node-iferr node-ignore node-imurmurhash node-indent-string node-inflight node-inherits node-ini node-ip node-ip-regex
  node-is-arrayish node-is-binary-path node-is-buffer node-is-descriptor node-is-extendable node-is-extglob node-is-glob node-is-number node-is-path-cwd node-is-path-inside
  node-is-plain-obj node-is-plain-object node-is-primitive node-is-stream node-is-typedarray node-is-windows node-isarray node-isexe node-isobject node-isstream node-istanbul
  node-jest-debbundle node-js-tokens node-js-yaml node-jsbn node-jsesc node-json-buffer node-json-parse-better-errors node-json-schema node-json-schema-traverse
  node-json-stable-stringify node-json-stringify-safe node-json5 node-jsonify node-jsonparse node-jsprim node-kind-of node-lcov-parse node-levn node-loader-utils
  node-locate-path node-lodash node-lodash-packages node-log-driver node-lowercase-keys node-lru-cache node-make-dir node-map-visit node-micromatch node-mime node-mime-types
  node-mimic-response node-minimatch node-minimist node-minipass node-mixin-deep node-mkdirp node-move-concurrently node-ms node-mute-stream node-n3 node-negotiator
  node-neo-async node-nopt node-normalize-package-data node-normalize-path node-npm-bundled node-npm-package-arg node-npm-run-path node-npmlog node-oauth-sign
  node-object-assign node-object-inspect node-object-visit node-once node-opener node-optimist node-optionator node-osenv node-p-cancelable node-p-limit node-p-locate
  node-p-map node-parse-json node-pascalcase node-path-dirname node-path-exists node-path-is-absolute node-path-is-inside node-path-type node-performance-now node-picocolors
  node-pify node-pkg-dir node-postcss node-postcss-modules-extract-imports node-postcss-modules-values node-postcss-value-parser node-prelude-ls node-process-nextick-args
  node-promise-inflight node-promise-retry node-promzard node-psl node-pump node-punycode node-qs node-querystringify node-quick-lru node-re2 node-read node-read-package-json
  node-read-pkg node-readable-stream node-readdirp node-regenerate node-regenerate-unicode-properties node-regenerator-runtime node-regenerator-transform node-regexpu-core
  node-regjsgen node-regjsparser node-repeat-string node-request node-require-directory node-require-from-string node-requires-port node-resolve node-resolve-cwd
  node-resolve-from node-restore-cursor node-resumer node-retry node-rimraf node-run-queue node-safe-buffer node-schema-utils node-sellside-emitter node-semver
  node-set-blocking node-set-immediate-shim node-set-value node-shebang-command node-shebang-regex node-shell-quote node-signal-exit node-slash node-slice-ansi node-source-map
  node-source-map-support node-spdx-correct node-spdx-exceptions node-spdx-expression-parse node-spdx-license-ids node-sprintf-js node-sshpk node-ssri node-stack-utils
  node-string-decoder node-string-width node-strip-ansi node-strip-bom node-supports-color node-tap node-tap-mocha-reporter node-tap-parser node-tape node-tar node-text-table
  node-through node-time-stamp node-to-fast-properties node-to-regex-range node-tough-cookie node-tunnel-agent node-tweetnacl node-type-check node-typedarray-to-buffer
  node-undici node-unicode-canonical-property-names-ecmascript node-unicode-match-property-ecmascript node-unicode-match-property-value-ecmascript
  node-unicode-property-aliases-ecmascript node-union-value node-uniq node-unique-filename node-universalify node-unset-value node-uri-js node-url-parse node-util
  node-util-deprecate node-uuid node-v8flags node-validate-npm-package-license node-validate-npm-package-name node-verror node-wcwidth.js node-which node-wide-align
  node-widest-line node-wordwrap node-wrap-ansi node-wrappy node-write-file-atomic node-ws node-xtend node-y18n node-yallist node-yaml node-yargs node-yargs-parser nodejs
  nodejs-doc npm

但是正常的更新为何要带入deepin-unioncode呢?

apt show dcc-network-plugin ........ xserver-xorg-video-radeon >> 111.txt
#省略了中间的软件包名

将待更新的软件包用apt查找依赖并输出到文本文件后进行查到,找到是deepin-desktop-environment-core这个包带入的

开发人员没感觉的原因可能是因为本机上就有这个包了,可以看到deepin-unioncode的依赖项是在最后的,估计是新添加的吧

至于为什么会添加,十有八九不是需要DC,而是需要DC依赖的某个包,但是又不好去查或者懒得去查到底是哪个包,索性就把DC直接带进来了

Reply Favorite View the author
All Replies
昨夜的星辰
deepin
2024-06-27 11:11
#1

一个系统组件依赖一个IDE,这事儿真是离了大谱了

deepin内部管理太拉了吧,要么钱没给够,要么是开发人员菜鸡并且工作是在混

Reply View the author
ThinkYoung
deepin
2024-06-27 11:17
#2

我以前也曾提过类似问题
我说 deepin前缀 与 dde前缀 命名混乱,组件&应用不分
当时坛里 嘴硬一直说dde是环境 deepin是可卸载的
最后 也是耦合的一片了
有的时候 规范的设计初心是好的 难在执行和审核

Reply View the author
阿尼樱奈奈
Moderator
2024-06-27 12:25
#3
It has been deleted!
昨夜的星辰
deepin
2024-06-27 13:11
#4
阿尼樱奈奈 It has been deleted!

不是预装,是6.21的更新被deepin-desktop-environment-core带进来的

同时带进来的还有几百个node相关的包

因为这个事儿,我现在还没有安装6.21的更新,我是用命令行更新的,更新提醒一看新装了400+软件,果然选了N

用控制中心更新的用户估计都不知道有这事儿,还以为更新了800+MB的东西是系统有什么大动作了。。。

Reply View the author
阿尼樱奈奈
Moderator
2024-06-27 13:20
#5
昨夜的星辰

不是预装,是6.21的更新被deepin-desktop-environment-core带进来的

同时带进来的还有几百个node相关的包

因为这个事儿,我现在还没有安装6.21的更新,我是用命令行更新的,更新提醒一看新装了400+软件,果然选了N

用控制中心更新的用户估计都不知道有这事儿,还以为更新了800+MB的东西是系统有什么大动作了。。。

原来是这样,我之前更新了最新的内测

Reply View the author
忘记、过去
deepin
2024-06-27 14:44
#6

deepin-unioncode 对 npm 相关的依赖也是 recommends,我自己在安装的时候加上是 --no-install-recommends 的,毕竟用不上这些......


放在 core 里面强制依赖是不是有点离谱了,这是不打算让用户卸载?写个 recommends 或者放在 extras 里面比较合适吧

Reply View the author
AMZ
deepin
2024-06-27 15:29
#7

确实离谱了,我又不是开发人员,为什么进来开发工具,试试是ok内置到iso了,我能理解对标吗?

Reply View the author
zccrs
deepin
2024-06-27 16:05
#8
感谢反馈,的确不应该把依赖加到 deepin-desktop-environment-core 包上,现在已经去掉了。

deepin-unicode 不属于 DDE 的一部分,不过我们的确是希望在deepin发行版中为开发者提供一定的开箱即用的环境,所以尝试在系统中进行了预装,但不会把它作为DDE的一部分,也会允许卸载。
另外,会再梳理下 deepin-unicode 的依赖关系,让它的默认版本不直接依赖那么多内容,比如带进来一堆的 node 相关的包,尽量减小对非开发者用户的影响。
 
Reply View the author
神末shenmo
deepin
Spark-App
2024-06-27 16:40
#9
忘记、过去

deepin-unioncode 对 npm 相关的依赖也是 recommends,我自己在安装的时候加上是 --no-install-recommends 的,毕竟用不上这些......


放在 core 里面强制依赖是不是有点离谱了,这是不打算让用户卸载?写个 recommends 或者放在 extras 里面比较合适吧

卸载之后core也会被卸载....离大谱

不过我这里是卸载了之后其他的并没有被直接卸载,可能其他组件也依赖了

Reply View the author
神末shenmo
deepin
Spark-App
2024-06-27 16:40
#10
ThinkYoung

我以前也曾提过类似问题
我说 deepin前缀 与 dde前缀 命名混乱,组件&应用不分
当时坛里 嘴硬一直说dde是环境 deepin是可卸载的
最后 也是耦合的一片了
有的时候 规范的设计初心是好的 难在执行和审核

这倒是没有耦合,可以正常卸载的

只是为何要带到core里比较奇怪,像deepin-music这样的常用,一个IDE...不太常用吧

Reply View the author
jiutian123
deepin
2024-06-30 11:06
#11
神末shenmo

这倒是没有耦合,可以正常卸载的

只是为何要带到core里比较奇怪,像deepin-music这样的常用,一个IDE...不太常用吧

nsz@nsz-PC:~$ sudo apt-get remove --purge deepin-unioncode
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
clangd clangd-17 cmake cmake-data libcapstone4 libclang-common-17-dev libclang-cpp17 libclang-rt-17-dev
libclang1-17 libdwarf++0 libelf++0 libexpat1-dev libgrpc++1.51 libgrpc29 libjs-jquery libjs-sphinxdoc
libjs-underscore libjsoncpp25 libprotobuf32 libprotoc32 libpython3-dev libpython3.11-dev libqt5script5
libqt5scripttools5 librhash0 papirus-icon-theme python3-dev python3-pip python3-wheel python3.11-dev
zlib1g-dev
使用'sudo apt autoremove'来卸载它(它们)。
下列软件包将被【卸载】:
deepin-unioncode*
升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 0 个软件包未被升级。
解压缩后将会空出 121 MB 的空间。
您希望继续执行吗? [Y/n]

Reply View the author