Ubuntu Telefona düzenli (cli) .deb paketleri kurmanın önerilen yolu?


12

tl; dr: Ubuntu touch'a (cli) .deb paketlerini kurmak için "standart" veya "önerilen" bir yol arıyorum

Bir yıldır Masaüstümde ve Sunucumda Ubuntu kullanıyorum ve çok memnunum. Şimdi ilk Ubuntu telefonu, BQ Aquaris e4.5 Ubuntu Edition'ı satın aldım. Ancak, normal .debpaketleri yükleyemediğimi veya kullanarak bir şeyler yükleyemediğimi öğrendim apt-get. "Normal" .debpaketleri kurabilmem için telefonumu nasıl "rootlayabilirim" ?

Kendim denedim. İlk biliyorum dosya sisteminizi yazılabilir yapmak. Aşağıdaki adımları yaptım ama sonra bir dpkg hatası nedeniyle sıkıştı.

# 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

Ve burası hatanın beni engellemeye başladığı yer:

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

Ben de denedim

sudo apt-get install -f

Ama "Bluetooth ana yapılandırma" takılı kaldı. Telefonu yeniden başlattım, ama artık açmak istemiyordu. RecoverÖnyükleme seçeneğini denedim . İşe yaradı. Tekrar denedim install -fve bu sefer işe yaradı. Ama yaptıktan sonra upgradehala aynı hatayla karşılaştım.


Sistem bölümünü yazılabilir yapmak ve apt kullanmak desteklenmez. Bazı konsol uygulamalarını bir nedenden dolayı gerçekten kullanmanız gerekiyorsa, ana dizinin içinde bir chroot oluşturmak ve daha sonra ihtiyacınız olanı o chroot'a yüklemek en iyisidir.
dobey

1
Apt-get yükseltme kullanmanın bozuk bir sisteme neden olacağını onaylayabilirim. Orada bulundum, bitti.
Merlijn Sebrechts

1
@Galgalesh düzenleme için teşekkürler, çok daha iyi görünmüyor. Şimdilik cevabınız bir ödül
kazanacak

1
@Dobey'e ver lütfen. Cevabı çok daha iyi :)
Merlijn Sebrechts

1
Lütfen cevabın yanındaki "Bu yanıtı kabul et" i de tıklayabilirsiniz. :)
dobey

Yanıtlar:


17

Giriş dizininin içinde bir chroot oluşturun:

mkdir -p canlı-chroot
cd vivid-chroot
wget http://cdimage.ubuntu.com/ubuntu-touch/vivid/daily-preinstalled/current/vivid-preinstalled-touch-armhf.tar.gz
sudo tar -zxvf canlı-önceden yüklenmiş-touch-armhf.tar.gz

Ardından, chroot'u kullanın ve kullanmanız gereken CLI araçlarını bu chroot'a yükleyin:

cd ~ / vivid-chroot
sudo chroot.
uygun güncelleme
apt-get install git

Bazı şeyleri gerçekleştirmek için bazı dizinleri bağlama bağlanması gerekebilir. Krootu telefonunuzdan silmek veya diğer yıkıcı eylemleri gerçekleştirmek istiyorsanız, bunu yaparken çok dikkatli olmanız gerekecektir.

sudo montaj - bağlama / proc / ev / phablet / canlı-chroot / proc
sudo dağı - bağlama / dev / ana sayfa / phablet / vivid-chroot / dev
sudo dağı - bağlama / sys / ev / phablet / vivid-chroot / sys

Bu kapsamlı bir liste değildir, ancak diğer dizinleri de benzer şekilde bağlayabilirsiniz. SD kart gibi bir harici depolama cihazınız varsa, ana dizininizde chroot oluşturmanıza gerek yoktur. Ancak, tüm telefonlarda SD kart yuvası yoktur. Bir SD kartta chroot oluşturmak istiyorsanız, yukarıdaki komutlardaki ana dizini, chroot oluşturmak istediğiniz alternatif depolama ortamınızdaki bir dizinin yoluyla değiştirin.


Vay be, bu rehber için çok teşekkürler! /Telefonumla
uğraşmak

Ayrıca, krootsudo mount -o bind /run /home/phablet/vivid-chroot/run içinde ağ elde etmek için askubuntu.com/questions/469209/…
sdbbs

1
@sdbbs Bunun gerekli olduğunu düşünmüyorum. Bağlantımda hiçbir şeyi bağlamıyorum ve ağ erişimi iyi çalışıyor. Ben her zaman bzr kullanın ve apt.
dobey

DNS çözünürlüğünün çalışması için /etc/resolv.conf dosyasını canlı chroot / etc'ye kopyaladım.
popey

4

Uyarı: Bu sadece powerd paketi ile apt-get yükseltmesi cihazlar arası bağlantı sorunu kurtulmak için bir hack . bu "UBUNTU" sertifikalı bir çözüm değildir

Önkoşul: R / W ubuntu kurulumunu aşağıdakilerle yapmış olmak:

phablet-config writable-image

İndirilen powerd * .deb dosyasını telefondan bir PC'ye yoldan kopyalayın:

