Рекомендуемый способ установки обычных (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 у меня все еще была та же ошибка.

12
задан 14 May 2015 в 16:27

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 install git

Для выполнения определенных действий может потребоваться привязка монтирования некоторых каталогов. Вам нужно будет позаботиться об этом, если вы хотите удалить 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

Это не исчерпывающий список, но вы можете связать другие каталоги по мере необходимости аналогичным образом. Вам не нужно создавать chroot в домашнем каталоге, если у вас есть внешнее устройство хранения данных для его создания, например, SD-карта. Однако не все телефоны имеют слоты для карт SD. Если вы хотите создать chroot на SD-карте, просто замените домашний каталог в командах выше на путь к каталогу на альтернативном носителе, где вы хотите создать chroot.

17
ответ дан 14 May 2015 в 16:27

Сделать корневую файловую систему на телефоне записываемой

Чтобы перемонтировать корневую файловую систему как записываемую, выполните следующую команду на телефоне (скачайте терминальное приложение, если вы еще этого не сделали):

sudo mount -o remount,rw /

Пожалуйста, обратите внимание, что после перезагрузки телефона, / снова доступно только для чтения . Если вы хотите, чтобы это было постоянно, измените /etc/fstab. Тем не менее, касание Ubuntu на BQ еще не находится на главном репо Ubuntu руки. Установка таких вещей как tree или libreoffice еще не работает. Они могут быть в последней версии devel.

Запуск последней версии devel Ubuntu

(есть еще много хорошего в репо, например, инструменты командной строки и т.п.)

Как запустить последний разрабатываемый релиз Ubuntu touch на bq телефоне?

Исправление вещей, когда вы ломаете все

Когда вы ломаете вещь полностью, вы можете просто перепрошить ваше устройство.

1
ответ дан 15 May 2015 в 02:27
  • 1
    Слово " GParted" в моем сообщении ссылка на изображение GParted. I' m не " allowed" отправить изображения все же! Восстановление начальной загрузки doesn' t устраняют проблемы начальной загрузки Windows и НИЧТО из какой you' сказанный ve страшен, но doesn' t отвечают на что-либо также. Проверьте ссылку GParted и считайте q' s – Babsky 7 August 2016 в 05:51

Предупреждение: это всего лишь хак, чтобы избавиться от проблемы кросс-устройства ссылка на apt-получить обновление с пакетом Powerd. это не "UBUNTU" сертифицированное решение

Предпосылка: сделав R/W установку ubuntu с:

phablet-config writable-image

Скопируйте загруженный файл powerd*.deb с телефона на компьютер по следующему пути:

/var/cache/apt/archives/

На ПК, распакуйте .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 для сохранения оригинальных прав доступа к пакетным файлам и dirs. Перепакуйте, скопируйте обратно на телефон, затем установите с:

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

Вы все равно получите ошибку:

"/usr/share/powerd/device_configs/config-default.xml": Device or resource busy

But at the end the package is updated.

Now if you do: sudo apt-get upgrade ошибка исчезла.

Похоже, мой телефон BQ Aquaris работает хорошо и стабильно.

4
ответ дан 15 May 2015 в 02:27
  • 1
    @amirteymuri Просто используют панель поиска от домашней страницы и используют термины Вашего вопроса здесь наряду с Studio Ubuntu. Или попытайтесь сообщить об ошибке в пакете/проекте Studio Ubuntu, но проверке, если существует кто-либо как Ваш. – Svetlana Belkin 14 August 2016 в 02:58

Как уже было отмечено, вы должны установить ARM-совместимый chroot на ваше устройство и установить все необходимые пакеты в этот 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-карте или временный сотрудник. Пожалуйста, обратите внимание на использование /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 означает версию ОС, тогда как вторая jessie обозначает директорию, в которую должны быть установлены файлы. Теперь вы можете размонтировать образ, так как остальная работа должна быть сделана на Телефон. Сделайте это через:

sudo umount $(pwd)/jessie

Если вы не можете установить qemu-debootstrap, обратитесь к следующему разделу.

Популяризация образа с новой операционной системой без qemu-debootstrap

Пожалуйста, пропустите этот раздел, если у вас есть qemu-debootstrap. Вы все равно нужна родная дебютстрап для твоей архитектуры. Если так случится, что armhf, просто используйте вышеуказанную командную строку, но замените qemu-debootstrap на debootstrap. Если нет, следуйте этому разделу.

Чтобы загрузить все необходимые файлы для новой ОС, выполните следующую команду:

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

Теперь вы можете размонтировать образ, так как остальная работа должна быть сделана на Телефон. Сделайте это через:

sudo umount $(pwd)/jessie

Transfer image to the phone

Теперь лучше всего создать 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-deboottrap, то все готово. Используйте . вышеуказанные 2 команды для подключения к вашему chroot. Если нет, то вы все равно должны выполнить следующую команду, как только вы окажетесь внутри вашей корзины, чтобы правильно настроить OS:

/debootstrap/debootstrap --second-stage

Summary of how to access the chroot

Если вы выполните вышеперечисленные шаги, то сможете получить доступ к своему chroot с помощью этот простой скрипт на телефоне:

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

Вы должны сначала вставить ssh в свой телефон с телефона из-за ограничений терминала приложения. Терминальное приложение может выполнять двоичные файлы только в определенных местах, и ни ваш домашний каталог, ни SD-карта не входят в их число. Однако служба ssh не имеет таких ограничений.

3
ответ дан 15 May 2015 в 02:27
  • 1
    Я попробовал это. Lenovo не заявила OS. HD, который я имею, является пробелом. и да, я только хочу установить Ubuntu. Я сделал DVD. Ничто. Я могу удалить HD и отформатировать его к чему-либо, к чему Дисковая утилита в моем Mac отформатирует его. Я понимаю, что изображение Ubuntu тогда переформатирует его. Во всяком случае, без своего рода загрузочного образа / диск, it' s не собирающийся делать что-либо, я wouldn' t думают. – dean jordan 7 August 2016 в 10:39

Другие вопросы по тегам:

Похожие вопросы: