A maneira recomendada de instalar pacotes regulares (cli) .deb no Ubuntu Phone?

12

tl; dr: Estou procurando uma maneira "canônica" ou "recomendada" de instalar pacotes (.cl) no Ubuntu touch

Estou usando o Ubuntu no meu Desktop e Server há um ano e estou muito satisfeito. Agora comprei o primeiro telefone Ubuntu, o BQ Aquaris e4.5 Ubuntu Edition. No entanto, descobri que não consigo instalar% normal co_de% packages ou instalar coisas usando .deb . Como posso fazer o "root" do meu telefone para que eu possa instalar o "normal" apt-get packages?

Eu tentei eu mesmo. Eu sei que a primeira coisa é tornar seu sistema de arquivos gravável. Eu fiz os seguintes passos, mas depois fiquei preso por causa de um erro do 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

E este é o lugar onde o erro começa a me bloquear:

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

Então eu tentei

sudo apt-get install -f

Mas ficou preso na "configuração principal do Bluetooth". Eu reiniciei o telefone, mas ele não queria ligar mais. Eu tentei a opção .deb boot. Isso funcionou. Eu tentei Recover novamente, e desta vez funcionou. Mas depois de fazer install -f eu ainda tive o mesmo erro.

    
por jangorecki 07.05.2015 / 22:21

4 respostas

17

Crie um chroot dentro do diretório inicial:

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

Em seguida, use o chroot e instale as ferramentas CLI que você precisa usar, dentro do chroot:

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

Para executar certas coisas, pode ser necessário vincular a montagem de alguns diretórios. Você precisará tomar cuidado extra ao fazer isso, se quiser excluir o chroot do seu telefone ou executar outras ações destrutivas.

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

Esta não é uma lista exaustiva, mas você pode vincular outros diretórios de montagem conforme necessário de maneira semelhante. Você não precisa criar o chroot em seu diretório pessoal se tiver um dispositivo de armazenamento externo para criá-lo, como um cartão SD. No entanto, nem todos os telefones possuem slots de cartão SD. Se você deseja criar o chroot em um cartão SD, simplesmente substitua o diretório inicial nos comandos acima, com o caminho para um diretório em sua mídia de armazenamento alternativa onde você deseja criar o chroot.

    
por dobey 13.05.2015 / 21:00
4

Aviso: isto é apenas um hack para eliminar o problema de ligação entre dispositivos no upgrade do apt-get com o pacote powerd. esta não é uma solução certificada "UBUNTU"

Pré-requisito: ter feito R / W a instalação do Ubuntu com:

phablet-config writable-image

Copie o arquivo powerd * .deb baixado do telefone para um PC pelo caminho:

/ var / cache / apt / archives /

No PC, descompacte o arquivo .deb, remova o arquivo /usr/share/powerd/device_configs/config-default.xml (dos meus testes não resulta fundamental):

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 

Tudo deve ser feito como root para manter as permissões originais dos arquivos e diretórios do pacote. Reembale, copie de volta no telefone e instale com:

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

Você ainda receberá o erro:

"/ usr / share / powerd / device_configs / config-default.xml": dispositivo ou recurso ocupado

Mas no final, o pacote é atualizado.

Agora, se você fizer isso: sudo apt-get upgrade o erro desapareceu.

Meu telefone BQ Aquaris parece funcionar bem e estável.

    
por Ezio Somà 10.05.2015 / 23:05
3

Como já foi mencionado, você precisa instalar um chroot compatível com o ARM no seu dispositivo e instalar todos os pacotes requeridos nesse chroot. No entanto, fazer isso em seu diretório pessoal desperdiça muito espaço valioso. Em vez disso, isso pode ser feito em seu cartão SD usando um computador rodando em um sistema operacional Linux (testado no Linux Mint 17 e Ubuntu Trusty). Como não encontrei nenhuma informação sobre isso em nenhum outro lugar, coloquei aqui como uma resposta para uma pergunta antiga.

As seguintes instruções assumem que você deseja instalar um debian jessie chroot no diretório jessie.

Criando e preenchendo o arquivo de imagem em um computador desktop

Criando um arquivo de imagem vazio

Para criar uma imagem de 1GB chamada IMAGE.img no diretório de trabalho atual, faça:

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

Observe que o B em GB é deixado de fora. "if" significa "arquivo de entrada", "de" para "arquivo de saída" e "bs" para "tamanho de bloco".

Existem comandos mais eficientes por aí, mas esses funcionam apenas em certos tipos de sistemas de arquivos, tanto quanto eu sei. Este também funciona em um cartão SD ou um tempfs. Por favor, note o uso de / dev / zero e não / dev / random ou / dev / urandom como isso levaria muito mais tempo e fazer demorar muito mais para transferir o imagem entre dispositivos mais tarde.

Criando um sistema de arquivos na imagem

Sem o sistema de arquivos, o telefone não poderia armazenar nenhum dado no imagem. Sem um sistema de arquivos, você ainda não pode montar a imagem em um diretório, apenas para um dispositivo de bloco.

Este bash-command irá mostrar o próximo dispositivo de loop vazio na variável LOOP :

$LOOP=$(sudo losetup -f)

Em seguida, atribua a imagem a um dispositivo de bloco:

sudo losetup $LOOP IMAGE.img

Em seguida, crie o sistema de arquivos ext4:

sudo mkfs -t ext4 $LOOP

