मैं स्रोत से एकता कैसे बनाऊं?


64

मैं जानना चाहता हूं कि मौजूदा विकास रिलीज में मैं सोर्स कोड से यूनिटी का निर्माण कैसे करूंगा। कृपया निम्नलिखित विषयों को कवर करें:

  • एकता को संकलित करने के लिए कौन से पैकेज की आवश्यकता है?
  • मुझे वर्तमान स्रोत कोड कहां मिलेगा?
  • एकता को वास्तव में कॉन्फ़िगर और संकलित करने के लिए क्या कदम हैं?
  • क्या रिपॉजिटरी से संस्करण के साथ नवीनतम संस्करण को सुरक्षित रूप से चलाना संभव है?

जवाबों:


65

स्रोत से एकता का निर्माण

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

0. निर्माण निर्भरता स्थापित करना

सभी आवश्यक बिल्ड निर्भरता स्थापित करने के लिए आपको इसे एक बार चलाना होगा:

sudo apt-get install bzr cmake compiz-dev gnome-common libbamf3-dev libboost-dev \
libboost-serialization-dev libgconf2-dev libgdu-dev libglewmx1.6-dev \
libgnome-desktop-3-dev libibus-1.0-dev libindicator3-dev libjson-glib-dev \
libnotify-dev libnux-2.0-dev libpci-dev libsigc++-2.0-dev libunity-dev \
libunity-misc-dev libutouch-geis-dev libxxf86vm-dev libzeitgeist-dev xsltproc

यदि आपके पास स्रोत कोड रिपॉजिटरी (उर्फ deb-src) सक्षम है, तो आप इसके बजाय उपयोग कर सकते हैं:

sudo apt-get build-dep unity

1. पर्यावरण की तैयारी

बदलें SOURCEऔर PREFIXनिर्देशिका के साथ आप स्रोत को पसंद करेंगे और जाने के लिए फ़ाइलों का निर्माण करेंगे। इस उदाहरण में मैंने दोनों को अपने घर निर्देशिका में रखा:

export SOURCE=$HOME/source/unity
export PREFIX=$HOME/build/unity

export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH"
export LD_RUN_PATH="$PREFIX/lib:$LD_RUN_PATH"
export XDG_DATA_DIRS="$PREFIX/share:$XDG_DATA_DIRS"

mkdir -p "$PREFIX"
mkdir -p "$SOURCE"
cd "$SOURCE"

2. बिल्डिंग नक्स

आपको Nuxसंकलन करने के लिए एकता ट्रंक प्राप्त करने के लिए संभवतः नवीनतम संस्करण को हथियाने की आवश्यकता होगी :

bzr branch lp:nux
cd nux
./autogen.sh --disable-examples --disable-gputests --disable-tests --prefix="$PREFIX"
make -j4
make install
cd ..

टिप : अधिकांश आधुनिक डेस्कटॉप और लैपटॉप में कई कोर होते हैं। आप इसका लाभ उठाकर संकलन को बहुत तेज़ कर सकते हैं। makeआदेश निर्माण में इस जो आप उपयोग कर सक्रिय कर सकते हैं के लिए समर्थन हासिल है -jN स्विच जहां एन समानांतर में चलाने के लिए नौकरियों की संख्या है। अंगूठे का एक अच्छा नियम है कि आपके प्रोसेसर पर कोर की संख्या का 2 गुना भाग हो। इस प्रकार, एक सामान्य दोहरे कोर कंप्यूटर पर आपको make -j4संकलन समय को कम करने के लिए चलना चाहिए ।

3. एकता का निर्माण

अब नवीनतम एकता कोड को पकड़ो और इसका निर्माण करें:

bzr branch lp:unity
cd unity
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON -DCMAKE_INSTALL_PREFIX="$PREFIX"
make -j4
make install

यही है, फिर से लॉग आउट करें और वापस जाएं और आपको नवीनतम यूनिटी को चलाना चाहिए। वैकल्पिक रूप से , आप चला सकते हैं

setsid $PREFIX/bin/unity

4. अद्यतन करना

चरण 1 में वर्णित की तरह वातावरण तैयार करने के लिए सुनिश्चित करें, तो बस दोनों शीर्ष-स्तरीय निर्देशिका में प्रवेश nuxऔर unity, चलाने bzr pull, पुनर्निर्माण, और पुनर्स्थापित करें।

मेरा सुझाव है कि buildडायरेक्टरी में डायरेक्टरी को हटाना और फिर unityसे बनाना, यह सुनिश्चित करने के लिए कि कोई पुरानी फाइल आपके बिल्ड के साथ खिलवाड़ नहीं कर रही है।

