在Ubuntu Phone上安装常规(cli).deb软件包的推荐方法?

tl;博士:我正在寻找一种“规范”或“推荐”方式在Ubuntu touch上安装(cli).deb软件包

我已经在我的桌面和服务器上使用Ubuntu一年了,我非常满意。 现在我买了第一部Ubuntu手机,BQ Aquaris e4.5 Ubuntu版。 但是,我发现我无法安装普通的.deb软件包或使用apt-get安装。 如何“root”我的手机,以便我可以安装“普通” .deb包?

我亲自尝试过。 我知道第一件事就是让你的文件系统可写。 我做了以下步骤,但后来由于dpkg错误而卡住了。

 # Desktop: sudo add-apt-repository ppa:phablet-team/tools sudo apt-get update sudo apt-get install phablet-tools # Phone: Security & Privacy: Lock phone: Lock when idle: Never About this phone: Developer Mode: Developer Mode ON # connect phone to PC via USB # Desktop: adb devices # no device detected so I've manually added file touch /home/username/.android/adb_usb.ini # with content: 0x2a47 sudo adb kill-server sudo adb start-server adb devices # now my phone is on the list # Phone: sudo test -w filename && echo "Writable" || echo "Not Writable" # verified it is writable sudo add-apt-repository ppa:phablet-team/ppa sudo apt-get update && sudo apt-get upgrade 

