Cara yang disarankan untuk menginstal paket .deb pada ponsel Ubuntu?

12

tl; dr: Saya mencari cara "canonical" atau "recommended" untuk menginstal (cli) paket deb di Ubuntu touch.

Saya telah menggunakan Ubuntu di Desktop dan Server saya selama setahun dan saya sangat puas. Sekarang saya membeli ponsel Ubuntu pertama, BQ Aquaris e4.5 Edition Ubuntu. Namun, saya menemukan bahwa saya tidak dapat menginstal .debpaket normal atau menginstal sesuatu menggunakan apt-get. Bagaimana saya bisa "melakukan root" pada ponsel saya sehingga saya dapat menginstal .debpaket "normal" ?

Saya mencobanya sendiri. Saya tahu hal pertama adalah membuat sistem file Anda dapat ditulis. Saya melakukan langkah-langkah berikut tetapi kemudian saya macet karena kesalahan 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

Dan ini adalah tempat di mana kesalahan mulai menghalangi saya:

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

Jadi saya mencoba

sudo apt-get install -f

Tapi macet di "konfigurasi utama Bluetooth". Saya me-restart telepon, tetapi tidak mau dihidupkan lagi. Saya mencoba Recoveropsi boot. Itu berhasil. Saya mencoba install -flagi, dan kali ini berhasil. Tetapi setelah melakukan upgradesaya masih memiliki kesalahan yang sama.

jangorecki
sumber
Membuat partisi sistem dapat ditulis dan menggunakan apt tidak didukung. Jika Anda benar-benar perlu menggunakan beberapa aplikasi konsol karena suatu alasan, yang terbaik adalah membuat chroot di dalam direktori home, dan kemudian instal apa yang Anda butuhkan di dalam chroot itu.
dobey
1
Saya dapat mengonfirmasi bahwa menggunakan pemutakhiran apt-get akan menghasilkan sistem yang rusak. Pernah ke sana, melakukan itu.
Merlijn Sebrechts
1
@ Galgalesh terima kasih untuk hasil edit, tidak terlihat jauh lebih baik. Adapun untuk saat ini jawaban Anda akan mendapat hadiah :)
jangorecki
1
Tolong berikan ke @dobey. Jawabannya jauh lebih baik :)
Merlijn Sebrechts
1
Silakan juga klik "Terima jawaban ini" di sebelah jawaban. :)
dobey

Jawaban:

17

Buat chroot di dalam direktori home:

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

Kemudian, gunakan chroot dan instal alat CLI apa pun yang perlu Anda gunakan, di dalam chroot itu:

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

Untuk melakukan hal-hal tertentu, mungkin diperlukan untuk mengikat mount beberapa direktori. Anda perlu ekstra hati-hati saat melakukannya, jika Anda ingin menghapus chroot dari ponsel Anda, atau melakukan tindakan merusak lainnya.

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

Ini bukan daftar lengkap, tetapi Anda dapat mengikat direktori lain yang diperlukan dengan cara yang sama. Anda tidak perlu membuat chroot di direktori home Anda jika Anda memiliki perangkat penyimpanan eksternal untuk membuatnya aktif, seperti kartu SD. Namun, tidak semua ponsel memiliki slot kartu SD. Jika Anda ingin membuat chroot pada kartu SD, cukup ganti direktori home pada perintah di atas, dengan jalur ke direktori pada media penyimpanan alternatif tempat Anda ingin membuat chroot.

dobey
sumber
Wow, terima kasih banyak untuk panduan ini! Saya senang bahwa saya tidak perlu main-main /lagi ketika saya ingin mengutak-atik ponsel saya ....
Merlijn Sebrechts
Juga, sudo mount -o bind /run /home/phablet/vivid-chroot/rununtuk mendapatkan jaringan di dalam chroot askubuntu.com/questions/469209/...
sdbbs
1
@ sdbbs Saya pikir itu tidak perlu. Saya tidak mengikat mount apa pun di chroot saya, dan akses jaringan berfungsi dengan baik. Saya menggunakan bzr dan apt sepanjang waktu di dalamnya.
dobey
Saya menyalin /etc/resolv.conf ke vivid-chroot / etc untuk menjalankan resolusi dns.
popey
4

Peringatan: ini hanya peretasan untuk menyingkirkan masalah tautan lintas perangkat pada pemutakhiran apt-get dengan paket powerd. ini bukan solusi tersertifikasi "UBUNTU"

Prasyarat: telah menjadikan R / W instalasi ubuntu dengan:

phablet-config writable-image

Salin file powerd * .deb yang diunduh dari ponsel ke PC dari path:

/ var / cache / apt / arsip /

Pada PC, bukalah file .deb, hapus file /usr/share/powerd/device_configs/config-default.xml (dari pengujian saya hasilnya tidak mendasar):

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 