/ Var / cache / apt / archives /

Bilgisayarda, .deb dosyasını açın, /usr/share/powerd/device_configs/config-default.xml dosyasını kaldırın (testlerimden önemli değil):

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 

Paket dosyalarının ve dizinlerinin orijinal izinlerini korumak için her şey kök olarak yapılmalıdır. Yeniden paketleyin, telefona kopyalayın, ardından aşağıdakileri yükleyin:

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

Hatayı yine de alacaksınız:

"/usr/share/powerd/device_configs/config-default.xml": Aygıt veya kaynak meşgul

Ama sonunda paket güncellenir.

Şimdi yaparsanız: sudo apt-get upgradehata kayboldu.

Telefonum BQ Aquaris iyi ve istikrarlı çalışıyor.


Çözüm için teşekkürler! Şimdilik kabul etmeyeceğim, hala bunu yapmak için daha önerilen ( desteklenmesine gerek yok) bir yol almayı umuyorum . BTW. gelecekteki güncellemeleri ne olacak powerd? her güncellemede kesmek gerekiyor mu?
jangorecki

Birisi çapraz cihaz kurulumunda dpkg'da (eski bir hikaye) hardlink kullanma sorununu çözene kadar, şu anda alternatif bir çözüm görmüyorum.
Ezio Somà

1
Bu cihazlar arası sabit bağlantıdan kaçınmak için bazı bağlantı noktalarını değiştirmek mümkün olabilir, ancak analiz edilmesi için biraz zamana ihtiyaç vardır. Sadece fstab dosyasına veya mont çıktısına bakarak neyin şansı olduğunu anlayamadım
Ezio Somà

3

Daha önce de belirtildiği gibi, cihazınıza ARM özellikli bir kroket takmanız ve gerekli tüm paketleri bu kroota kurmanız gerekir. Bununla birlikte, ana dizininizde bunu yapmak çok fazla yer kaplar. Bunun yerine, uygun bir Linux işletim sisteminde (Linux Mint 17 ve Ubuntu Trusty üzerinde test edilmiştir) çalışan bir bilgisayar kullanılarak SD kartınızda yapılabilir. Bu konuda başka hiçbir yerde bulamadığım için, buraya eski bir soruya cevap olarak koydum.

Aşağıdaki talimatlar, jessie dizinine bir debian jessie chroot yüklemek istediğinizi varsayar.

Masaüstü bilgisayarda görüntü dosyası oluşturma ve doldurma

Boş bir görüntü dosyası oluşturma

Geçerli çalışma dizininde IMAGE.img adlı 1 GB'lık bir görüntü oluşturmak için şunları yapın:

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

GB cinsinden B'nin dışarıda bırakıldığını unutmayın. "if", "girdi dosyası", "çıktı dosyası" için "ve" blok boyutu "için" bs "anlamına gelir.

Orada daha verimli komutlar var, ancak bunlar sadece bildiğim kadarıyla belirli dosya sistemleri üzerinde çalışıyor. Bu aynı zamanda bir SD kart veya tempf üzerinde de çalışır. Lütfen / dev / zero ve / dev / random veya / dev / urandom değil, daha uzun sürdüğünü ve daha sonra görüntüyü cihazlar arasında aktarmanın çok daha uzun süreceğini unutmayın.

Görüntü üzerinde bir dosya sistemi oluşturma

Dosya sistemi olmadan, telefon görüntü üzerinde herhangi bir veri depolayamaz. Bir dosya sistemi olmadan, görüntüyü bir dizine henüz bağlayamazsınız, yalnızca bir blok aygıta bağlayamazsınız.

Bu bash komutu bir sonraki boş döngü aygıtını değişkene gönderir LOOP:

$LOOP=$(sudo losetup -f)

Ardından, görüntüyü bir blok cihaza atayın:

sudo losetup $LOOP IMAGE.img

Ardından, üzerinde ext4 dosya sistemi oluşturun:

sudo mkfs -t ext4 $LOOP

Ardından, görüntüyü döngü aygıtından ayırın:

sudo losetup -d $LOOP

Komut bulunamadı hataları alırsanız, sadece eksik programları yükleyin.

Görüntü dosyasını erişmek için bilgisayara bağlayın

Şimdi, çalışma dizininde geçici bir dizin oluşturun:

mkdir jessie

ve IMAGE.img resim dosyasını ekleyin:

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

Komut pwd, mount'a geçerli çalışma dizininize mutlak bir yol verdiğinizden emin olur.

Görüntüyü qemu-debootstrap ile yeni işletim sistemiyle doldurma

Bir sonraki adım, gerekli dosyaları indirmek için qemu-debootstrap kullanmak olacaktır. Ubuntu ve türetilmiş işletim sistemlerinde olduğu gibi qemu-debootstrap kullanılabilirse bu kolaydır. Çalıştırırken komut bulunamadı hataları alırsanız qemu-debootstrap --help, Ubuntu'da şu şekilde yapılabilecek uygun paketi yüklemeyi deneyin:

sudo apt-get install qemu-user-static

Gerekli tüm dosyaları indirmek ve yeni işletim sistemini hazırlamak için aşağıdaki komutu çalıştırın:

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

