在 ubuntu touch 中使用 apt-get 的后果

在 ubuntu touch 中使用 apt-get 的后果

我刚刚收到了我的 BQ Aquaris E4.5 Ubuntu 版本。我一直在试用它,发现它完全符合我的预期。

它的优点之一是完整的 ubuntu 堆栈,包括包管理。我想开始使用 apt-get 安装 htop、python2、openvpn 等东西。

但是,我遇到了apt-get Unable to write to /var/cache/apt The Package lists or status file could not be parsed or opened错误。我明白(使用 apt-get 安装 Ubuntu Touch) 这是由于“/”分区被挂载为ro,并且 apt-get 需要它才能rw工作。

这里 (使用 sudo app-get install 安装不起作用,“未对只读文件 /var/lib/dpkg/lock 使用锁定”)是解决该问题的方法,使用以下命令sudo mount -o remount,rw /。<--- 可能不是一个好主意。请参阅 evergreen 的答案,了解更完整、更安全的启用rw模式的方法。

我想知道的是将“/”安装为 会有什么后果rw。我读到过,首先它会停止 OTA 更新,只要我可以使用 apt-get 保持系统更新,我完全可以接受。但是,我也读过 (https://askubuntu.com/a/583439/264601) 其他类型的恐怖故事。

所以我的两个问题是:

  1. 我是否能仅使用 apt-get 来保持我的系统保持最新状态?
  2. 除了禁用 OTA 更新外,我还应该采取什么其他措施预计

非常感谢您的回答!

答案1

为了能够在 ubuntu-touch 中使用“apt-get”,为了安全起见,我建议您使用“启用/禁用读写模式”功能。

一旦启用“读写模式”,这将禁用 Ubuntu 系统升级。

但是,您可以通过禁用“读写模式”来恢复自动无线更新。

“默认情况下,系统是只读的。您可以切换到读写模式,但这会禁用 Ubuntu 系统升级。这样做的主要目的是直接开发 Ubuntu 系统。这对于开发应用程序或正常使用系统不是必需的。可以从读写模式恢复,但需要从头开始重新安装系统。警告:将设备切换到读写模式(和/或从中恢复)是一项高级功能,可能会导致数据完全丢失。警告:将设备切换到读写模式会禁用自动无线增量更新。在使设备可写后接受完整的无线更新可能会撤消您所做的更改。”

首先,在 Ubuntu 设备上启用开发者模式。为此,请转到设置 → 关于此设备 → 开发者模式。(您必须通过以下方式应用“锁定安全”:”4 位密码“ 或者 ”密码“。否则,使用“滑动”功能,则无法启用“开发者模式”)

将您的设备连接到 PC(假设是 Ubuntu 平台环境)。

要验证连接,请使用 adb 显示当前连接的设备:

$ adb 设备

所连接设备列表

025d138e2f521413 设备

  1. 安装 phablet-tools 包

确保Universe 存档已启用, 然后:

$ sudo apt-get install phablet-tools

  1. 启用读写模式:

$ phablet-config 可写图像

系统以读写模式重新启动。

  1. 禁用读写模式:您可以禁用读写并恢复自动无线更新:

$ adb shell rm /userdata/.writable_image

要将通常受读写保护的系统区域恢复到原始状态,并且不包含通过安装 Ubuntu 系统在读写模式下所做的任何更改:

$ ubuntu-device-flash touch --channel=频道

资料来源:https://developer.ubuntu.com/en/start/ubuntu-for-devices/installing-ubuntu-for-devices/#install-options

建议:到目前为止,使用“apt-get”并不是一个好主意,正如他们(Mr.Popey)所说:

“我们不会在手机上测试 apt-get 安装方案,如果您使用 apt-get 升级,您可能会安装尚未作为基于映像的更新的一部分经过全面测试的软件包”

来源:如何在 Ubuntu-Touch 中安装.deb 文件?

答案2

  1. 不是(但一段时间内感觉像是)

如果您在 / 上启用 rw 并开始修改它,则不会禁用 OTA 更新的交付。因此,当它们到达时,它们将像以前一样提供给您安装。

但是,OTA 过程对文件系统的操作非常简单。它只是将一大组文件解压到您现有的文件系统之上。由于它知道(因为它应该是 ro)以前的文件系统,所以这只是一组已更改的文件。

所以你在赌博。当这种情况发生时,你所做的更改是否会引起副作用?一般来说,是的。一般来说,你会修改 / 文件系统中的某些文件,并添加依赖于该更改的软件。当安装 OTA 时,该更改将被删除,并可能被冲突的更改替换。目前,接下来会发生什么是不可知的,而且肯定未经测试。

因此,实际上,一些 apt-get 安装会大量地将软件与现有文件并行添加,因此不会受到 OTA 的太大影响。但是,一个文件集肯定会受到影响 - apt 自己的记录保存(OTA 提供用于构建 ro 文件系统的记录)。因此,您的系统将无法知道哪些文件存在,哪些文件不存在。

这是 apt-get upgrade 的核心危险。它总是使用设备上不正确的数据库来执行,因此不能保证成功。随着您的添加变得越来越复杂,并且底层系统进行重大转变(例如当手机从 Utopic 移动到 Vivid 时),手动运行 apt-get 会做错事。

每次 OTA 都会变成一场赌博,直到您执行清除并重新安装。

  1. 您的系统将慢慢崩溃 - 参见上文。

答案3

永久挂载读写只需要 3 行。我最初尝试遵循UBPorts 上的这些说明但无济于事。无需平板手机工具。

adb shell
sudo touch /userdata/.writable_image
sudo reboot

仅针对会话将其更改为 r/w

adb shell
sudo mount -o remount,rw /

永久改回 r/o

adb shell
sudo mount -o remount,rw /

Ubuntu touch 通常不适用于 apt-get。桌面应用程序通常应该在自由容器中使用,尽管我还没有设置它。根据型号,apt-get 会堵塞根分区。它也很可能干扰更新、安装冲突的软件包或以其他方式破坏您的系统。但如果不能,那还有什么乐趣呢?

我最初几乎立即用完了根空间,不得不使用这些命令来释放一些空间,尽管应该有一个更合适的符号链接到用户数据可用

sudo mount -o rw,remount /                             
sudo rm -r /var/cache/apt
sudo tune2fs -m 0 /dev/loop0

相关内容