Рекомендуемый способ установки обычных (cli) .deb пакетов на Ubuntu Phone?
tl;dr: я ищу "канонический" или "рекомендуемый" способ установки (cli) .deb пакетов на Ubuntu touch
Я использую Ubuntu на своем рабочем столе и сервере в течение года, и я очень доволен. Теперь я купил первый телефон Ubuntu, BQ Aquaris e4.5 Ubuntu Edition. Однако я обнаружил, что не могу установить нормальный .deb
пакеты или установить вещи с помощью apt-get
, Как я могу "рутировать" мой телефон, чтобы я мог установить "нормальный" .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
Но он застрял на "основной конфигурации Bluetooth". Я перезапустил телефон, но он больше не хотел включаться. Я попробовал Recover
вариант загрузки. Это сработало. Я старался install -f
снова, и на этот раз это сработало. Но после выполнения upgrade
У меня все еще была та же ошибка.
4 ответа
Создайте 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 и установите все инструменты CLI, которые вам нужны, внутри этого chroot:
cd ~ / vivid-chroot sudo chroot. apt-get update apt-get установить git
Для выполнения определенных действий может потребоваться привязать монтирование некоторых каталогов. При этом вам нужно будет проявить особую осторожность, если вы хотите удалить chroot из вашего телефона или выполнить другие разрушительные действия.
sudo mount --bind / proc / home / phablet / vivid-chroot / proc sudo mount --bind / dev / home / phablet / vivo-chroot / dev sudo mount --bind / sys / home / phablet / vivo-chroot / sys
Это не исчерпывающий список, но вы можете подключить другие каталоги при необходимости аналогичным образом. Вам не нужно создавать chroot в вашем домашнем каталоге, если у вас есть внешнее запоминающее устройство, например SD-карта. Однако не все телефоны имеют слоты для SD-карт. Если вы хотите создать chroot на SD-карте, просто замените домашний каталог в приведенных выше командах на путь к каталогу на вашем альтернативном носителе, где вы хотите создать chroot.
Предупреждение: это всего лишь способ избавиться от проблемы связи между устройствами при обновлении apt-get с помощью пакета powerd. это не сертифицированное решение "UBUNTU"
Предварительное условие: сделав R/W установку Ubuntu с:
phablet-config writable-image
Скопируйте загруженный файл powerd*.deb с телефона на ПК по пути:
/ Вар / кэш / кв / архив /
На ПК распакуйте файл.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
Все должно быть сделано с правами суперпользователя, чтобы сохранить исходные права доступа к файлам пакета и директориям. Перепакуйте, скопируйте обратно на телефон, затем установите с помощью:
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, кажется, работает хорошо и стабильно.
Как уже указывалось, вы должны установить на своем устройстве chroot с поддержкой ARM и установить все необходимые пакеты в этом chroot. Тем не менее, выполнение этого в вашем домашнем каталоге тратит много ценного пространства. Вместо этого это можно сделать на SD-карте с помощью компьютера, работающего на соответствующей ОС Linux (протестировано на Linux Mint 17 и Ubuntu Trusty). Поскольку я не нашел никакой информации об этом нигде, я разместил ее здесь в качестве ответа на старый вопрос.
Следующие инструкции предполагают, что вы хотите установить debian jessie chroot в каталог jessie.
Создание и заполнение файла изображения на настольном компьютере
Создание пустого файла изображения
Чтобы создать изображение размером 1 ГБ с именем IMAGE.img в текущем рабочем каталоге, выполните:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Обратите внимание, что 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
убедитесь, что вы дадите абсолютный путь к вашему текущему рабочему каталогу.
Заполнение образа новой операционной системой с помощью 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
от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 сбрасывается при каждой перезагрузке, запустите службу ssh на телефоне через:sudo service ssh start
Затем скопируйте изображение через:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
где переменная COPYDIR
содержит каталог, в котором должно храниться изображение Эта команда предполагает, что ваше имя пользователя на телефоне - phablet, а имя хоста телефона - ubuntu-phablet. Вы можете узнать как, выпустив echo $USER
а также echo $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"
Вы должны сначала подключиться к своему телефону с помощью ssh из-за ограничений приложения терминала. Терминальному приложению разрешено выполнять двоичные файлы только в определенных местах, и среди них нет ни вашего домашнего каталога, ни SD-карты. Однако у службы ssh таких ограничений нет.
Сделать корневую файловую систему на телефоне доступной для записи
Чтобы перемонтировать корневую файловую систему как доступную для записи, выполните на телефоне следующую команду (загрузите приложение терминала, если вы этого еще не сделали):
sudo mount -o remount,rw /
Обратите внимание, что после перезагрузки телефона /
снова только для чтения. Если вы хотите, чтобы это было постоянным, измените /etc/fstab
, Тем не менее, прикосновение Ubuntu к BQ еще не включено в основной репозиторий Ubuntu. Установка таких вещей, как tree
или же libreoffice
пока не сработает. Они могут быть в последней версии devel.
Запуск последней версии Ubuntu devel
(в репозитории есть больше плюсов, таких как инструменты командной строки и тому подобное)
Как запустить последнюю версию Ubuntu Touch для разработчиков на телефоне bq?
Исправление вещей, когда вы все сломаете
Когда вы полностью сломаете устройство, вы можете просто перепрошить свое устройство.