问题描述
本人尝试安卓平板编程的时候,发现通过使用termux+proot-distro安装一个Linux发行版功能较为齐全也有不错的性能表现。之前我安装proot-distro list中的ubuntu-lts,实际上是ubuntu23。一段时间后,我在termux中执行了pkg update && pkg upgrade升级了termux的软件包,其中就包括proot-distro。
然而升级后,我一如既往的执行proot-distro login ubuntu-lts时,却告知我没有该发行版。果然,运行proot-distro list发现最新版本已经更新到ubuntu24,并且没有Alias为ubuntu-lts的版本了。
问题解决
很显然是因为proot-distro更新导致ubuntu23不在list中,然而此时我也并不清楚proot-distro的工作方式。
第一步,我现尽力找到原先版本ubuntu相关内容的存储位置,本人的路径为 /data/data/com.termux/files/var/lib/proot-distro。在这个路径下我找到了ubuntu-lts文件夹。
我也暗自庆幸,看来至少数据是还在的
第二步,就是让proot-distro能够重新和这个发行版建立联系。首先可以执行proot-distro --help仔细研究proot-distro的命令,其中虽然有备份和恢复的方法。但是恢复的发行版必须是有由proot-distro命令备份的,而proot-distro找不到该发行版,就无法备份。
到这里我已经想卸载termux了
我直接使用tar命令压缩了ubuntu-lts文件夹,然后用proot-distro导入,不出意料的失败了。
第三步,解铃还需系铃人,既然问题是由proot-distro更新导致。那能不能回退proot-distro版本,但是我想,这样可以解决一时的问题,但是不是会导致proot-distro的版本一直无法进步吗?通过看一些帖子,我忽然想到,proot-distro应该是能够手动添加发行版的,通过proot-distro list显示出来的发型版都是通过文件定义的,文件的路径就在/data/data/com.termux/files/usr/etc/proot-distro 打开这个文件夹,会发现一些后缀为.sh的文件,正确添加一个.sh文件就可以在proot-distro list中输出相应的发行版信息并进行安装。所以我们只要能编写出对应的.sh文件就行了。然而我不会编写。这时候我想到,直接去github找到老版本的proot-distro中该版本的.sh文件复制过来就行了吗。找到proot-distro仓库,找到曾经安装该发行版时间段的proot-distro版本,找到distro-plugins文件夹打开,ubuntu-lts.sh文件果然出现,进入发现果然是Ubuntu23。将该文件移动或将内容复制下来,在termux存放.sh文件的目录(上文有说)中写一个ubuntu-lts.sh。这个文件名需要和你的安装的发行版的名称一致。 之后proot-distro list便可以显示相关发行版的信息,并且安装状态为yes。运行proot-distro login ubuntu-lts,大功告成。
结尾
以上为我个人恢复proot-distro发行版的一些尝试,可能不适用每一种情况。所以我把我详细的解决问题的过程写下来了。 LINUX系统带来的一种乐趣就是,有什么问题出现静下心来一步步分析问题的发生,用自己直觉的方式去尝试解决,总是能带来惊喜。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。