Semuanya harus dilakukan sebagai root untuk menjaga izin asli dari file paket dan direktori. Bungkus ulang, salin kembali ke telepon, lalu instal dengan:

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

Anda masih akan mendapatkan kesalahan:

"/usr/share/powerd/device_configs/config-default.xml": Perangkat atau sumber daya sibuk

Tetapi pada akhirnya paket diperbarui.

Sekarang jika Anda melakukannya: sudo apt-get upgradekesalahan menghilang.

Ponsel saya BQ Aquaris tampaknya berfungsi dengan baik dan stabil.

Ezio Somà
sumber
Terima kasih atas solusinya! Tidak akan menerima untuk saat ini karena saya masih berharap untuk mendapatkan cara yang lebih direkomendasikan (tidak harus didukung ) untuk melakukannya. BTW. bagaimana dengan pembaruan di masa depan powerd? apakah itu perlu untuk meretasnya di setiap pembaruan?
jangorecki
Sampai seseorang akan menyelesaikan masalah ini menggunakan hardlink dalam dpkg (cerita lama) pada instalasi lintas perangkat, saat ini saya tidak melihat solusi alternatif.
Ezio Somà
1
Mungkin harus dimungkinkan untuk mengubah beberapa titik pemasangan di rder untuk menghindari tautan silang perangkat ini, tetapi perlu waktu untuk dianalisis. Hanya dengan melihat ke file fstab atau output mont saya tidak dapat mengetahui apa yang harus terjadi
Ezio Somà
3

Seperti yang telah ditunjukkan, Anda harus menginstal chroot yang mampu ARM di perangkat Anda dan menginstal semua paket yang diperlukan di chroot itu. Namun, melakukannya di direktori home Anda menghabiskan banyak ruang berharga. Sebaliknya, itu dapat dilakukan pada kartu SD Anda menggunakan komputer yang berjalan pada OS Linux yang sesuai (diuji pada Linux Mint 17 dan Ubuntu Trusty). Karena saya tidak menemukan informasi tentang ini di tempat lain, saya taruh di sini sebagai jawaban untuk pertanyaan lama.

Petunjuk berikut menganggap Anda ingin menginstal chroot debian jessie di direktori jessie.

Membuat dan mengisi file gambar di komputer desktop

Membuat file gambar kosong

Untuk membuat gambar 1GB bernama IMAGE.img di direktori kerja saat ini, lakukan:

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

Perhatikan bahwa B dalam GB ditinggalkan. "jika" singkatan dari "file input", "dari" untuk "file output" dan "bs" untuk "ukuran blok".

Ada perintah yang lebih efisien di luar sana, tetapi itu hanya bekerja pada jenis sistem file tertentu, sejauh yang saya tahu. Yang ini juga berfungsi pada kartu SD atau tempfs. Harap perhatikan penggunaan / dev / zero dan bukan / dev / random atau / dev / urandom karena itu akan memakan waktu lebih lama dan membuatnya membutuhkan waktu lebih lama untuk mentransfer gambar antar perangkat di kemudian hari.

Membuat sistem file pada gambar

Tanpa sistem file, ponsel tidak akan dapat menyimpan data apa pun pada gambar. Tanpa sistem file, Anda belum dapat me-mount gambar ke direktori, hanya ke perangkat blok.

Perintah bash ini akan menampilkan perangkat loop kosong berikutnya ke dalam variabel LOOP:

$LOOP=$(sudo losetup -f)

Selanjutnya, tetapkan gambar ke perangkat blok:

sudo losetup $LOOP IMAGE.img

Selanjutnya, buat sistem file ext4 di atasnya:

sudo mkfs -t ext4 $LOOP

Selanjutnya, lepaskan gambar dari perangkat loop:

sudo losetup -d $LOOP

Jika Anda mendapatkan perintah tidak ditemukan kesalahan, cukup instal program yang hilang.

Pasang file gambar di komputer untuk mengaksesnya

Sekarang, buat direktori sementara di direktori kerja:

mkdir jessie

dan pasang file gambar IMAGE.img ke sana:

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

Perintah ini pwdakan memastikan Anda memberikan mount jalur absolut ke direktori kerja Anda saat ini.

Mengisi gambar dengan sistem operasi baru dengan qemu-debootstrap

Langkah selanjutnya adalah menggunakan qemu-debootstrap untuk mengunduh file yang diperlukan. Ini mudah jika qemu-debootstrap tersedia seperti pada Ubuntu dan OS yang diturunkan. Jika Anda mendapatkan perintah tidak ditemukan kesalahan saat menjalankan qemu-debootstrap --help, coba instal paket yang sesuai, yang dapat dilakukan di Ubuntu melalui:

sudo apt-get install qemu-user-static

Untuk mengunduh semua file yang diperlukan dan menyiapkan OS baru, jalankan perintah berikut:

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

