उबंटू फोन पर नियमित (cli) .deb पैकेज स्थापित करने का अनुशंसित तरीका?


12

tl; dr: मैं एक "कैनोनिकल" या "अनुशंसित" तरीका ढूंढ रहा हूं जिसे स्थापित करने के लिए (cli) .deb पैकेज को स्पर्श करें।

मैं एक साल से अपने डेस्कटॉप और सर्वर पर उबंटू का उपयोग कर रहा हूं और मैं बहुत संतुष्ट हूं। अब मैंने पहला Ubuntu फोन, BQ Aquaris e4.5 Ubuntu संस्करण खरीदा। हालांकि, मुझे पता चला कि मैं सामान्य .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

लेकिन यह "ब्लूटूथ मुख्य कॉन्फ़िगरेशन" पर अटक गया। मैंने फोन को पुनः आरंभ किया, लेकिन यह अब चालू नहीं करना चाहता था। मैंने Recoverबूट विकल्प की कोशिश की । वह काम किया। मैंने install -fफिर से कोशिश की , और इस बार यह काम किया। लेकिन करने के बाद upgradeभी मुझे वही त्रुटि थी।


सिस्टम विभाजन को योग्य बनाना और उपयुक्त का उपयोग करना समर्थित नहीं है। यदि आपको वास्तव में किसी कारण से कुछ कंसोल एप्लिकेशन का उपयोग करने की आवश्यकता है, तो होम डायरेक्टरी के अंदर एक कैरोट बनाना सबसे अच्छा है, और फिर उस चेरोट के अंदर जो आपको चाहिए उसे इंस्टॉल करें।
dobey

1
मैं पुष्टि कर सकता हूं कि apt-get उन्नयन का उपयोग करने के परिणामस्वरूप एक टूटी हुई प्रणाली होगी। वहाँ किया गया था कि।
मर्लिज़न सेब्रेट्स

1
@Galeshesh संपादन के लिए धन्यवाद, ज्यादा बेहतर नहीं लग रहा है। अभी के लिए आपका जवाब एक इनाम हासिल करने जा रहा है :)
jangorecki

1
प्लीज @dobey को दे दो। उसका जवाब बहुत बेहतर है :)
मर्लिजन सेब्रेट्स

1
कृपया बेझिझक उत्तर के आगे "इस उत्तर को स्वीकार करें" पर क्लिक करें। :)
डॉबी

जवाबों:


17

घर निर्देशिका के अंदर एक क्रोकेट बनाएँ:

mkdir -p ज्वलंत-चरोट
सीडी विविड-चेरोट
wget http://cdimage.ubuntu.com/ubuntu-touch/vivid/daily-preinstalled/current/vivid-preinstalled-touch-armhf.tar.gz
सुडो टार-ज़क्सवफ़ विविड-प्रीइंस्टॉल्ड-टच-आर्मह.टार.गज़

फिर, चेरोट का उपयोग करें और उस चुरोट के भीतर जो भी सीएलआई उपकरण आपको उपयोग करने की आवश्यकता है, उसे स्थापित करें:

सीडी ~ / विविड-चेरोट
सुडो चुरोट।
apt-get update
apt-get install git

कुछ चीजों को करने के लिए, कुछ निर्देशिकाओं को माउंट करने की आवश्यकता हो सकती है। ऐसा करते समय आपको अतिरिक्त देखभाल करने की आवश्यकता होगी, यदि आप अपने फोन से चिरोट को हटाना चाहते हैं, या अन्य विनाशकारी क्रियाएं करते हैं।

सुडो माउंट - बिंद / proc / home / phablet / vivid-chroot / proc
सुडो माउंट - बिंद / देव / होम / फैब्रिक / विविड-चेरोट / देव
सुडो माउंट - बिंद / सीस / होम / फैबलेट / विविड-चेरोट / सीस