5. एकता को दूर करना

तीन निर्देशिकाओं को निकालें $SOURCE, $PREFIXऔर ~/.compiz-1


उपयोगी लिंक:


मुझे लगता है कि वर्तमान में उपयोग किए जाने वाले संस्करण को क्लोन करने के लिए बहुत महत्वपूर्ण बात है, उदाहरण के लिए, उबंटू 12.04 पर, मैंने Nux के नवीनतम संस्करण को क्लोन करने की कोशिश की है, और यह गड़बड़ हो गया, क्योंकि नक्स ने इस्तेमाल किया था sharedptrलेकिन ऐसा लगता है कि 12.04 पर gcc नहीं है समर्थन, या मेक फ़ाइलों में जोड़े जाने के लिए कुछ ध्वज की आवश्यकता है। तो, मेरे सिस्टम के साथ उपयुक्त सटीक संस्करण का क्लोनिंग, बहुत महत्वपूर्ण है।
मुहम्मद ह्वेदी

14.04 पर न तो एक भाग 0 काम कर रहा है ...
गोडार्ड

xserver-xorg-video-dummy: निर्भर करता है: xorg-video-abi-15 निर्भर करता है: xserver-xorg-core (> 2: 1.14.99.902)
Goddard

9

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

https://github.com/bitshifter/Unity-Build/raw/master/build-unity.sh


7

अपने घर निर्देशिका में निर्माण

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

  1. सुनिश्चित करें कि आपके पास इस उत्तर से सभी निर्भरताएं हैं

  2. पहले अपने घर में "मंचन" नामक एक निर्देशिका बनाएं, यही वह जगह है जहाँ हम एकता का निर्माण करेंगे। एक छोटी स्क्रिप्ट बनाएं जो बिल्ड वातावरण तैयार करेगा, होम डायरेक्टरी को अपने साथ बदलें:

    #!/bin/bash
    
    PREFIX=/home/jorge/staging
    
    export XDG_DATA_DIRS="$PREFIX/share:$XDG_DATA_DIRS"
    export LD_LIBRARY_PATH="$PREFIX/lib/"
    export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig/"
    

    मैं इसे कॉल करता हूं unity.shऔर मैं इसे हर बार चलाता हूं जब मैं एकता का निर्माण करना चाहता हूं। तो मूल रूप से chmod +x unity.shऔर फिर ./unity.shजब आप निर्माण करना चाहते हैं।

  3. नक्स बनाएँ:

    bzr branch lp:nux
    cd nux
    ./autogen.sh --prefix=/home/jorge/staging
    make -j4
    make install
    cd ..
    
  4. एकता बनाएँ:

    bzr branch lp:unity
    cd unity
    mkdir build
    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=/home/jorge/staging/ -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON
    make -j4
    make install
    

नोट: यह आपके घर निर्देशिका में नक्स और एकता बनाता है, यहाँ sudo या ऐसा कुछ भी करने की कोई आवश्यकता नहीं है।

  • लॉग आउट और बैक इन होने के बाद से एकता / नक्स का यह संस्करण स्वचालित रूप से चलेगा क्योंकि इसे बनाया गया था ~/.compiz
  • सामान्य पैकेजों पर वापस जाने के लिए बस लॉग आउट करें, हटाएं ~/.compizऔर वापस लॉग इन करें।

6

डिफ़ॉल्ट वातावरण (एकता) के लिए स्रोत कोड पैकेज में पाया जा सकता है unity। स्रोत के साथ स्थापित करें apt-get source unity, निर्भरता के साथ इसे बनाने के लिए sudo apt-get build-dep unityऔर दूर हैक।

यह आपको लॉन्चर को दायीं ओर, नीचे, ऊपर आदि पर स्थित करेगा।


क्या आप इस बात पर विस्तार कर सकते हैं कि स्थिति को कैसे बदलना है? बस यह जानना कि संशोधित करने के लिए कौन सी फ़ाइल या कॉन्फ़िगरेशन भयानक होगा।
पिटाज

4

यहाँ उत्कृष्ट आधिकारिक दस्तावेज है - विकासशील एकता

एकता बनाने और स्रोत से संकलित करने पर यहाँ इसका एक अंश प्रस्तुत है

एकता का निर्माण

