Làm cách nào để xây dựng Unity từ nguồn?


64

Tôi muốn biết làm thế nào tôi sẽ xây dựng Unity từ mã nguồn trong bản phát hành phát triển hiện tại. Vui lòng bao gồm các chủ đề sau:

  • Những gói nào là cần thiết để biên dịch Unity?
  • Tôi sẽ lấy mã nguồn hiện tại ở đâu?
  • Các bước để thực sự cấu hình và biên dịch Unity là gì?
  • Có thể chạy phiên bản mới nhất một cách an toàn cùng với phiên bản từ kho không?

Câu trả lời:


65

Xây dựng đoàn kết từ nguồn

Trong hướng dẫn này, bạn sẽ xây dựng một phiên bản Unity trunk riêng biệt (được cài đặt cục bộ vào thư mục chính của bạn), vì vậy bạn không cần phải lo lắng về việc làm hỏng phiên bản từ kho lưu trữ Ubuntu và bạn cũng không cần phải có quyền root trong toàn bộ toàn bộ quá trình (ngoại trừ cài đặt các phụ thuộc xây dựng).

0. Cài đặt phụ thuộc bản dựng

Bạn sẽ cần chạy cái này một lần để cài đặt tất cả các phụ thuộc xây dựng cần thiết:

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

Nếu bạn đã bật kho mã nguồn (aka deb-src), thay vào đó bạn có thể sử dụng:

sudo apt-get build-dep unity

1. Chuẩn bị môi trường

Thay thế SOURCEPREFIXvới các thư mục bạn muốn nguồn và xây dựng các tệp đi. Trong ví dụ này tôi đặt cả hai trong thư mục nhà của tôi:

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. Xây dựng Nux

Bạn có thể sẽ cần lấy phiên bản mới nhất Nuxđể có được Unity trunk để biên dịch:

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

Mẹo : Hầu hết các máy tính để bàn và máy tính xách tay hiện đại có một số lõi. Bạn có thể tăng tốc độ biên dịch bằng cách tận dụng lợi thế này. Các makelệnh đã xây dựng-in hỗ trợ cho điều này mà bạn có thể kích hoạt bằng cách sử dụng -jN chuyển đổi nơi N là số lượng việc làm để chạy song song. Một nguyên tắc nhỏ là chạy gấp 2 lần số lõi trên bộ xử lý của bạn. Vì vậy, trên một máy tính lõi kép thông thường, bạn nên chạy make -j4để giảm thiểu thời gian biên dịch.

3. Xây dựng đoàn kết

Bây giờ hãy lấy mã Unity mới nhất và xây dựng nó:

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

Thế là xong, đăng xuất và đăng nhập lại và bạn nên chạy Unity mới nhất. Ngoài ra , bạn có thể chạy

setsid $PREFIX/bin/unity

4. Đang cập nhật

Đảm bảo chuẩn bị môi trường như được mô tả trong bước 1, sau đó chỉ cần nhập cả hai thư mục cấp cao nhất nuxunity, chạy bzr pull, xây dựng lại và cài đặt lại.

Tôi đề nghị loại bỏ và tạo lại buildthư mục trong unitythư mục, để đảm bảo không có tệp cũ nào gây rối với bản dựng của bạn.

5. Xóa bỏ sự thống nhất

Xóa ba thư mục $SOURCE, $PREFIX~/.compiz-1.


Liên kết hữu ích:


Tôi nghĩ có một điều rất quan trọng, để sao chép phiên bản chúng tôi hiện đang sử dụng, ví dụ như trên Ubuntu 12.04, tôi đã cố gắng sao chép Nux phiên bản mới nhất và nó đã bị lộn xộn, vì Nux đã sử dụng sharedptrnhưng có vẻ như gcc trên 12.04 không hỗ trợ, hoặc cần một số cờ được thêm vào tập tin tạo. Vì vậy, Nhân bản phiên bản chính xác phù hợp với hệ thống của tôi, là rất quan trọng.
Muhammad Hewedy

Không một phần 0 nào hoạt động vào ngày 14.04 ...
Goddard

xserver-xorg-video-dummy: Phụ thuộc: xorg-video-abi-15 Phụ thuộc: xserver-xorg-core (> = 2: 1.14.99.902)
Goddard


7

Xây dựng trong thư mục nhà của bạn

Đôi khi vì lý do kiểm tra, việc xây dựng Unity và nux trong thư mục chính của bạn rất hữu ích để bạn có thể thử xem có thứ gì đó được cố định trong thân cây mà không làm hỏng các gói và / hoặc PPA không. Tôi đã hỏi Jason Smith (Unity Dev) cách anh ấy xây dựng Unity và anh ấy đã giải thích phương pháp của mình cho tôi:

  1. Đảm bảo bạn có tất cả các phụ thuộc xây dựng từ câu trả lời này.

  2. Trước tiên, tạo một thư mục trong nhà của bạn được gọi là "dàn dựng", đây là nơi chúng tôi sẽ xây dựng Unity. Tạo một tập lệnh nhỏ sẽ chuẩn bị môi trường xây dựng, thay thế thư mục chính bằng thư mục của riêng bạn:

    #!/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/"
    

    Tôi gọi nó unity.shvà tôi chạy nó mỗi khi tôi muốn xây dựng Unity. Vì vậy, về cơ bản chmod +x unity.shvà sau đó ./unity.shkhi bạn muốn xây dựng.

  3. Xây dựng nux:

    bzr branch lp:nux
    cd nux
    ./autogen.sh --prefix=/home/jorge/staging
    make -j4
    make install
    cd ..
    
  4. Xây dựng đoàn kết:

    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
    