यह एक विस्तृत सूची नहीं है, लेकिन आप इसी तरह की फैशन में आवश्यकतानुसार अन्य निर्देशिकाओं को बांध सकते हैं। यदि आपके पास एक बाहरी स्टोरेज डिवाइस है, तो इसे एसडी कार्ड जैसे बनाने के लिए आपको अपने होम डायरेक्टरी में चेरोट बनाने की आवश्यकता नहीं है। हालांकि, सभी फोन में एसडी कार्ड स्लॉट नहीं होते हैं। यदि आप एक एसडी कार्ड पर चिरोट बनाना चाहते हैं, तो बस ऊपर दिए गए कमांड में होम डायरेक्टरी को बदलें, अपने वैकल्पिक स्टोरेज मीडिया पर एक डायरेक्टरी के लिए पथ के साथ जहां आप चिरोट बनाना चाहते हैं।


वाह, इस गाइड के लिए बहुत बहुत धन्यवाद! मुझे खुशी है कि मुझे /अपने फोन के साथ
फील

इसके अलावा, sudo mount -o bind /run /home/phablet/vivid-chroot/run
चुरोट के

1
@ sdbbs मुझे नहीं लगता कि यह आवश्यक है। मैं अपने चेरोट में कुछ भी नहीं बांधता, और नेटवर्क एक्सेस ठीक काम करता है। मैं इसके भीतर हर समय बज़्र और एप्ट का उपयोग करता हूं।
dobey

मैंने /etc/resolv.conf को vivid-chroot / etc में कॉपी किया ताकि dns रिज़ॉल्यूशन काम कर सके।
पोप 12

4

चेतावनी: यह केवल एक हैक है जिसे पावर-पैकेज के साथ एप-गेट अपग्रेड पर क्रॉस-डिवाइस लिंक की समस्या से छुटकारा मिलता है। यह "UBUNTU" प्रमाणित समाधान नहीं है

शर्त: आर / डब्ल्यू के साथ ubuntu स्थापना:

phablet-config writable-image

डाउनलोड किए गए पॉवरड को कॉपी करें। फोन से पीसी में पाथ फाइल को पाथ से:

/ Var / कैश / उपयुक्त / अभिलेखागार /

पीसी पर, .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 

पैकेज फ़ाइलों और dirs की मूल अनुमतियाँ रखने के लिए सब कुछ रूट के रूप में किया जाना चाहिए। रीपैक, फोन पर वापस कॉपी करें, फिर इसके साथ इंस्टॉल करें:

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

फिर भी आपको त्रुटि मिलेगी:

"ausr/share/powerd/device_configs/config-default.xml": डिवाइस या संसाधन व्यस्त

लेकिन आखिर में पैकेज अपडेट किया जाता है।

अब यदि आप करते हैं: sudo apt-get upgradeत्रुटि गायब हो गई।

मेरा फोन BQ Aquaris अच्छी तरह से और स्थिर काम करने लगता है।


समाधान के लिए धन्यवाद! अभी के लिए स्वीकार नहीं करेंगे क्योंकि मुझे अभी भी ऐसा करने के लिए और अधिक अनुशंसित ( समर्थित होने की आवश्यकता नहीं है ) की उम्मीद है। Btw। के भविष्य के अपडेट के बारे में क्या powerd? क्या इसे हर अपडेट पर हैक करने की आवश्यकता है?
जंगोरकी

जब तक कोई क्रॉस डिवाइस इंस्टॉलेशन पर dpkg (एक पुरानी कहानी) में हार्डलिंक का उपयोग करने की इस समस्या को हल नहीं करेगा, तब तक मैं वैकल्पिक समाधान नहीं देखता।
एज़ियो सोमे

1
हो सकता है कि इस क्रॉस डिवाइस हार्डलिंक से बचने के लिए रिडर में कुछ माउंट पॉइंट्स को बदलना संभव हो, लेकिन एनालाइज होने के लिए कुछ समय चाहिए। केवल fstab फ़ाइल या mont आउटपुट को देखकर मैं यह पता लगाने में सक्षम नहीं था कि मौका क्या है
Ezio Somà

3

