Компіляція та встановлення програм із вихідних джерел. Установка на Unix-системи Необхідне програмне забезпечення

Головна / Очищення пристрою

Нерідко необхідні пакети можна знайти лише у вигляді вихідних текстів, у цій статті описується метод встановлення пакета з вихідних текстів.

Розпакування

Програми зазвичай розповсюджуються в упакованих архівах, це файли з розширеннями

.tar.gz (іноді.tgz) .tar.bz2

Потрібно розуміти різницю між архіватором і пакувальником.

Для архівації директорій та файлів використовується програма tar; результатом її роботи є файл із розширенням .tar. Грубо кажучи, це копія файлової системи- директорій та файлів з їх атрибутами та правами доступу, вміщена в один файл.

Цей файл за розміром буде трохи більше, ніж сумарний розмір архівованих файлів. Тому (а може і з іншої причини) використовують пакувальники – програми, які дозволяють зменшити розмір файлу без втрати даних.

Програма tarвміє розпаковувати, тому не потрібно викликати gunzip, а можна просто вказати програмі tar, що файл потрібно спочатку розпакувати. Наприклад, команда

tar-xvf< some_app_name>.tar.gz

відразу розпакує та розархівує. Відмінність файлів із розширеннями

.tar.gz

.tar.bz2

лише в тому, що використовувалися різні пакувальники, програма tarвизначає метод стиснення автоматично та додаткових опційв даному випадкуне вимагається.

Після розпакування необхідно перейти в отриманий каталог, всі команди, що описуються нижче, виконуються в каталозі з вихідними текстами пакета.

cd< имя_пакета>*

Складання пакету

Для складання програм у GNU/Linux використовується (в основному) програма make, яка запускає інструкції з MakefileАле оскільки дистрибутивів GNU/Linux багато, і вони всі різні, то для того щоб зібрати програму, потрібно для кожного дистрибутива окремо прописувати шляхи, де які лежать бібліотеки та заголовні файли. Програмісти не можуть вивчати кожен дистрибутив та для кожного окремо створювати Makefile. Тому вигадали конфігуратори, які «вивчають» систему, і відповідно до здобутих знань створюють Makefile. Але на конфігураторі вони не зупинилися і вигадали конфігуратори конфігураторів ...на цьому вони зупинилися

Для збирання нам потрібні компілятори: вони прописані у залежностях пакету build-essentialтак що досить встановити його з усіма залежностями. Ще потрібні autoconfі automake.

Отже, щоб зібрати щось із вихідних джерел, потрібно спочатку зібрати конфігуратор; як зібрати конфігуратор описано у файлі configure.in. Для складання конфігуратора необхідно виконати

./ bootstrap ./ autogen.sh

Якщо таких скриптів в архіві не виявилося, можна послідовно виконати такі команди:

aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wall

Усі ці команди використовують файл configure.in. Після виконання цих команд створиться файл configure. Після цього необхідно запустити конфігуратор для перевірки наявності всіх залежностей, а також встановлення додаткових опцій зборки (якщо можливо) та перегляду результату установки (опціонально-може не бути)

./configure

Конфігуратор побудує Makefile ґрунтуючись на отриманих знаннях та файлі makefile.am. Можна передати конфігуратору опції, передбачені у вихідниках програми, які дозволяють включати/відключати ті чи інші можливості програми, зазвичай дізнатися про них можна командою

./configure --help

Також є набір стандартних опцій, на кшталт

Prefix=

Яка вказує, який каталог використовуватиме установки. Для Ubuntu зазвичай

--prefix =/ usr --prefix =/ usr/ local

БЕЗслеша в кінці! Тепер можна запустити процес складання самої програми командою

make

Для складання достатньо привілеїв звичайного користувача. Закінченням складання можна вважати момент, коли команди в консолі перестануть "безладно" виконуватися і не буде слова error. Тепер все скомпільовано та готове для встановлення.

Встановлення

Зусилля витрачені на Правильне встановленнязгодом з лишком окупляться у разі видалення або оновлення програмного забезпечення, що встановлюється.

Правильна установка (Варіант №1)

Установка за допомогою утиліти checkinstall. Для встановлення виконайте

sudo apt-get install checkinstall

Мінус даного способу: checkinstallрозуміє не всі вихідники, оскільки автор програми може написати особливі скрипти з встановлення та checkinstallїх не зрозуміє.

Для створення та встановлення deb-пакету необхідно виконати

sudo checkinstall

Правильна установка (Варіант №2)

