【问题标题】:java.io.IOException: Cannot download No space left on devicejava.io.IOException:无法下载设备上没有剩余空间
【发布时间】:2018-05-12 15:11:45
【问题描述】:

我正在尝试在 Android Studio 上下载 android 系统映像以模拟应用程序。问题是 android studio 无法下载系统映像。查看日志后,它说我的设备上没有剩余空间,但我的笔记本电脑上还剩下 960GB。

确切的错误信息是

2017-11-28 20:32:13,136 [d thread 8]   INFO - s.RepoProgressIndicatorAdapter - Downloading https://dl.google.com/android/repository/extras/intel/addon2-1.xml   
2017-11-28 20:32:13,238 [d thread 8]   WARN - s.RepoProgressIndicatorAdapter - java.io.IOException: Cannot download 'https://dl.google.com/android/repository/extras/intel/addon2-1.xml': No space left on device, response: 200 OK

另一个重要信息是我的笔记本电脑运行的是 solus Linux。

【问题讨论】:

  • Info 和 Warn 消息对于 Linux 中的用户来说都是非关键的通知,并且在显示时并不表示过程失败(无论它们听起来多么可怕)。您可能正在追逐错误的错误。 (总的来说,这似乎有点特殊,即不在 sudo 中运行命令,将整个硬盘 chmod 为不可写等)
  • No space left on device 似乎是一个明显的错误。您要下载到临时分区吗?

标签: android linux android-studio solus


【解决方案1】:

这是一个非常常见的错误。系统用作缓存的临时文件夹已满。现在,每次重新启动时都会清除 tmp。但是,Android Studio 占用了大量空间。下面,我将介绍您的选择。

如何确定 /tmp 是否是问题所在?

在终端上输入:

df -h | grep -e 'Filesystem' -e '/tmp'

在输出中,查看“Use%”列。如果百分比很高,那么您的 tmp 空间不足。如果您进行大量编译或安装,这也将成为以后的问题。

你有三个选择,

  1. 让 android studio 使用另一个临时文件夹
  2. 暂时增加/tmp大小以完成更新或编译
  3. 一直增加/tmp。通常操作系统会将 /tmp 文件夹设置为 内存大小的一半。我假设 /tmp 不是一个单独的 分区。

选项 1. 找出 android studio 的安装位置并修改 studio.sh 文件以传递变量。当 android studio 启动时,env 变量告诉 android manager 使用指定的临时文件夹。

第 1 步。 找到 android studio 的安装位置。它通常位于 /opt/android-studio 文件夹中。为了简单起见,下面将包含来自 whereis -l 输出的模式为 'android-studio/bin' 的文件夹目录。

DROID_BIN=$(whereis -l android-studio | grep 'android-studio/bin' | awk -F'bin: ' '{print $2}')

步骤 2. 使用目录用 vim 打开 'studio.sh' 文件。通常,这是 /opt/android-manager/bin/studio.sh

sudo vim $DROID_BIN/studio.sh

第 3 步。 复制以下行并将其粘贴到 studio.sh 的开头。如果您在将来的某个日期查看它,我添加了 cmets 作为提醒。

在 Vim 上按 [i] 进行编辑。使用 [Ctrl] + [c] 从浏览器复制并使用 [Ctrl] + [Shift] + [v] 键粘贴到 vim。

# _JAVA_OPTIONS was added to replace /tmp folder because it runs out of
# space and causes failure with android studio updates.
export _JAVA_OPTIONS=-Djava.io.tmpdir=/shared/tmp

[Esc]保存并退出,然后输入":wq"

启动 android studio 并再次尝试更新。这次应该更新成功了。

对于选项 2 和 3 检查 /tmp 并确保它不是单独的分区。

 df -h | grep -e 'Filesystem' -e '/tmp'

在输出中,查看文件系统列。如果该文件系统显示一个反斜杠后跟三个字母,例如 /sda 或 /sdb,则不要继续并寻找其他说明。

如果文件系统列是 tempfs 则继续...

选项 2。暂时增加 /tmp 的大小。

sudo mount -o remount,size=6G,noatime /tmp

就是这样。完成。

选项 3。 一直增加 /tmp 的大小。如果您在多个程序或活动中反复看到“无空间错误”,这很有用。

步骤 1. 备份 fstab。

cp /etc/fstab ~/fstab_BACKUP 

第 2 步。检查您是否有“tmpfs /tmp”的现有条目

cat /etc/fstab | grep tmp

第 3 步。如果终端上没有任何返回,然后粘贴以下行。将 6G 更改为 /tmp 所需的大小。

sudo sed -i '$a tmpfs /tmp tmpfs rw,nodev,nosuid,size=6G 0 0' /etc/fstab

如果您已有条目,请使用 vim 或任何终端文本编辑器手动更改驱动器的大小。

sudo vim /etc/fstab

你会看到类似这样的东西:

------------/etc/fstab----------------------
...
tmpfs /tmp tmpfs rw,nodev,nosuid,size=4G 0 0
...

将大小整数更改为您想要的大小。例如,将 4G 替换为 6G。

保存并退出。在 vim 上,按 [Esc] 并输入 ":wq"

最后,重启你的电脑。

希望这会有所帮助。提供的说明由您自担风险。

【讨论】:

    猜你喜欢
    • 2018-12-13
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2012-12-29
    • 2012-01-14
    相关资源
    最近更新 更多