Lütfen ilk jessiesürümün OS sürümü, ikincisi jessieise dosyaların yükleneceği dizini temsil ettiğini unutmayın. Bunu şu yolla yapın:

sudo umount $(pwd)/jessie

Qemu-debootstrap yükleyemiyorsanız, bir sonraki bölüme bakın.

Görüntüyü qemu-debootstrap olmadan yeni işletim sistemiyle doldurma

Qemu-debootstrap'iniz varsa lütfen bu bölümü atlayın. Yine de, mimariniz için yerel bir debootstrap'e ihtiyacınız olacak. Bu armhf olur, sadece yukarıdaki komut satırını kullanın ancak onların yerini qemu-debootstraptarafından debootstrap. Değilse, bu bölümü izleyin.

Yeni işletim sistemi için gerekli tüm dosyaları indirmek için aşağıdaki komutu çalıştırın:

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

Artık işin geri kalanı telefonda yapılması gerektiği için görüntüyü çıkarabilirsiniz. Bunu şu yolla yapın:

sudo umount $(pwd)/jessie

Görüntüyü telefona aktar

Şimdi bundan daha sonra telefonunuza kopyalayacağınız bir tar arşivi oluşturun. Arşivin SD karta veya dahili depolama birimine yerleştirilmesi önemli değildir. Aşağıdakileri kullanarak masaüstünde arşiv oluşturun:

tar -cvzf jessie.tar.gz IMAGE.img

Şimdi, telefonunuzda, görüntüyü kopyalamak için ssh desteğini açın. Bunu bunun yerine bir USB kablosu kullanarak da yapabilirsiniz. Ssh sunucusu her yeniden başlatıldığında sıfırlandığından, telefondaki ssh hizmetini şu yolla başlatın: sudo service ssh start

Ardından, resmi şununla kopyalayın:

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

burada değişken COPYDIR, görüntünün saklanacağı dizini içerir. Bu komut, telefondaki kullanıcı adınızın phablet olduğunu ve telefonun ana bilgisayar adının ubuntu-phablet olduğunu varsayar. Sen düzenlenmek suretiyle hem öğrenebilirsiniz echo $USER ve echo $HOSTNAMEsırasıyla telefonda.

Artık arşivi yalnızca görüntünün bulunmasını istediğiniz yere çıkarmanız gerekir. Görüntünün bulunmasını istediğiniz dizinin değişkende depolandığını varsayın IMAGEDIR. Buradaki görüntüyü bash komutu ile çıkarın:

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

Artık arşivi kaldırabilirsiniz:

rm $COPYDIR/jessie.tar.gz

Görüntüyü telefonda sonlandırma ve kullanma

Telefondaki ssh sunucusunu açmadıysanız, şimdi şu şekilde yapın:

sudo service ssh start

Ardından, resminizi seçtiğiniz bir dizine bağlayın (bu durumda "jessie"):

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

Şimdi, chroot'unuzu ilk kez şu yolla girin:

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

Bilgisayarınızda qemu-debootstrap varsa, her şey tamam demektir. Root'unuza bağlanmak için yukarıdaki 2 komutu kullanın. Değilse, işletim sisteminizi düzgün bir şekilde kurmak için, rootunuzun içindeyken aşağıdaki komutu yürütmeniz gerekir:

/debootstrap/debootstrap --second-stage

Rotaya erişimin özeti

Yukarıdaki adımları izlediyseniz, telefonda bu basit komut dosyasını kullanarak chroot'unuza erişebilmeniz gerekir:

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

Terminal uygulamasının belirgin kısıtlamaları nedeniyle ilk olarak telefondan kendi telefonunuza ssh yapmanız gerekir. Terminal uygulamasının yalnızca belirli yerlerde ikili dosyalar yürütmesine izin verilir ve ne ana dizininiz ne de SD kartınız bunlardan değildir. Bununla birlikte, ssh hizmetinin bu tür kısıtlamaları yoktur.


1

Telefondaki kök dosya sistemini yazılabilir yapma

Kök dosya sistemini yazılabilir olarak yeniden monte etmek için, telefonunuzda aşağıdaki komutu yürütün ( henüz yapmadıysanız terminal uygulamasını indirin ):

sudo mount -o remount,rw /

Telefonunuzu yeniden başlattıktan sonra /tekrar salt okunur olduğunu lütfen unutmayın . Bunun kalıcı olmasını istiyorsanız değiştirin /etc/fstab. Ancak, BQ üzerindeki Ubuntu dokunuşu henüz ana Ubuntu kol repolarında değil. Gibi treeya libreofficeda böyle şeyler yüklemek henüz işe yaramaz. En son devel versiyonunda olabilirler.

Ubuntu'nun en son devel sürümünü çalıştırma

(repoda komut satırı araçları ve benzeri daha fazla güzellik var)

Bq telefonda en son Ubuntu dokunmatik geliştirme sürümünü nasıl çalıştırırım?

Her şeyi kırdığınızda bir şeyleri düzeltme

Bir şeyi tamamen kırdığınızda , cihazınızı yeniden kırabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.