Швидке створення deb-пакету «вручну».

Основна відмінність від попереднього способуполягає в тому, що в даному випадку ви створюєте пакет вручну і відстежуєте всі зміни, що вносяться. Так само цей спосіб підійде вам, якщо вихідні коди не підтримують складання пакета з checkinstall.

    Виробляємо установку в тимчасову директорію, де отримуємо весь набір файлів, що встановлюються:

fakeroot make install DESTDIR = `pwd` / tempinstall

    Створимо в корені пакета директорію DEBIAN і складемо в DEBIAN/conffiles список всіх файлів, які повинні потрапити в /etc:

сd tempinstall mkdir DEBIAN find etc | sed "s/^/\//" > DEBIAN/ conffiles

    Після чого створюємо файл DEBIAN/control наступного змісту:

Package: имя_пакета Version: 1.2.3 Architecture: amd64/i386/armel/all Maintainer: Можете вписати своє ім'я, можете дрібень, але якщо залишити порожнім, то dpkg буде лаятися Depends: Тут можна вписати список пакетів через кому. Priority: optional Description: Теж треба щось вписати, щоб не кидало попередження

    При необхідності там можна створити скрипти preinst, postinst, prerm і postrm.

    Створюємо deb-пакет, для чого виконуємо:

dpkg -b tempinstall

    Отримуємо на виході tempinstall.deb, який і встановлюємо

sudo dpkg -i tempinstall.deb

Встановлення (варіант №3)

Неправильне встановлення

Мінус цього способу полягає в тому, що якщо ви встановлюєте безпосередньо через make install, то нормально видалити або оновити пакет ви, швидше за все, не зможете. Більше того, встановлення нової версії поверх старої, швидше за все, зачепить ваші зміни в конфігах. make install робить рівно те, що йому сказано – здійснює установку файлів у потрібні місця, ігноруючи той факт, що там щось уже є. Після цього процесу абсолютно ніякої інформації про те, що й куди ставилося, отримати в зручному вигляді неможливо. Іноді, звичайно, Makefile підтримує дію uninstall, але це зустрічається не так часто, та й не факт, що коректно працює. Крім того, вам буде необхідно зберігати для деінсталяції розпаковане дерево вихідників та правил збирання.

Для встановлення необхідно виконати

sudo make install

Для видалення пакета, встановленого цим способом, необхідно виконати в кореневій директорії вихідників програми (там де ви запускали make install).

sudo make uninstall

Помилки

Часто на етапі конфігурації конфігуратор повідомляє, що не вистачає тієї чи іншої бібліотеки. Назва бібліотеки, яку він повідомляє, не завжди відповідає назві пакету в Ubuntu. З власного досвіду можу порадити пошукати в Синаптиці потрібний пакет, виключивши префікс lib, якщо знайшлося кілька пакетів, які розрізняються приставкою -dev в назві, то вам потрібно встановити саме -dev пакет (зазвичай він тягне за собою і не -dev пакет). Можна ще пошукати за допомогою http://packages.ubuntu.com/ , ввівши ім'я бібліотеки у пошук за вмістом пакетів, аналогічно, якщо знайдеться dev і не dev, потрібні обидва . Ну або просто пошукати в Google.

Необхідне програмне забезпечення

Пакети з літерами mm наприкінці опису – це пакети для C++ програм. Список для bmpx, але підійде майже для будь-якої програми GTK2/Gnome. Так що якщо не вдається зібрати, то подивіться на цей список і звірте з тим, що у вас встановлено.

Compile:Runtime:
Xlibx11-devlibx11-6
GlibMMlibglibmm-2.4-devlibglibmm-2.4-1c2a
GTK+libgtk2.0-dev,gtk-doc-toolslibgtk2.0-0
GTKMMlibgtkmm-2.4-devlibgtkmm-2.4-1c2a
Gladelibglade2-devlibglade2-0
GladeMMlibglademm-2.4-devlibglademm-2.4-1c2a
XMLlibxml2-devlibxml2
XML ++libxml++2.6-devlibxml++2.6c2a
DBuslibdbus-1-dev,libdbus-glib-1-devlibdbus-1-2,libdbus-glib-1-2
Alsalibasound2-devlibasound2
HALlibhal-dev,libhal-storage-devlibhal1,libhal-storage1
Gaminlibgamin-devlibgamin0
Neonlibneon25-devlibneon25
TagLiblibtagc0-devlibtagc0
Startup-Notifylibstartup-notification0-devlibstartup-notification0
Boostlibboost-dev,libboost-filesystem-devlibboost-filesystem1.33.1
MusicBrainzlibmusicbrainz4-devlibmusicbrainz4c2a
GStreamerlibgstreamer0.10-dev,libgstreamer-plugins-base0.10-devlibgstreamer0.10-0,libgstreamer-plugins-base0.10-0

