flutter create 命令尝试访问根目录失败

The flutter create command tries to access the root directory and fails

Flutter 尝试访问根目录但失败了,但我希望 Flutter 能够访问主目录。 如何修改?

命令

flutter -v 创建hello_world

异常

FileSystemException: FileSystemException: Exists failed, path = '/root/.pub-cache/hosted/pub.dartlang.org/flutter_template_images-1.0.0/lib/' (OS 错误: 权限被拒绝, errno = 13)

#0      _Directory.existsSync (dart:io/directory_impl.dart:101:7)
#1      ForwardingFileSystemEntity.existsSync (package:file/src/forwarding/forwarding_file_system_entity.dart:45:33)
#2      _templateImageDirectory (package:flutter_tools/src/template.dart:253:79)
#3      Template.fromName (package:flutter_tools/src/template.dart:63:38)
#4      CreateCommand._renderTemplate (package:flutter_tools/src/commands/create.dart:629:46)
#5      CreateCommand._generateApp (package:flutter_tools/src/commands/create.dart:543:29)
#6      CreateCommand.runCommand (package:flutter_tools/src/commands/create.dart:380:37)
#7      _rootRunUnary (dart:async/zone.dart:1192:38)
#8      _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#9      _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#10     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#11     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#12     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#13     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:36:15)
#14     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:298:13)
#15     FlutterProject.organizationNames (package:flutter_tools/src/project.dart)
#16     _rootRunUnary (dart:async/zone.dart:1192:38)
#17     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#18     _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#19     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#20     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#21     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#22     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:36:15)
#23     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:298:13)
#24     IosProject.productBundleIdentifier (package:flutter_tools/src/project.dart)
#25     _rootRunUnary (dart:async/zone.dart:1192:38)
#26     _CustomZone.runUnary (dart:async/zone.dart:1085:19)
#27     _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#28     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#29     Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#30     Future._completeWithValue (dart:async/future_impl.dart:526:5)
#31     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:556:7)
#32     _rootRun (dart:async/zone.dart:1184:13)
#33     _CustomZone.run (dart:async/zone.dart:1077:19)
#34     _CustomZone.runGuarded (dart:async/zone.dart:979:7)
#35     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23)
#36     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
#37     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
#38     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
#39     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)

扑博士

[✓] Flutter (Channel stable, v1.17.5, on Linux, locale ja_JP.UTF-8)
    • Flutter version 1.17.5 at /opt/flutter
    • Framework revision 8af6b2f038 (11 days ago), 2020-06-30 12:53:55 -0700
    • Engine revision ee76268252
    • Dart version 2.8.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at /opt/android-sdk
    • Platform android-30, build-tools 30.0.0
    • ANDROID_HOME = /opt/android-sdk
    • Java binary at: /usr/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_252-b09)
    • All Android licenses accepted.

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).

[!] Connected device
    ! No devices available

! Doctor found issues in 2 categories.

控制台日志

[   +7 ms] executing: [/opt/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[  +16 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[        ] 8af6b2f038c1172e61d418869363a28dffec3cb4
[        ] executing: [/opt/flutter/] git tag --contains HEAD
[ +116 ms] Exit code 0 from: git tag --contains HEAD
[   +1 ms] 1.17.5
[   +4 ms] executing: [/opt/flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[   +1 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[        ] origin/stable
[        ] executing: [/opt/flutter/] git ls-remote --get-url origin
[   +1 ms] Exit code 0 from: git ls-remote --get-url origin
[        ] https://github.com/flutter/flutter.git
[  +40 ms] executing: [/opt/flutter/] git rev-parse --abbrev-ref HEAD
[   +2 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] stable
[  +13 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[   +3 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
[        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
[        ] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
[        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
[  +21 ms] Creating project hello_world...
[  +20 ms] "flutter create" took 61ms.

Oops; flutter has exited unexpectedly: "FileSystemException: Exists failed, path =
'/root/.pub-cache/hosted/pub.dartlang.org/flutter_template_images-1.0.0/lib/' (OS Error: Permission denied,
errno = 13)".
[+1043 ms] executing: [/opt/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%ar
[   +2 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%ar
[        ] 11 days ago
[   +5 ms] executing: /opt/flutter/bin/cache/artifacts/engine/android-arm-profile/linux-x64/gen_snapshot
[   +2 ms] Exit code 255 from:
/opt/flutter/bin/cache/artifacts/engine/android-arm-profile/linux-x64/gen_snapshot
[        ] At least one input is required
           Usage: gen_snapshot [<vm-flags>] [<options>] <dart-kernel-file>             

           Common options:                                                             
           --help                                                                      
             Display this message (add --verbose for information about all VM options).
           --version                                                                   
             Print the VM version.                                                     

           To create a core snapshot:                                                  
           --snapshot_kind=core                                                        
           --vm_snapshot_data=<output-file>                                            
           --isolate_snapshot_data=<output-file>                                       
           <dart-kernel-file>                                                          

           To create an AOT application snapshot as assembly suitable for compilation  
           as a static or dynamic library:                                             
           --snapshot_kind=app-aot-assembly                                            
           --assembly=<output-file>                                                    
           [--strip]                                                                   
           [--obfuscate]                                                               
           [--save-debugging-info=<debug-filename>]                                    
           [--save-obfuscation-map=<map-filename>]                                     
           <dart-kernel-file>                                                          

           To create an AOT application snapshot as an ELF shared library:             
           --snapshot_kind=app-aot-elf                                                 
           --elf=<output-file>                                                         
           [--strip]                                                                   
           [--obfuscate]                                                               
           [--save-debugging-info=<debug-filename>]                                    
           [--save-obfuscation-map=<map-filename>]                                     
           <dart-kernel-file>                                                          

           AOT snapshots can be obfuscated: that is all identifiers will be renamed    
           during compilation. This mode is enabled with --obfuscate flag. Mapping     
           between original and obfuscated names can be serialized as a JSON array     
           using --save-obfuscation-map=<filename> option. See dartbug.com/30524       
           for implementation details and limitations of the obfuscation pass.
[  +14 ms] executing: /opt/android-sdk/platform-tools/adb devices -l
⣽[  +17 ms] List of devices attached
[   +2 ms] executing: /opt/android-sdk/platform-tools/adb devices -l
[   +2 ms] List of devices attached
[  +22 ms] executing: /opt/android-sdk/tools/bin/sdkmanager --licenses

如果您使用的是 Arch,这可能适用于您。我在通过 yay/AUR 安装 flutter 时遇到了这个问题。从 https://flutter.dev/docs/get-started/install/linux 手动安装包解决了这个问题。 create 不会尝试访问 /root/ 中的任何内容,我可以 运行 不使用 sudo 的命令。

在我这里发生这个错误是因为我之前运行 flutter 是 root 并且它修改了一个配置文件。

为了解决这个问题,我正确地按照 中的说明进行操作,但这次 运行 绝不会以 root 身份运行。请务必在将自己添加到群组后刷新您的终端。

在我的例子中,快照不是一个选项,尽管它可能适合你。