最近 Android 推出新版 O,想說模擬器也安裝看看,結果失敗
[root@Core-i7 ~]# /opt/android-sdk/tools/bin/sdkmanager system-images\;android-27\;google_apis_playstore\;x86
Warning: An error occurred while preparing SDK package Google Play Intel x86 Atom System Image: No space left on device.
[root@Core-i7 ~]# ll== ] 55% Unzipping... x86/vendor.img
出現『Warning: An error occurred while preparing SDK package Google Play Intel x86 Atom System Image: No space left on device.』這個訊息,字面的意思是『空間不足』。
找一下,看它將下載的檔案放在哪裏?應該是『下載空間不足』,不然就是『解壓縮時空間不足』。
查詢各「磁碟分割」的剩餘空間
用 df 查詢各個「磁碟分割 (partition)」或「卷冊 (volume)」的剩餘空間,是否有已經用完的。
[root@Core-i7 ~]# df |
總計 12 |
檔案系統 | 1K-區段 | 已用 | 可用 | 已用% | 掛載點 |
dvetmpfs | 4027780 | 0 | 4027780 | 0% | /dev |
tmpfs | 4039880 | 70084 | 3969796 | 2% | /dev/shm |
tmpfs | 4039880 | 1660 | 4038220 | 1% | /run |
tmpfs | 4039880 | 0 | 4027780 | 0% | /sys/fs/cgroup |
/dev/sda2 | 30304196 | 15170824 | 13570956 | 53% | / |
tmpfs | 4039880 | 4039848 | 32 | 100% | /tmp |
/dev/sda5 | 440864072 | 349377792 | 69068568 | 84% | /home |
/dev/sda1 | 999320 | 174284 | 756224 | 19% | /boot |
tmpfs | 807976 | 36 | 807940 | 1% | /run/user/1005 |
tmpfs | 807976 | 40 | 807936 | 1% | /run/user/1000 |
可以發現是 /tmp 這個目錄的使用率是 100%,在 Linux 的檔案系統,這個目錄實際上是一個卷冊。
查詢最後更新之「目錄」或「檔案」
再往下查,
[root@Core-i7 ~]# ll /tmp/ -a |
總計 12 |
drwxrwxrwt. | 15 | root | root | 340 | 11月 | 19 | 14:41 | . |
dr-xr-xr-x. | 20 | root | root | 4096 | 11月 | 19 | 13:40 | .. |
drwx------. | 2 | SiB | users | 80 | 11月 | 19 | 14:23 | .com.google.Chrome.o8z7X4 |
drwx------. | 2 | Test | users | 60 | 11月 | 19 | 14:17 | .esd-1000 |
drwx------. | 2 | SiB | users | 60 | 11月 | 19 | 14:17 | .esd-1005 |
drwxrwxrwt. | 2 | root | root | 40 | 11月 | 19 | 14:11 | .font-unix |
drwxr-xr-x. | 2 | root | root | 40 | 11月 | 19 | 14:36 | hsperfdata_root |
drwxrwxrwt. | 2 | root | root | 80 | 11月 | 19 | 14:17 | .ICE-unix |
drwxr-xr-x. | 3 | root | root | 80 | 11月 | 19 | 14:41 | PackageOperation01 |
drwx------. | 3 | root | root | 60 | 11月 | 19 | 14:11 | systemd-private-1665e10b1cb . . . |
drwx------. | 3 | root | root | 60 | 11月 | 19 | 14:11 | systemd-private-1665e10b664 . . . |
drwx------. | 3 | root | root | 60 | 11月 | 19 | 14:17 | systemd-private-1665e10b664 . . . |
drwxrwxrwt. | 2 | root | root | 40 | 11月 | 19 | 14:11 | .Test-unix |
drwxrwxrwt. | 2 | root | root | 80 | 11月 | 19 | 14:17 | .X11-unix |
-r--r--r--. | 1 | SiB | users | 11 | 11月 | 19 | 14:16 | .X2605-lock |
-r--r--r--. | 1 | Test | users | 11 | 11月 | 19 | 14:17 | .X2608-lock |
drwxrwxrwt. | 2 | root | root | 40 | 11月 | 19 | 14:11 | .XIM-unix |
可以發現『PackageOperation01』這個目錄的更新時間最新(
註:不一定是相同的名稱)。再向下一層查詢,
[root@Core-i7 ~]# ll /tmp/PackageOperation01/ |
總計 12 |
drwxr-xr-t. | 3 | root | root | 60 | 11月 | 19 | 14:41 | unzip |
-rw-r--r--. | 1 | root | root | 772591194 | 11月 | 19 | 14:41 | x86-27_r01.zip |
看到剛才下安裝命令後,所下載的安裝檔案『 x86-27_r01.zip』,上面的『unzip』應該存放解壓縮後檔案。
網路解決方法(一)
查一下網路是否已有解答,有個解法試一下,結果沒用,
[root@Core-i7 ~]# _JAVA_OPTIONS=-Djava.io.tmpdir=/var/tmp /opt/android-sdk/tools/bin/sdkmanager system-images\;android-27\;google_apis_playstore\;x86
Picked up _JAVA_OPTIONS: -Djava.io.tmpdir=/var/tmp
Warning: An error occurred while preparing SDK package Google Play Intel x86 Atom System Image: No space left on device.
[root@Core-i7 ~]# ll== ] 55% Unzipping... x86/vendor.img
這個解法是以 sdkmanager 是 Java 程式為前提,有可能不是,也可能是其它原因,再找其它方法。
網路解決方法(二)
在上面的方法不成功後,就想到是否可以用『鏈結』方式,將 /tmp 重導到其它「磁碟分割」。想說上網求證一下,是否可行?想不到也有網友情況相同,也是用『鏈結』方式解決。
[root@Core-i7 ~]# mv /tmp/PackageOperation01 /var
[root@Core-i7 ~]# cd /tmp/
[root@Core-i7 tmp]# ln -s /var/PackageOperation01/ PackageOperation01
[root@Core-i7 tmp]# /opt/android-sdk/tools/bin/sdkmanager system-images\;android-27\;google_apis_playstore\;x86
Picked up _JAVA_OPTIONS: -Djava.io.tmpdir=/var/tmp
Warning: File /root/.android/repositories.cfg could not be loaded.
[===================================] 100% Unzipping... x86/vendor.img
[root@Core-i7 tmp]# rm /var/PackageOperation01 -rf
上面的步驟共下了 5 個命令,就一一說明如下:
- 將「暫存檔」所在目錄搬移到 /var 之下。(在 / 目錄下,也可搬到其它磁碟分割)
- 切換「工作目錄」至 /tmp。
- 建立『縺結』指向剛才搬過去的地方。
- 重新執行 sdkmanager 安裝命令。(成功執行結束)
- 刪除剛才搬過去的 PackageOperation01 目錄。
安裝成功。
已測試版本:
參考資料:
- Stack Overflow, "/tmp directory in Linux Android SDK," Dec. 12 2016 [Nov. 19, 2017].
- www.hiroom2.com, "Fedora 26: Install Android Studio 2.3," Sep. 14, 2017 [Nov. 19, 2017].
- Stack Overflow, "Android studio: No space left on device," May 8 2017 [Nov. 19, 2017].
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)