На цьому уроці ми покажемо вам, як встановити PHP 7 на Linux VPS. PHP - це мова сценаріїв на стороні сервера використовується для веб-розробки.

PHP 7 поставляється з безліччю нових та вдосконалених функцій. Одним із найпомітніших є нова версія Zend Engine. Крім того, є інші важливі покращення, які сприяють підвищенню продуктивності та значно зменшено використання пам'яті. Таким чином, PHP 7 може бути вдвічі швидше, ніж PHP 5.6.

Щоб встановити PHP 7 на Ubuntu VPS, вам необхідно увійти на свій сервер через . Після того, як ви увійшли до системи, оновіть усі системне програмне забезпечення до останньої версіїза допомогою наступної команди:

Sudo apt-get update && sudo apt-get -y upgrade

Крім того, переконайтеся, що у вашій системі мовний стандарт встановлений у UTF-8. PHP 7 PPA для Ubuntu підтримується Ондржей Сурі. Ми будемо використовувати цей PPA для встановлення PHP 7 на Ubuntu 14.04.

Додайте PPA до списку джерел APT:

Sudo add-apt-repository ppa:ondrej/php-7.0

Якщо ви отримуєте повідомлення про помилку, що команда add-apt-repository не може бути знайдена, то, швидше за все, ваша система не потрапляє в пакет software-properties-common. Йдемо далі та встановимо потрібний пакет.

Sudo apt-get install software-properties-common

Після завершення інсталяції, повторіть команду, щоб додати PHP 7 PPA до вашого APT списку джерел.

Оновлення локального кешу пакетів за допомогою команди:

Sudo apt-get update

Це може зайняти кілька хвилин, і після його завершення ви будете готові встановити PHP 7.

Sudo apt-get install php7.0

Для того, щоб гарантувати, що останню стабільну версію PHP 7 встановлено на вашому сервері, ви можете виконати команду:

Ви повинні отримати щось на кшталт цього:

PHP 7.0.1-1+deb.sury.org~trusty+2 (cli) (NTS) Copyright (c) 1997-2015 v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

Для встановлення додаткових PHP 7 модулів, наприклад, php7.0-MySQL, ви можете використовувати команду нижче:

Sudo apt-get install php7.0-mysql

Для пошуку доступних модулів PHP7 виконайте таку команду:

Sudo apt-cache search php7

Якщо ви хочете перевірити, як PHP 7 працює на Ubuntu VPS, ви можете створити тестовий скрипт. Перейдіть до кореневої директорії документів вашого веб-сервера:

Cd /var/www/html/

Створіть тестовий файл:

Nano info.php

Вставити наступний зміст:

Збережіть файл та закрийте його. Зміна права:

Chown www-data: info.php

Тепер, щоб отримати доступ до файлу, можна використовувати IP-адресу вашого сервера. Відкрийте веб-браузер, яким ви користуєтеся, та перейдіть за посиланням:

http://192.168.1.111/info.php

IP-адреса 192.168.1.111 використовується для тестування, тому переконайтеся, що ви використовуєте IP-адресу вашого сервера. Ви повинні побачити сторінку з поточної інформацією PHP, Таких як версія, опції компіляції, розширення і т.д.

PS. Якщо вам сподобався цей пост, будь ласка, поділіться їм з друзями соціальних мережахза допомогою кнопок на лівій стороні посту або просто залиште коментар нижче. Наперед дякую.

Цей розділ описує встановлення та налаштування PHPна Unix-системах. Будь ласка, прочитайте всі розділи, що стосуються вашої платформи або веб-сервера, перш ніж ви приступите до встановлення.

Зауваження:

Деякі Unix системи (такі як OpenBSD і SELinux) можуть забороняти, з міркувань безпеки, виділення пам'яті одночасно записуваної та виконуваної. Це називається PaX MPROTECT або порушення захисту W^X. Проте, такий режим виділення пам'яті необхідний підтримки JIT компіляції PCRE JIT, отже у разі необхідно збирати PHP без підтримки JIT компіляції PCRE , чи бінарні файлимають бути внесені до білого списку операційної системи,

Зауваження: Крос-компіляція під ARM за допомогою Android toolchain на даний момент не підтримується.