जैसा कि पहले ही बताया जा चुका है, आपको अपने डिवाइस पर एआरएम-सक्षम चिरोट को स्थापित करना होगा और उस चुरोट में सभी आवश्यक पैकेजों को स्थापित करना होगा। हालांकि, अपने घर निर्देशिका में ऐसा करने से बहुत सारे मूल्यवान स्थान बर्बाद हो जाते हैं। इसके बजाय, यह एक उपयुक्त लिनक्स ओएस (लिनक्स मिंट 17 और उबंटू ट्रस्टी पर परीक्षण) पर चलने वाले कंप्यूटर का उपयोग करके आपके एसडी-कार्ड पर किया जा सकता है। जैसा कि मुझे इस बारे में कहीं और कोई जानकारी नहीं मिली, मैंने इसे एक पुराने प्रश्न के उत्तर के रूप में यहां रखा।

निम्नलिखित निर्देश मान लेते हैं कि आप निर्देशिका jessie में डेबियन जेसी चेरोट स्थापित करना चाहते हैं।

एक डेस्कटॉप कंप्यूटर पर छवि फ़ाइल बनाना और आबाद करना

एक खाली छवि फ़ाइल बनाना

वर्तमान कार्य निर्देशिका में IMAGE.img नामक 1GB की छवि बनाने के लिए, यह करें:

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

ध्यान दें कि GB में B को छोड़ दिया गया है। "अगर" "आउटपुट फाइल" के लिए "इनपुट फाइल", "आउटपुट फाइल" और "बी एस" के लिए "ब्लॉक साइज" है।

वहाँ अधिक कुशल कमांड हैं, लेकिन वे केवल कुछ प्रकार की फ़ाइल सिस्टम पर काम करते हैं, जहाँ तक मुझे पता है। यह भी एक एसडी-कार्ड या एक अस्थायी पर काम करता है। कृपया ध्यान दें कि / dev / शून्य के उपयोग और नहीं / dev / random या / dev / urandom के रूप में है कि बहुत अधिक समय लगेगा और बाद में डिवाइसों के बीच छवि को स्थानांतरित करने में बहुत अधिक समय लगेगा।

छवि पर एक फ़ाइल सिस्टम बनाना

फाइल सिस्टम के बिना, फोन छवि पर किसी भी डेटा को स्टोर करने में सक्षम नहीं होगा। एक फ़ाइल सिस्टम के बिना, आप अभी तक एक निर्देशिका को छवि को केवल एक ब्लॉक-डिवाइस पर माउंट नहीं कर सकते।

यह बैश-कमांड अगले खाली लूप डिवाइस को वेरिएबल में आउटपुट करेगा 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 उपलब्ध है जैसा कि उबंटू और व्युत्पन्न OSes पर है। यदि आपको कमांड निष्पादित करते समय त्रुटि नहीं मिली है qemu-debootstrap --help, तो उचित पैकेज को स्थापित करने का प्रयास करें, जिसे उबंटू में किया जा सकता है:

sudo apt-get install qemu-user-static

सभी आवश्यक फ़ाइलों को डाउनलोड करने और नया OS तैयार करने के लिए, निम्न कमांड चलाएँ:

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

कृपया ध्यान दें कि पहला jessieओएस संस्करण jessieके लिए खड़ा है जबकि दूसरा उस निर्देशिका के लिए है जहां फाइलें स्थापित की जाती हैं। अब आप छवि को अनमाउंट कर सकते हैं क्योंकि बाकी का काम फोन पर करना होगा। इसके माध्यम से ऐसा करें:

sudo umount $(pwd)/jessie

यदि आप qemu-debootstrap स्थापित नहीं कर सकते हैं, तो अगला भाग देखें।

Qemu-debootstrap के बिना नए ऑपरेटिंग सिस्टम के साथ छवि को पॉप्युलेट करना

यदि आपके पास qemu-debootstrap उपलब्ध है तो कृपया इस अनुभाग को छोड़ दें। हालांकि आपको वास्तुकला के लिए अभी भी एक देशी डेबस्ट्रैप की आवश्यकता होगी। यदि यह आर्महफ होता है, तो उपरोक्त कमांड लाइन का उपयोग करें लेकिन इसके qemu-debootstrapद्वारा प्रतिस्थापित करें debootstrap। यदि नहीं, तो इस अनुभाग का पालन करें।