ये निर्देश आपको स्रोत से एकता बनाने में मदद करेंगे। हालाँकि, कुछ बातों पर विचार करना चाहिए:

  • यह अनुशंसा की जाती है कि आप कभी भी अपने घर निर्देशिका के बाहर स्थानीय रूप से निर्मित किसी भी चीज़ की नकल न करें। ऐसा करने से परेशानी हो रही है, खासकर जब हम पूरे डेस्कटॉप शेल का निर्माण कर रहे हैं। यदि आप अपने सिस्टम-वाइड डेस्कटॉप शेल को बर्बाद करने का प्रबंधन करते हैं तो आप बहुत दुखी प्रोग्रामर होंगे!
  • यह माना जाता है कि आप सटीक उबंटू रिलीज कर रहे हैं।
  • यह भी माना जाता है कि आप ट्रंक (यानी, एलपी: एकता) से एकता बनाना चाहते हैं।

स्रोत कोड प्राप्त करना:

यदि आपके पास पहले से बाज़ार स्थापित नहीं है, तो इसे अभी स्थापित करें:

sudo apt-get install bzr

आप खुद को एकता कोड के लिए एक फ़ोल्डर बनाना चाहेंगे। कुछ इस तरह से करें:

mkdir -p ~/code/unity
cd ~/code/unity

लॉन्चपैड से कोड को पकड़ो:

bzr branch lp:unity trunk

इसमें थोड़ा सा समय लग सकता है।
बिल्ड डिपेंडेंसी स्थापित करना:

हमें एकता के लिए निर्माण-निर्भरता प्राप्त करने की आवश्यकता है। शुक्र है, उपयुक्त इस तुच्छ बनाता है:

sudo apt-get build-dep unity

संकलित एकता:

इस कदम को काफी आसान बनाने के लिए बैश कार्यों के सेट का उपयोग करें। उनका उपयोग करने के लिए, अपने घर निर्देशिका में एक फ़ाइल में निम्नलिखित बैश कोड को कॉपी करें .bash_functions:

function recreate-build-dir()
{
   rm -r build
   mkdir build
   cd build
}

function remake-autogen-project()
{
    ./autogen.sh --prefix=$HOME/staging --enable-debug
    make clean && make && make install
}

function remake-unity()
{
    recreate-build-dir
    cmake .. -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DCMAKE_INSTALL_PREFIX=$HOME/staging/ -DGSETTINGS_LOCALINSTALL=ON
    make  && make install
}

function unity-env
{
 export PATH=~/staging/bin:$PATH
 export XDG_DATA_DIRS=~/.config/compiz-1/gsettings/schemas:~/staging/share:/usr/share:/usr/local/share
 export LD_LIBRARY_PATH=~/staging/lib:${LD_LIBRARY_PATH}
 export LD_RUN_PATH=~/staging/lib:${LD_RUN_PATH}
 export PKG_CONFIG_PATH=~/staging/lib/pkgconfig:${PKG_CONFIG_PATH}
 export PYTHONPATH=~/staging/lib/python2.7/site-packages:$PYTHONPATH
}

अब इसे टर्मिनल में चलाएं:

echo ". ~/.bash_functions" >> ~/.bashrc

यह सुनिश्चित करता है कि अगली बार जब आप बैश खोल खोलेंगे तो ऊपर सूचीबद्ध फ़ंक्शन आपके लिए उपलब्ध होंगे। टर्मिनल को बंद करने और फिर से खोलने से बचने के लिए, हम उन्हें मैन्युअल रूप से सिर्फ एक बार पढ़ सकते हैं:

. ~/.bash_functions

अब आपको चलाने में सक्षम होना चाहिए:

remake-unity

trunk/हमने पहले बनाई गई डायरेक्टरी से । यही है - आप एकता का निर्माण कर रहे हैं!


2

स्थापना को हाल ही में पेचीदा हो गया: GTK लोड (या यह XInternArtom में दुर्घटनाग्रस्त हो जाएगा) नाम से एक नया मॉड्यूल जोड़ा गया है। हमें 4.0.1 का उपयोग करने के लिए इस मॉड्यूल को सक्रिय करने की आवश्यकता है, लेकिन इसे सक्रिय करने से एकता 3.8 दुर्घटनाग्रस्त हो जाएगी।

इन दोनों को रखना मुश्किल हो रहा है। जिस तरह से मैंने यह किया था:

  • Compiz-1 फ़ोल्डर में जाएं और .so1 के द्वारा .so1 का नाम बदलें, libgtkloader.so को छोड़कर
  • एकता 4.0.1 के साथ फिर से शुरू
  • Compizconfig-settings-manager में gtk लोड मॉड्यूल को सक्रिय करें
  • पुस्तकालयों को वापस .so में नाम बदलें
  • पुनः आरंभ करें।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.