Ubuntu Phone에 일반 (cli) .deb 패키지를 설치하는 권장 방법은 무엇입니까?


12

tl; dr : 우분투 터치에 .deb 패키지를 설치하는 "정식"또는 "권장"방법을 찾고 있습니다

데스크탑과 서버에서 1 년 동안 우분투를 사용해 왔으며 매우 만족합니다. 이제 첫 번째 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 main config"에 붙어 있습니다. 전화를 다시 시작했지만 더 이상 켜지지 않았습니다. Recover부팅 옵션을 시도했습니다 . 효과가있었습니다. install -f다시 시도했는데 이번에는 효과가있었습니다. 그러나 그렇게 한 후에도 upgrade여전히 같은 오류가 발생했습니다.


시스템 파티션을 쓰기 가능하게 만들고 apt를 사용하는 것은 지원되지 않습니다. 어떤 이유로 어떤 콘솔 앱을 사용해야하는 경우 홈 디렉토리 안에 chroot를 만든 다음 해당 chroot 안에 필요한 것을 설치하는 것이 가장 좋습니다.
dobey

1
apt-get 업그레이드를 사용하면 시스템이 손상 될 수 있음을 확인할 수 있습니다. 거기에 있었어요.
Merlijn Sebrechts

1
@ Galgalesh 편집에 감사드립니다. 지금 당신의 대답은 현상금을 잡을 것입니다 :)
jangorecki

1
@dobey에게주세요. 그의 대답은 :) 훨씬 더
Merlijn Sebrechts

1
답변 옆에있는 "이 답변 수락"을 클릭하십시오. :)
dobey June

답변:


17

홈 디렉토리 내에 chroot를 작성하십시오.

mkdir -p vivid-chroot
CD 생생한 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 설치 git

특정 작업을 수행하려면 일부 디렉토리를 바인드 마운트해야합니다. 전화기에서 chroot를 삭제하거나 다른 파괴적인 작업을 수행하려면 추가주의를 기울여야합니다.

sudo 마운트 --bind / proc / home / phablet / vivid-chroot / proc
sudo 마운트 --bind / dev / home / phablet / vivid-chroot / dev
sudo 마운트 --bind / sys / home / phablet / vivid-chroot / sys

전체 목록은 아니지만 비슷한 방식으로 필요에 따라 다른 디렉토리를 마운트 할 수 있습니다. SD 카드와 같은 외부 저장 장치가있는 경우 홈 디렉토리에 chroot를 만들 필요가 없습니다. 그러나 모든 전화기에 SD 카드 슬롯이있는 것은 아닙니다. SD 카드에 chroot를 작성하려면 위 명령에서 홈 디렉토리를 chroot를 작성하려는 대체 저장 매체의 디렉토리 경로로 바꾸십시오.


와,이 안내서에 감사드립니다! /전화로 바이올린을 사용하고 싶을 때 더 이상 엉망이되지 않아도 기쁘다 ....
Merlijn Sebrechts

또한 sudo mount -o bind /run /home/phablet/vivid-chroot/runchroot 내부에 네트워크를 설치하려면 askubuntu.com/questions/469209/…
sdbbs

1
@ sdbbs 나는 그것이 필요하다고 생각하지 않습니다. chroot에 마운트를 바인딩하지 않고 네트워크 액세스가 정상적으로 작동합니다. 나는 bzr을 사용하고 그 안에 항상 apt.
dobey

dns 해상도가 작동하도록 /etc/resolv.conf를 vivid-chroot / etc에 복사했습니다.
popey

4

경고 : 이것은 전원이 켜진 패키지로 apt-get 업그레이드시 교차 장치 링크 문제를 제거하기 위한 해킹 일뿐 입니다. 이것은 "UBUNTU"인증 솔루션이 아닙니다

전제 조건 : R / W를 우분투 설치로 설정 :

phablet-config writable-image

다운로드 한 powerd * .deb 파일을 전화에서 다음 경로로 PC로 복사하십시오.

/ var / cache / 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 

패키지 파일 및 디렉토리의 원래 권한을 유지하려면 모든 것이 루트로 수행되어야합니다. 다시 포장하고 전화로 다시 복사 한 후 다음을 사용하여 설치하십시오.

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가 잘 작동하는 것 같습니다.


솔루션 주셔서 감사합니다! 그래도 더 권장되는 ( 지원 하지 않아도 됨 ) 방법을 원하기 때문에 지금은 받아들이지 않을 것 입니다. BTW. 향후 업데이트는 powerd어떻습니까? 모든 업데이트에서 해킹해야합니까?
jangorecki

누군가가 교차 장치 설치에서 dpkg (이전 이야기)의 하드 링크를 사용하는이 문제를 해결할 때까지 대안 솔루션이 표시되지 않습니다.
Ezio Somà

1
이 교차 장치 하드 링크를 피하기 위해 rder에서 일부 마운트 지점을 변경하는 것이 가능할 수 있지만 시간을 분석해야합니다. fstab 파일 또는 mont 출력을보고 만했을 때 나는 어떤 기회를 찾을 수 없었습니다.
Ezio Somà

3