LƯU Ý: Điều này xây dựng nux và unity trong thư mục nhà của bạn, không cần sudo ở đây hoặc bất cứ điều gì tương tự.

  • Đăng xuất và đăng nhập lại sẽ tự động chạy phiên bản Unity / nux này kể từ khi được tích hợp ~/.compiz
  • Để trở lại các gói thông thường, chỉ cần đăng xuất, xóa ~/.compizvà đăng nhập lại.

6

Mã nguồn cho môi trường mặc định (Unity) có thể được tìm thấy trong gói unity. Cài đặt nguồn với apt-get source unity, các phụ thuộc để xây dựng nó sudo apt-get build-dep unityvà hack đi.

Điều này sẽ cho phép bạn định vị trình khởi chạy ở bên phải, dưới cùng, trên cùng, v.v.


Bạn có thể mở rộng về cách chính xác để thay đổi vị trí? Chỉ cần biết tập tin hoặc cấu hình để sửa đổi sẽ là tuyệt vời.
PitaJ

4

Có tài liệu chính thức tuyệt vời ở đây - Phát triển Unity .

Đây là một đoạn trích từ nó về việc xây dựng Unity - cài đặt từ nguồn và biên dịch

Xây dựng đoàn kết

Các hướng dẫn này sẽ giúp bạn xây dựng sự thống nhất từ ​​nguồn. Tuy nhiên, có một vài điều cần xem xét:

  • Chúng tôi khuyên bạn không bao giờ sao chép bất cứ thứ gì bạn đã xây dựng cục bộ bên ngoài thư mục nhà của bạn. Làm như vậy là yêu cầu sự cố, đặc biệt là khi chúng tôi đang xây dựng toàn bộ vỏ máy tính để bàn. Nếu bạn làm hỏng vỏ máy tính để bàn trên toàn hệ thống, bạn sẽ là một lập trình viên rất buồn!
  • Giả định rằng bạn đang chạy bản phát hành Ubuntu chính xác.
  • Nó cũng được giả định rằng bạn muốn xây dựng sự thống nhất từ ​​thân cây (nghĩa là lp: unity).

Lấy mã nguồn:

Nếu bạn chưa cài đặt Bazaar, hãy cài đặt nó ngay bây giờ:

sudo apt-get install bzr

Bạn sẽ muốn tạo cho mình một thư mục cho mã thống nhất. Làm một cái gì đó như thế này:

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

Hãy lấy mã từ launchpad:

bzr branch lp:unity trunk

Việc này có thể mất một lúc.
Cài đặt phụ thuộc Build:

Chúng ta cần có được sự phụ thuộc vào sự thống nhất. Rất may, apt-get làm cho điều này tầm thường:

sudo apt-get build-dep unity

Biên soạn thống nhất:

Sử dụng bộ hàm bash này để làm cho bước này dễ dàng hơn đáng kể. Để sử dụng chúng, hãy sao chép mã bash sau vào một tệp trong thư mục chính của bạn có tên .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
}

Bây giờ chạy cái này trong một thiết bị đầu cuối:

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

Điều này đảm bảo rằng lần tới khi bạn mở bash shell, các chức năng được liệt kê ở trên sẽ có sẵn cho bạn. Để tránh phải đóng và mở lại thiết bị đầu cuối, chúng ta có thể đọc chúng một cách thủ công chỉ một lần này:

. ~/.bash_functions

Bây giờ bạn có thể chạy:

remake-unity

từ trunk/thư mục chúng tôi đã tạo trước đó. Đó là nó - bạn đang xây dựng sự thống nhất!


2

Việc cài đặt trở nên khó khăn hơn gần đây: một mô-đun mới đã được thêm vào compiz có tên GTK Load (hoặc nó sẽ bị sập trong XI INTERNAtom). Chúng ta cần kích hoạt mô-đun này để sử dụng 4.0.1, nhưng kích hoạt nó sẽ sụp đổ sự thống nhất 3.8.

Thật khó để giữ cả hai. Cách tôi đã làm là:

  • đi vào thư mục compiz-1 và đổi tên tất cả .so thành .so1, ngoại trừ libgtkloader.so
  • khởi động lại compiz với sự thống nhất 4.0.1
  • kích hoạt mô-đun tải gtk trong compizconfig-settings-manager
  • đổi tên các thư viện trở lại .so
  • khởi động lại compiz.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.