Компіляція та встановлення програм із вихідних джерел. Установка на Unix-системи Необхідне програмне забезпечення
Нерідко необхідні пакети можна знайти лише у вигляді вихідних текстів, у цій статті описується метод встановлення пакета з вихідних текстів.
Розпакування
Програми зазвичай розповсюджуються в упакованих архівах, це файли з розширеннями
Потрібно розуміти різницю між архіватором і пакувальником.
Для архівації директорій та файлів використовується програма tar; результатом її роботи є файл із розширенням .tar. Грубо кажучи, це копія файлової системи- директорій та файлів з їх атрибутами та правами доступу, вміщена в один файл.
Цей файл за розміром буде трохи більше, ніж сумарний розмір архівованих файлів. Тому (а може і з іншої причини) використовують пакувальники – програми, які дозволяють зменшити розмір файлу без втрати даних.
Програма tarвміє розпаковувати, тому не потрібно викликати gunzip, а можна просто вказати програмі tar, що файл потрібно спочатку розпакувати. Наприклад, команда
tar-xvf< some_app_name>.tar.gzвідразу розпакує та розархівує. Відмінність файлів із розширеннями
лише в тому, що використовувалися різні пакувальники, програма 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.
Виробляємо установку в тимчасову директорію, де отримуємо весь набір файлів, що встановлюються:
Створимо в корені пакета директорію DEBIAN і складемо в DEBIAN/conffiles список всіх файлів, які повинні потрапити в /etc:
Після чого створюємо файл DEBIAN/control наступного змісту:
При необхідності там можна створити скрипти preinst, postinst, prerm і postrm.
Створюємо deb-пакет, для чого виконуємо:
Отримуємо на виході 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: | |
---|---|---|
X | libx11-dev | libx11-6 |
GlibMM | libglibmm-2.4-dev | libglibmm-2.4-1c2a |
GTK+ | libgtk2.0-dev,gtk-doc-tools | libgtk2.0-0 |
GTKMM | libgtkmm-2.4-dev | libgtkmm-2.4-1c2a |
Glade | libglade2-dev | libglade2-0 |
GladeMM | libglademm-2.4-dev | libglademm-2.4-1c2a |
XML | libxml2-dev | libxml2 |
XML ++ | libxml++2.6-dev | libxml++2.6c2a |
DBus | libdbus-1-dev,libdbus-glib-1-dev | libdbus-1-2,libdbus-glib-1-2 |
Alsa | libasound2-dev | libasound2 |
HAL | libhal-dev,libhal-storage-dev | libhal1,libhal-storage1 |
Gamin | libgamin-dev | libgamin0 |
Neon | libneon25-dev | libneon25 |
TagLib | libtagc0-dev | libtagc0 |
Startup-Notify | libstartup-notification0-dev | libstartup-notification0 |
Boost | libboost-dev,libboost-filesystem-dev | libboost-filesystem1.33.1 |
MusicBrainz | libmusicbrainz4-dev | libmusicbrainz4c2a |
GStreamer | libgstreamer0.10-dev,libgstreamer-plugins-base0.10-dev | libgstreamer0.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
phpinfo() ?>
sapi/cli/php ~/tmp/script.php
І нарешті бенчмарки:
sapi/cli/php Zend/bench.php
$ sapi/cli/php Zend/micro_bench.php