Em seguida, retire a imagem do dispositivo de loop:

sudo losetup -d $LOOP

Se você obtiver erros de comando não encontrados, basta instalar os programas ausentes.

Monte o arquivo de imagem no computador para acessá-lo

Agora, crie um diretório temporário no diretório de trabalho:

mkdir jessie

e monte o arquivo de imagem IMAGE.img para ele:

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

O comando pwd garantirá que você forneça um caminho absoluto para o seu diretório de trabalho atual.

Preenchendo a imagem com o novo sistema operacional com o qemu-debootstrap

O próximo passo será usar o qemu-debootstrap para baixar os arquivos necessários. Isto é fácil se o qemu-debootstrap estiver disponível como é o caso no Ubuntu e SOs derivados. Se você obtiver erros de comando não encontrados ao executar qemu-debootstrap --help , tente instalar o pacote apropriado, que pode ser feito no Ubuntu via:

sudo apt-get install qemu-user-static

Para baixar todos os arquivos necessários e preparar o novo sistema operacional, execute o seguinte comando:

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

Por favor, note que o primeiro jessie representa a versão do SO, enquanto o O segundo jessie representa o diretório onde os arquivos serão instalados. Agora você pode desmontar a imagem, pois o restante do trabalho deve ser feito telefone. Faça isso via:

sudo umount $(pwd)/jessie

Se você não puder instalar o qemu-debootstrap, veja a próxima seção.

Preenchendo a imagem com o novo sistema operacional sem o qemu-debootstrap

Por favor, pule esta seção se você tiver o qemu-debootstrap disponível. Você ainda vai precisa de um debootstrap nativo para sua arquitetura, no entanto. Se isso acontecer, armhf, apenas use a linha de comando acima, mas substitua qemu-debootstrap por %código%. Caso contrário, siga esta seção.

Para baixar todos os arquivos necessários para o novo sistema operacional, execute o seguinte comando:

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

Agora você pode desmontar a imagem, pois o restante do trabalho precisa ser feito telefone. Faça isso via:

debootstrap

Transferir imagem para o telefone

Agora é melhor criar um arquivo TAR a partir do qual você copia para o seu telefone. Não importa se o arquivo é colocado no cartão SD ou o armazenamento interno. Crie o arquivo na área de trabalho usando:

sudo umount $(pwd)/jessie

Agora, no seu telefone, ative o suporte ssh para copiar a imagem. Você também pode faça isso usando um cabo USB. Como o servidor ssh é redefinido a cada reinicialize, inicie o serviço ssh no telefone via: tar -cvzf jessie.tar.gz IMAGE.img

Em seguida, copie a imagem via:

sudo service ssh start

onde a variável scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR contém o diretório onde a imagem deve ser armazenado. Este comando assume que seu nome de usuário no telefone é phablet e o nome do host do telefone é ubuntu-phablet. Você pode descobrir ambos emitindo COPYDIR e echo $USER no telefone, respectivamente.

Agora você só precisa extrair o arquivo onde quer que a imagem resida. Suponha que o diretório onde você deseja que a imagem seja localizada é armazenado na variável echo $HOSTNAME .Extraia a imagem lá através do bash comando:

IMAGEDIR

Agora você pode remover o arquivo:

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

Finalizando e usando a imagem no telefone

Se você não ativou o servidor ssh no telefone, faça isso agora:

rm $COPYDIR/jessie.tar.gz

Em seguida, monte sua imagem em um diretório de sua escolha (neste caso, "jessie"):

sudo service ssh start

Agora, digite seu chroot pela primeira vez:

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

Se você tiver o qemu-debootstrap disponível no seu computador, tudo estará pronto. Usar os 2 comandos acima para se conectar ao seu chroot. Se não, você ainda tem que execute o seguinte comando quando estiver dentro do seu chroot, a fim de configurar corretamente o sistema operacional:

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

Resumo de como acessar o chroot

Se você seguiu as etapas acima, poderá acessar seu chroot usando este simples script no telefone:

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

Você precisa primeiro fazer o ssh em seu próprio telefone a partir do telefone devido às restrições do aplicativo do terminal. O aplicativo terminal só tem permissão para executar binários em determinados locais e nem o diretório base nem o cartão SD estão entre eles. O serviço ssh, no entanto, não tem essas restrições.

    
por RaZziel 24.09.2015 / 20:50
1

Tornar o sistema de arquivos raiz no telefone gravável

Para remontar o sistema de arquivos raiz como gravável, execute o seguinte comando no seu telefone (faça o download do aplicativo do terminal se já está):

sudo mount -o remount,rw /

Por favor, note que depois de reiniciar seu telefone, / é somente leitura novamente . Se você quiser que isso seja permanente, altere /etc/fstab . No entanto, o toque do Ubuntu no BQ ainda não está no repo principal do Ubuntu. Instalar coisas como tree ou libreoffice não funcionará ainda. Eles podem estar na última versão de desenvolvimento.

Executando a última versão de desenvolvimento do Ubuntu

(tem mais guloseimas no repositório, como ferramentas de linha de comando e tal)

Como executar o mais recente desenvolvimento de toque do Ubuntu lançamento no telefone bq?

Corrigindo coisas quando você quebra tudo

Quando você quebra a coisa completamente, você pode apenas reflash seu dispositivo .

    
por Galgalesh 11.05.2015 / 22:27