Harap dicatat bahwa jessiesingkatan pertama untuk versi OS sedangkan yang kedua jessiesingkatan direktori di mana file akan diinstal. Sekarang Anda dapat meng-unmount gambar karena sisa pekerjaan harus dilakukan di telepon. Lakukan melalui:

sudo umount $(pwd)/jessie

Jika Anda tidak dapat menginstal qemu-debootstrap, lihat bagian selanjutnya.

Mengisi gambar dengan sistem operasi baru tanpa qemu-debootstrap

Lewati bagian ini jika Anda memiliki qemu-debootstrap. Anda masih membutuhkan debootstrap asli untuk arsitektur Anda. Jika ini adalah armhf, cukup gunakan baris perintah di atas tetapi ganti qemu-debootstrapdengan debootstrap. Jika tidak, ikuti bagian ini.

Untuk mengunduh semua file yang diperlukan untuk OS baru, jalankan perintah berikut:

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

Sekarang Anda dapat meng-unmount gambar karena sisa pekerjaan harus dilakukan di telepon. Lakukan melalui:

sudo umount $(pwd)/jessie

Transfer gambar ke telepon

Sekarang lebih baik buat arsip tar dari sini yang kemudian Anda salin ke telepon Anda. Tidak masalah apakah arsipnya diletakkan di SD-card atau penyimpanan internal. Buat arsip di desktop menggunakan:

tar -cvzf jessie.tar.gz IMAGE.img

Sekarang, di ponsel Anda, aktifkan dukungan ssh untuk menyalin gambar. Anda juga dapat melakukannya menggunakan kabel USB. Karena server ssh di-reset pada setiap reboot, mulai layanan ssh di ponsel melalui: sudo service ssh start

Selanjutnya, salin gambar melalui:

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

di mana variabel COPYDIRberisi direktori tempat gambar akan disimpan. Perintah ini mengasumsikan bahwa nama pengguna Anda pada ponsel adalah phablet dan nama host ponsel adalah ubuntu-phablet. Anda dapat mengetahui masing-masing dengan mengeluarkan echo $USER dan echo $HOSTNAMEdi telepon.

Sekarang Anda hanya perlu mengekstrak arsip di mana pun Anda ingin gambar berada. Asumsikan direktori tempat Anda ingin gambar berada disimpan dalam variabel IMAGEDIR. Ekstrak gambar di sana melalui perintah bash:

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

Anda sekarang dapat menghapus arsip:

rm $COPYDIR/jessie.tar.gz

Menyelesaikan dan menggunakan gambar di telepon

Jika Anda tidak mengaktifkan server ssh di telepon, lakukan sekarang melalui:

sudo service ssh start

Selanjutnya, pasang gambar Anda ke direktori pilihan Anda (dalam hal ini "jessie"):

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

Sekarang, masukkan chroot Anda untuk pertama kalinya melalui:

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

Jika Anda memiliki qemu-debootstrap yang tersedia di komputer Anda, Anda sudah selesai. Gunakan 2 perintah di atas untuk menghubungkan ke chroot Anda. Jika tidak, Anda masih harus menjalankan perintah berikut setelah Anda berada di dalam chroot Anda, untuk mengatur OS dengan benar:

/debootstrap/debootstrap --second-stage

Ringkasan cara mengakses chroot

Jika Anda mengikuti langkah-langkah di atas, Anda seharusnya dapat mengakses chroot menggunakan skrip sederhana ini di ponsel:

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

Anda harus ssh pertama ke ponsel Anda sendiri dari telepon karena pembatasan apparmor dari aplikasi terminal. Aplikasi terminal hanya diperbolehkan untuk menjalankan binari di lokasi tertentu dan direktori home Anda atau kartu SD tidak termasuk di dalamnya. Namun, layanan ssh tidak memiliki batasan seperti itu.

RaZziel
sumber
1

Buat sistem file root di telepon dapat ditulisi

Untuk memount ulang sistem file root sebagai dapat ditulis, jalankan perintah berikut di ponsel Anda (unduh aplikasi terminal jika Anda belum melakukannya):

sudo mount -o remount,rw /

Harap dicatat bahwa setelah me-reboot ponsel Anda, /hanya-baca lagi . Jika Anda ingin ini permanen, ubah /etc/fstab. Namun, sentuhan Ubuntu pada BQ belum pada repo lengan utama Ubuntu. Menginstal hal-hal seperti treeatau libreofficebelum berfungsi. Mereka mungkin dalam versi devel terbaru.

Menjalankan versi devel terbaru dari Ubuntu

(memiliki lebih banyak barang dalam repo, seperti alat baris perintah dan semacamnya)

Bagaimana menjalankan rilis pengembangan sentuh Ubuntu terbaru pada ponsel bq?

Memperbaiki hal-hal ketika Anda menghancurkan segalanya

Ketika Anda benar-benar memecahkan sesuatu, Anda dapat merombak perangkat Anda .

Merlijn Sebrechts
sumber