이미 지적했듯이 장치에 ARM 가능 chroot를 설치하고 해당 chroot에 필요한 모든 패키지를 설치해야합니다. 그러나 홈 디렉토리에서 그렇게하면 많은 귀중한 공간이 낭비됩니다. 대신 적절한 Linux OS (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"는 "input file", "of"는 "output file", "bs"는 "block size"를 나타냅니다.

더 효율적인 명령이 있지만, 내가 아는 한 특정 유형의 파일 시스템에서만 작동합니다. 이것은 SD 카드 또는 tempfs에서도 작동합니다. / dev / random 또는 / dev / urandom이 아닌 / dev / zero를 사용하면 시간이 오래 걸리고 나중에 장치간에 이미지를 전송하는 데 시간이 오래 걸리므로주의하십시오.

이미지에서 파일 시스템 생성

파일 시스템이 없으면 전화기는 이미지에 데이터를 저장할 수 없습니다. 파일 시스템이 없으면 이미지를 디렉토리에, 블록 장치에만 마운트 할 수 없습니다.

이 bash 명령은 다음 빈 루프 장치를 변수에 출력합니다 LOOP.

$LOOP=$(sudo losetup -f)

다음으로 이미지를 블록 장치에 할당하십시오.

sudo losetup $LOOP IMAGE.img

다음으로 ext4 파일 시스템을 작성하십시오.

sudo mkfs -t ext4 $LOOP

그런 다음 루프 장치에서 이미지를 분리하십시오.

sudo losetup -d $LOOP

command not found 오류가 발생하면 누락 된 프로그램을 설치하십시오.

이미지 파일을 컴퓨터에 마운트하여 액세스

이제 작업 디렉토리에 임시 디렉토리를 작성하십시오.

mkdir jessie

이미지 파일 IMAGE.img를 마운트하십시오.

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

이 명령 pwd을 사용하면 현재 작업 디렉토리의 절대 경로를 마운트 할 수 있습니다.

qemu-debootstrap을 사용하여 새 운영 체제로 이미지 채우기

다음 단계는 qemu-debootstrap을 사용하여 필요한 파일을 다운로드하는 것입니다. 우분투 및 파생 OS에서와 같이 qemu-debootstrap을 사용할 수있는 경우 쉽습니다. 를 실행할 때 command not found 오류가 발생하면 qemu-debootstrap --help다음을 통해 우분투에서 수행 할 수있는 적절한 패키지를 설치하십시오.

sudo apt-get install qemu-user-static

필요한 모든 파일을 다운로드하고 새 OS를 준비하려면 다음 명령을 실행하십시오.

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

첫 번째 jessie는 OS 버전을 나타내고 두 번째 jessie는 파일을 설치할 디렉토리를 나타냅니다. 이제 나머지 작업은 전화로 수행해야하므로 이미지를 마운트 해제 할 수 있습니다. 다음을 통해 수행하십시오.

sudo umount $(pwd)/jessie

qemu-debootstrap을 설치할 수 없으면 다음 섹션을 참조하십시오.

qemu-debootstrap없이 새로운 운영 체제로 이미지 채우기

qemu-debootstrap을 사용할 수있는 경우이 섹션을 건너 뛰십시오. 그래도 아키텍쳐에는 여전히 기본 debootstrap이 필요합니다. 이 armhf 될 일이 있다면, 바로 위의 명령 줄을 사용하지만 교체 qemu-debootstrapdebootstrap. 그렇지 않은 경우이 섹션을 따르십시오.

새 OS에 필요한 모든 파일을 다운로드하려면 다음 명령을 실행하십시오.

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

나머지 작업은 전화로 수행해야하므로 이제 이미지를 마운트 해제 할 수 있습니다. 다음을 통해 수행하십시오.

sudo umount $(pwd)/jessie

휴대 전화로 이미지 전송

이제 타르 아카이브를 만들어서 전화기에 복사하십시오. 아카이브가 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 $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을 사용할 수 있다면 모든 작업이 완료된 것입니다. 위의 두 명령을 사용하여 chroot에 연결하십시오. 그렇지 않은 경우, OS를 올바르게 설정하려면 chroot 내부에 있으면 다음 명령을 계속 실행해야합니다.

/debootstrap/debootstrap --second-stage

chroot에 액세스하는 방법 요약

위의 단계를 수행 한 경우 전화에서이 간단한 스크립트를 사용하여 chroot에 액세스 할 수 있어야합니다.

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

터미널 앱의 의류 제한으로 인해 먼저 전화에서 자신의 전화로 ssh해야합니다. 터미널 앱은 특정 위치에서만 이진 파일을 실행할 수 있으며 홈 디렉토리 나 SD 카드 중 어느 것도 그 위치에 없습니다. 그러나 ssh 서비스에는 이러한 제한이 없습니다.


1

전화의 루트 파일 시스템을 쓰기 가능하게 만들기

루트 파일 시스템을 쓰기 가능으로 다시 마운트하려면 전화기에서 다음 명령을 실행하십시오 ( 아직 터미널 앱을 아직 다운로드 하지 않은 경우 다운로드 ).

sudo mount -o remount,rw /

주의하시기 바랍니다 휴대 전화를 재부팅 한 후, /읽기 전용 다시 . 이것을 영구적으로 유지하려면을 변경하십시오 /etc/fstab. 그러나 BQ에 대한 우분투 터치는 아직 주요 우분투 팔 저장소에 없습니다. 아직 설치 되지 않았 tree거나 libreoffice작동하지 않습니다. 최신 버전 일 수 있습니다.

최신 데블 버전의 우분투 실행

(명령 줄 도구 등과 같은 저장소에 더 많은 장점이 있습니다)

BQ 전화에서 최신 Ubuntu Touch Development Release를 실행하는 방법은 무엇입니까?

모든 것을 깰 때 물건을 고정

문제가 완전히 해결되면 기기를 다시 플래시 하면 됩니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.