16 років тому

Users compiling за деякими версіями Solaris/SunOS можуть написати цю помилку.
symbol ap_block_alarms: referenced symbol not found

Щоб написати цей проблему, наведіть наступні додаткові flag на Apache build configure line:
--enable-rule=SHARED_CORE

So, adding this to the original instructions, you"d configure your Apache build like so:
./configure --prefix=/www --enable-module=so --enable-rule=SHARED_CORE

12 років тому

Я маю новий до linux/apache/php (coming from server 2003/IIS/Asp.Net), так що я був stumped as why php/apache можна лише за допомогою статевого вмісту. Also, it couldn"t access some documents that you created somewhere else, and then dragged into HTML directory.

Після деякого дослідження, і основою питання був SELinux context of the files. Це мається на увазі, щоб продовжити спільний список для використання, щоб змінити, що, як всі приклади на мережі, були отримані з використанням останньої команди:
# chcon "user_u:object_r:httpd_sys_content_t" /var/www/html -Rc

Це буде змінити SELinux context of all the documents under /var/www/html directory (which is the web directory under Fedora), щоб натиснути httpd процеси до access them, і "-Rc" flag will make the changes Recursive , and will output it's progress for each file that it sucessfully changes.

Php - популярна мова веб-програмування та розробки сайтів. З кожною новою версієюмова ставала все цікавішою і цікавішою, починалося все з простої функціонально орієнтованої мови програмування придатного тільки для створення веб-сторінок, і нарешті Php 5 зараз позиціонується як повнофункціональна об'єктивно орієнтована скриптова мова. php 7 підносить багато цікавих покращень та виправлень таких як тотальна оптимізація продуктивності та додавання багатопоточності але сьогодні не про це, оглядів можливостей php 7 ви можете знайти вагон та маленький візок на просторах інтернету.

У цій інструкції буде описано встановлення php 7 в Linux, вона розрахована в першу чергу на користувачів Ubuntu, але підійде і для інших дистрибутивів. Ми розглянемо встановлення з PPA в Ubuntu та збірку з вихідних джерел.

Репозиторії PPA дозволяють стороннім розробникам поширювати пакети своїх програм в обхід офіційних репозіторів Ubuntu. Зазвичай з PPA можна отримати нові або навіть бета версії програм. Після офіційного релізу php 7 було зроблено PPA для Ubuntu. Додамо його до системи:

$ sudo add-apt-repository ppa:ondrej/php-7.0

sudo apt-get update

І можна встановлювати:

sudo apt-get install php7.0

Для підтримки mysql потрібно встановити бібліотеку:

sudo apt-get install php7.0-mysql

Для встановлення php у вигляді модуля fpm виконайте:

sudo apt-get install php7.0-fpm

Складання php 7 з вихідних джерел

Спочатку встановимо необхідні нам інструменти та бібліотеки:

sudo apt-get install git autoconf bison libxml2 libxml2-dev opessllibcurl4-openssl-dev libbz2-dev libjpeg-dev libpng-dev libxpm-dev

Створимо робочу папку:

Синхронізуємо вихідні php з репозиторію git:

git clone https://git.php.net/repository/php-src.git

Переходимо безпосередньо до складання та встановлення, програма буде встановлена ​​в поточну папку - ~/tmp:

cd php-src
$ sudo ./buildconf
$ sudo ./configure \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--with-t1lib=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-mysql=/usr \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config
$ make

Створюємо папку для конфігураційного файлу:

mkdir $HOME/tmp/usr/etc

Створюємо конфігураційний файл php з таким вмістом:

nano $HOME/tmp/usr/etc/php.ini

max_execution_time=600
memory_limit=128M
error_reporting=0
display_errors=0
log_errors=0
user_ini.filename=
realpath_cache_size=2M
cgi.check_shebang_line=0
zend_extension=opcache.so
opcache.enable_cli=1
opcache.save_comments=0
opcache.fast_shutdown=1
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.use_cwd=1
opcache.max_accelerated_files=100000
opcache.max_wasted_percentage=5
opcache.memory_consumption=128
opcache.consistency_checks=0

Збережіть, і php 7 встановлений та налаштований, можна переходити до тестування.

Тестування

Дивимося версію php:

Або виконуємо скрипт:

nano ~/tmp/script.php

sapi/cli/php ~/tmp/script.php

І нарешті бенчмарки:

sapi/cli/php Zend/bench.php
$ sapi/cli/php Zend/micro_bench.php

© 2022 androidas.ru - Все про Android