नए OS के लिए सभी आवश्यक फ़ाइलों को डाउनलोड करने के लिए, निम्नलिखित कमांड चलाएँ:

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

अब आप इमेज को अनमाउंट कर सकते हैं क्योंकि बाकी का काम फोन पर करना होगा। इसके माध्यम से ऐसा करें:

sudo umount $(pwd)/jessie

छवि को फोन पर स्थानांतरित करें

अब इसमें से एक टार आर्काइव बनाएं जिसे आप अपने फोन में कॉपी करते हैं। इससे कोई फर्क नहीं पड़ता कि संग्रह एसडी-कार्ड या आंतरिक भंडारण पर रखा गया है। उपयोग करके डेस्कटॉप पर संग्रह बनाएं:

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। बैश कमांड के माध्यम से वहां की छवि निकालें:

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

अब आप संग्रह को हटा सकते हैं:

rm $COPYDIR/jessie.tar.gz

फोन पर छवि को अंतिम रूप देना और उसका उपयोग करना

यदि आपने ssh सर्वर को फोन पर चालू नहीं किया है, तो अब इसके माध्यम से करें:

sudo service ssh start

इसके बाद, अपनी छवि को अपनी पसंद की निर्देशिका में माउंट करें (इस मामले में "जेसी"):

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

अब, पहली बार के माध्यम से अपने chroot दर्ज करें:

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

यदि आपके कंप्यूटर पर qemu-debootstrap उपलब्ध है, तो आप सभी काम कर सकते हैं। ऊपर के 2 कमांड्स का उपयोग अपने चिरोट से कनेक्ट करने के लिए करें। यदि नहीं, तो ओएस को ठीक से सेट करने के लिए, आपको अपने कमांड के अंदर एक बार निम्नलिखित कमांड को निष्पादित करना होगा:

/debootstrap/debootstrap --second-stage

चेरोट का उपयोग कैसे करें का सारांश

यदि आपने उपरोक्त चरणों का पालन किया है, तो आपको फोन पर इस सरल स्क्रिप्ट का उपयोग करके अपने चेरोट तक पहुंचने में सक्षम होना चाहिए:

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

आपको टर्मिनल ऐप के एपरमॉर प्रतिबंधों के कारण फोन से पहले अपने स्वयं के फोन में ssh करना होगा। टर्मिनल ऐप को केवल कुछ स्थानों पर बायनेरिज़ को निष्पादित करने की अनुमति है और न ही आपके घर की निर्देशिका और न ही एसडी कार्ड उन में से हैं। हालांकि, ssh सेवा में इस तरह के प्रतिबंध नहीं हैं।


1

फोन राइटिंग पर रूट फाइलसिस्टम बनाएं

मूल फाइल सिस्टम को लिखने योग्य बनाने के लिए, अपने फोन पर निम्न कमांड निष्पादित करें ( यदि आपने पहले से नहीं किया है तो टर्मिनल ऐप डाउनलोड करें ):

sudo mount -o remount,rw /

कृपया ध्यान दें कि आपके फोन को रिबूट करने के बाद, /केवल फिर से पढ़ा जाता है । यदि आप चाहते हैं कि यह स्थायी हो, तो परिवर्तन करें /etc/fstab। हालांकि, बीक्यू पर उबंटू स्पर्श मुख्य उबंटू आर्म रेपो के अभी तक नहीं है। जैसी चीजें स्थापित करना treeया libreofficeअभी तक काम नहीं करेगा। वे नवीनतम नवीनतम संस्करण में हो सकते हैं।

उबंटू के नवीनतम डेवेल संस्करण को चलाना

(रेपो में अधिक अच्छाइयाँ हैं, जैसे कमांडलाइन टूल और ऐसे)

Bq फ़ोन पर नवीनतम Ubuntu टच डेवलपमेंट रिलीज़ कैसे चलाएं?

सब कुछ तोड़ने पर सामान को ठीक करना

जब आप किसी चीज को पूरी तरह से तोड़ देते हैं, तो आप अपने डिवाइस को फिर से अपडेट कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.