这是错误开始阻止我的地方:

 dpkg: error processing archive /var/cache/apt/archives/powerd_0.16+15.04.20150430-0ubuntu1_armhf.deb (--unpack): unable to make backup link of `./usr/share/powerd/device_configs/config-default.xml' before installing new version: Invalid cross-device link 

所以我试过了

 sudo apt-get install -f 

但它陷入了“蓝牙主配置”。 我重新启动了手机,但它不想再打开了。 我尝试了Recover启动选项。 那很有效。 我再次尝试install -f ,这次它起作用了。 但upgrade我仍然有同样的错误。

在主目录中创建一个chroot:

 mkdir -p vivid-chroot
 cd vivid-chroot
 wget http://cdimage.ubuntu.com/ubuntu-touch/vivid/daily-preinstalled/current/vivid-preinstalled-touch-armhf.tar.gz
 sudo tar -zxvf vivid-preinstalled-touch-armhf.tar.gz

然后,使用chroot并在该chroot中安装您需要使用的任何CLI工具:

 cd~ / vivid-chroot
 sudo chroot。
 apt-get update
 apt-get install git

为了执行某些操作,可能需要绑定mount某些目录。 如果您希望从手机中删除chroot或执行其他破坏性操作,则需要格外小心。

 sudo mount --bind / proc / home / phablet / vivid-chroot / proc
 sudo mount --bind / dev / home / phablet / vivid-chroot / dev
 sudo mount --bind / sys / home / phablet / vivid-chroot / sys

这不是一个详尽的列表,但您可以按照类似的方式绑定mount其他目录。 如果您有一个外部存储设备来创建它,例如SD卡,则无需在主目录中创建chroot。 但是,并非所有手机都有SD卡插槽。 如果您希望在SD卡上创建chroot,只需将上面命令中的主目录替换为您希望创建chroot的备用存储介质上的目录的路径。

警告:这只是在使用powerd软件包进行apt-get升级时摆脱跨设备链接问题的黑客攻击 。 这不是“UBUNTU”认证的解决方案

先决条件:使用R / W安装ubuntu:

 phablet-config writable-image 

将下载的powerd * .deb文件从手机复制到PC:

在/ var /缓存/ apt / archives目录/

在PC上,解压缩.deb文件,删除文件/usr/share/powerd/device_configs/config-default.xml(从我的测试中得到的结果不是基础):

 su - root mkdir tmp dpkg-deb -R powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb tmp rm tmp/usr/share/powerd/device_configs/config-default.xml mv powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb old.deb dpkg-deb -b tmp powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb 

一切都必须以root身份完成,以保持包文件和目录的原始权限。 重新包装,复制回手机,然后安装:

 sudo dpkg -i powerd_0.16+15.04.20150507-0ubuntu1_armhf.deb 

您仍会收到错误消息:

“/usr/share/powerd/device_configs/config-default.xml”:设备或资源繁忙

但最后包更新了。

现在如果你这样做: sudo apt-get upgrade错误就消失了。

我的手机BQ Aquaris似乎运行良好且稳定。

正如已经指出的那样,您必须在设备上安装支持ARM的chroot,并在该chroot中安装所有必需的软件包。 但是,在您的主目录中这样做会浪费很多宝贵的空间。 相反,它可以使用在适当的Linux操作系统上运行的计算机(在Linux Mint 17和Ubuntu Trusty上测试)在SD卡上完成。 由于我在其他任何地方都没有找到任何关于此的信息,我把它放在这里作为旧问题的答案。

以下说明假设您要在jessie目录中安装debian jessie chroot。

在台式计算机上创建和填充图像文件

创建一个空图像文件

要在当前工作目录中创建名为IMAGE.img的1GB映像,请执行以下操作:

dd if=/dev/zero of=IMAGE.img bs=1G count=1

请注意,GB中的B被省略。 “if”代表“输入文件”,“of”代表“输出文件”,“bs”代表“块大小”。

那里有更高效的命令,但据我所知,这些命令仅适用于某些类型的文件系统。 这个也适用于SD卡或tempfs。 请注意使用/ dev / zero而不是/ dev / random或/ dev / urandom因为这将花费更长的时间,并且以后需要花费更长的时间在设备之间传输图像。

在映像上创建文件系统

如果没有文件系统,手机将无法在图像上存储任何数据。 如果没有文件系统,则无法将映像挂载到目录,只能挂载到块设备。

这个bash命令会将下一个空循环设备输出到变量LOOP

$LOOP=$(sudo losetup -f)

接下来,将图像分配给块设备:

sudo losetup $LOOP IMAGE.img

接下来,在其上创建ext4文件系统:

sudo mkfs -t ext4 $LOOP

接下来,从循环设备中分离图像:

sudo losetup -d $LOOP

如果找不到命令错误,只需安装缺少的程序。

将映像文件挂载到计算机上以进行访问

现在,在工作目录中创建一个临时目录:

mkdir jessie

并将图像文件IMAGE.img挂载到它:

sudo mount -o loop IMAGE.img $(pwd)/jessie

命令pwd将确保为当前工作目录提供mount绝对路径。

使用qemu-debootstrap使用新操作系统填充图像

下一步将使用qemu-debootstrap下载必要的文件。 如果可以使用qemu-debootstrap,就像在Ubuntu和派生操作系统上一样,这很容易。 如果在执行qemu-debootstrap --help时遇到命令未找到错误,请尝试安装相应的包,这可以通过以下方式在Ubuntu上完成:

sudo apt-get install qemu-user-static

要下载所有必需文件并准备好新操作系统,请运行以下命令:

sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian

请注意,第一个jessie代表操作系统版本,而第二个jessie代表要安装文件的目录。现在您可以卸载映像,因为其余工作必须在手机上完成。 这样做是通过:

sudo umount $(pwd)/jessie

如果无法安装qemu-debootstrap,请参阅下一节。

使用新操作系统填充图像而不使用qemu-debootstrap

如果您有qemu-debootstrap,请跳过此部分。 但是,对于您的架构,您仍然需要本机debootstrap。 如果这恰好是armhf,只需使用上面的命令行,但用qemu-debootstrap替换qemu-debootstrap debootstrap 。 如果没有,请按照本节说明。

要下载新操作系统的所有必需文件,请运行以下命令:

 sudo debootstrap --arch=armhf --foreign jessie ./jessie \ http://http.debian.net/debian 

现在您可以卸载映像,因为其余工作必须在手机上完成。 这样做是通过:

sudo umount $(pwd)/jessie

将图像传输到手机

现在最好从此创建一个tar存档,然后将其复制到手机中。 存档是放在SD卡还是内部存储器上并不重要。 使用以下命令在桌面上创建存档:

tar -cvzf jessie.tar.gz IMAGE.img

现在,在手机上,打开ssh支持以复制图像。 您也可以使用USB电缆代替。 由于ssh服务器在每次重启时都会重置,因此请通过以下方式sudo service ssh start手机上的ssh服务: sudo service ssh start

接下来,复制图像:

scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR

其中变量COPYDIR包含应存储图像的目录。 此命令假定您手机上的用户名是phablet,手机的主机名是ubuntu-phablet。 您可以通过分别在手机上发出echo $USERecho $HOSTNAME来找出它们。

现在,您只需要将文件提取到您希望图像驻留的任何位置。 假设您希望图像所在的目录存储在变量IMAGEDIR 。 通过bash命令提取图像:

( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )

您现在可以删除存档:

rm $COPYDIR/jessie.tar.gz

最终确定并使用手机上的图像

如果您未在手机上打开ssh服务器,请立即通过以下方式执行此操作:

sudo service ssh start

接下来,将您的映像挂载到您选择的目录(在本例中为“jessie”):

sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie

现在,通过以下方式首次输入您的chroot:

ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"

如果你的计算机上有qemu-debootstrap,你就完成了。 使用以上2个命令连接到chroot。 如果没有,您仍然必须在chroot内部执行以下命令,以便正确设置操作系统:

/debootstrap/debootstrap --second-stage

如何访问chroot的摘要

如果您按照上述步骤操作,则应该可以使用手机上的这个简单脚本访问您的chroot:

 #!/bin/bash sudo service ssh start ssh localhost "sudo chroot jessie /bin/bash" 

由于终端应用程序的apparmor限制,您必须首先从手机ssh到您自己的手机。 终端应用程序只允许在某些位置执行二进制文件,您的主目录和SD卡都不在其中。 但是,ssh服务没有这样的限制。

使手机上的根文件系统可写

要将根文件系统重新安装为可写,请在手机上执行以下命令(如果您还没有,请下载终端应用程序 ):

 sudo mount -o remount,rw / 

请注意, 重新启动手机后, /再次为只读 。 如果您希望这是永久性的,请更改/etc/fstab 。 但是,Ubuntu触摸BQ并不是主要的Ubuntuarm回购。 安装treelibreoffice类的东西还不行。 他们可能是最新的devel版本。

运行最新的开发版Ubuntu

(在repo中有更多好东西,比如命令行工具等)

如何在bq手机上运行最新的Ubuntu touch开发版?

当你打破一切时修复东西

当你完全破坏东西时,你可以重新刷新你的设备 。