====== Installation du shard ======
Le shard désigne une instance du serveur de jeu basé sur le système Ryzom Core. Ce tutoriel a été établi à partir des notes issues du wiki de Ryzomcore((Pour info : [[https://ryzomcore.atlassian.net/wiki|page Ryzomcore originale]])).
Il reste à détailler le déploiement d'AMS (Account Management System) mais on va le remplacer par webNel , une interface en Python et Django.
Avant toute chose, assurez-vous d'avoir une base bien configurée : [[fr:1eres_etapes_serveur]]
L'installation du shard se fait sous Linux (Debian Jessie est conseiller), avec un utilisateur dédié, que nous nommerons ici "compil" :
La première partie se fait en root.
adduser compil
adduser compil sudo
adduser compil www-data
===== Installation des packages et des sources =====
Des essais ont été faits sur:
* [[http://releases.ubuntu.com/15.04/|Ubuntu 15.04]]
* [[https://wiki.debian.org/fr/DebianWheezy|Debian 7 Whezy]]
* [[https://wiki.debian.org/fr/DebianJessie|Debian 8 Jessie]] **installation conseiller**
* Windows (tuto non fini)
* Sous Debian 9, Stretch, il reste encore des problèmes d'erreur avec les primitives, il faut utiliser le patch ou compilé curl
* Debian 10 Buster (en cours de test 29/08/2019)
====Mise à jours des informations et packages pour linux:====
apt update
apt dist-upgrade
**À ce point si le kernel est mis à jour , vous devez redémarrer:**
reboot
====Serveur web====
**Vous avez besoin d'installer des outils et libs pour compiler et démarrer le serveur.**
Choisissez apache2 ou nginx
===Apache2===
=> Installez les paquets de [[fr:lamp|LAMP]] :
apt install apache2 apache2-utils mariadb-server mariadb-client mcrypt
php:
apt install php libapache2-mod-php php-mysql php-gd php-imagick
Pour le code AMS avant 2019-05-11
php<7.2
apt install php-mcrypt
===Nginx===
=> Installez les paquets de LEMP :
apt install nginx mysql-server mysql-client mcrypt
apt install php5-fpm php5-mysql php5-gd php5-imagick
===Phpmyadmin===
Ceci est optionnel
apt install phpmyadmin
php doit être <= à la version 7.1 car mcrypt n'est plus disponible en 7.2 ! [[https://wiki.php.net/rfc/mcrypt-viking-funeral|source]]
====Paquets pour le shard====
===Ubuntu===
apt-get install git libcurl4-openssl-dev libluabind-dev libfreetype6-dev libx11-dev libgl1-mesa-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev libogg-dev libvorbis-dev libxml2-dev cmake build-essential libpng12-dev libjpeg62-dev rrdtool libmysqlclient18-dev bison libxmu-dev autoconf automake libcpptest-dev libgif-dev cpputest libssl-dev unzip p7zip p7zip-full screen wget
===Debian 7===
apt-get install git libcurl4-openssl-dev libluabind-dev libfreetype6-dev libx11-dev libgl1-mesa-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev libogg-dev libvorbis-dev libxml2-dev cmake build-essential libpng12-dev libjpeg62-dev rrdtool bison libxmu-dev autoconf automake libmysqlclient-dev libgif-dev libgif-dev cpputest libssl-dev unzip p7zip p7zip-full screen wget
===Debian 8===
apt install git libcurl4-openssl-dev libluabind-dev libfreetype6-dev libxml2-dev cmake build-essential libpng12-dev libjpeg62-turbo-dev rrdtool bison autoconf automake libmysqlclient-dev libgif-dev cpputest libssl-dev liblzma-dev unzip p7zip p7zip-full screen wget
===Debian 9 et 10===
apt install git libcurl4-openssl-dev libluabind-dev libfreetype6-dev libx11-dev libgl1-mesa-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev libogg-dev libvorbis-dev libxml2-dev cmake build-essential libpng-dev libjpeg62-turbo-dev rrdtool bison libxmu-dev autoconf automake default-libmysqlclient-dev libgif-dev cpputest libssl-dev liblzma-dev unzip p7zip p7zip-full screen wget libsquish-dev
===Installer Squish pour Jessie===
*[[https://clients.lirria.khaganat.net/tools/squish-1.11.7z|Squish]]
wget https://clients.lirria.khaganat.net/tools/squish-1.11.7z
7z x squish-1.11.7z
cd squish-1.11
Puis compiler:
make
make install
====Pour Windows :====
Installer dans l'ordre DirectX SDK puis Visual
*[[http://www.7-zip.org/|7-Zip]]
*[[http://www.microsoft.com/en-us/download/details.aspx?id=6812|Installer le DirectX SDK]]
*[[https://www.microsoft.com/en-us/download/details.aspx?id=48146|Installer le Visual 2015]]
*[[https://tortoisegit.org/|Tortoise Git]]
*[[https://cmake.org/download/|CMake]]
*[[https://www.qt.io/download-open-source/|Qt 5]]
Pour visual 2015, pensez à activer le module c++
====Téléchargement ryzom source code et data:====
A partir d'ici on va dans user compil
su compil
git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code.git
git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-ressources.git
Pour windows en plus :\\
Télécharger
*[[https://sourceforge.net/projects/ryzom/files/external_vc14.7z/download|External_vc14]]
+-- code
| |
| +-- nel
| |
| +-- ryzom
| |
| +-- ...
|
+-- external
=====Build Ryzom OpenShard serveur=====
====créer un fichier avec les variables pour linux====
Pour un script permament:
nano /home/compil/.bashrc
Pour un script à lancer à chaque session:
nano shard.sh
Variable à mettre dans votre script:
#!/bin/bash
export RYHOME=/home/compil/khanat-opennel-code/code
export RYZOM_PATH=/home/compil/khanat-opennel-code/code/ryzom
export PATH=$PATH:/home/compil/khanat-opennel-code/code/ryzom/tools/scripts/linux
export RYDATA=/home/compil/khanat-ressources
Pour lancer le script et exporter les variables dans le shell actuel :
./shard.sh
====Configuration des option pour build seulement nel & server (En static: si CMakeOptions)====
Pour linux :
mkdir $RYHOME/build && cd $RYHOME/build
Pour windows :
Créez un répertoire "build" dans le répertoire "code"
Ligne CMake :
cmake -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=OFF ..
Liste des options de cmake : [[fr:cmake_options|option]]
Attention, il faut que le serveur soit compilé, pour avoir les symboles de debug (voir [[fr:shard_debug]]) avec l'option: -DWITH_SYMBOLS=ON
Options :
Sans les outils : ( vous en avez besoin pour le shard, pour faire le visual_slot.tab et le patch)
-DWITH_RYZOM_TOOLS=OFF -DWITH_NEL_TOOLS=OFF
Pour Windows :
Lancer Cmake :
*Code source : C:/khanat-opennel-code/code
*Build les binaires : C:/khanat-opennel-code/code/build
*Configurer pour visual c++ 2015
*Configurer
*Changer les options
*Générer
===Build and install===
Pour linux :
make -jX (X= nombres de coeur +1, si ça plante n'utiliser que "make")
sudo make install
Pour Windows :
Lancer C:\khanat-opennel-code\code\build\RyzomCore.sln qui a été généré
en choisissant Visual C++ appuyez sur F7 pour compiler
=====Configurer serveur=====
**Éditer différents fichiers pour trouver la configuration du serveur :**
nano $RYZOM_PATH/server/frontend_service.cfg
La ligne à éditer dans **frontend_service.cfg** est:\\
FSListenHost = "your.server.ip.adress";\\
Pour nous c'est : \\
FSListenHost = "lirria.khaganat.net";\\
nano $RYZOM_PATH/server/sql.cfg
A éditer selon votre configuration:
DBHost = "127.0.0.1";
DBRingName = "ring_mini01";
Laisser en localhost. Créer un utilisateur "nel" qui a les droits sur sa base de donnée, et un utilisateur "ring", chacun avec son mot de passe. Remplir ''$RYZOM_PATH/server/sql.cfg'' avec ces informations.
=====Web-admin=====
Copier les sources du serveur web dans le dossier ''ryzomweb'' (le dossier sera crée automatiquement) :
cp -r $RYHOME/web ryzomweb
chmod -R a+w ryzomweb
====Configurer Apache2 Web Serveur====
nano /etc/apache2/sites-available/shard.conf
######################
# Khanat AMS #
######################
ServerName lirria.khaganat.net
ServerAdmin webmaster@localhost
DocumentRoot /home/compil/ryzomweb/public_php/
ErrorLog ${APACHE_LOG_DIR}/ams_error.log
CustomLog ${APACHE_LOG_DIR}/ams_access.log combined
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
DirectoryIndex index.php
AddType text/html .php .phps
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps
##########################
# Khanat serveur de jeu #
##########################
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
ServerName lirria.khaganat.net
ServerAdmin admin@localhost
DocumentRoot /home/compil/ryzomweb/public_php
ErrorLog ${APACHE_LOG_DIR}/shard_error.log
CustomLog ${APACHE_LOG_DIR}/shard_access.log combined
Activer shard.conf
a2ensite shard
Ouvrir le port 40916
nano /etc/apache2/ports.conf
Ajouter :
Listen 40916
Redémarrer le service Apache :
service apache2 restart
====Configurer Nginx Web Server====
######################
# Khanat AMS #
######################
server {
listen 80;
listen [::]:80;
server_name lirria.khaganat.net;
#Création des accès et des erreurs du logs dans /var/log/nginx
access_log /var/log/nginx/lirria.ams_access.log;
error_log /var/log/nginx/lirria.ams_error.log info;
#Dossier de ryzomweb
root /var/www/ryzomweb/web/public_php;
index index.php index.html ;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
location ~* .(?:png|html|ttf|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
# Optional: Don't log access to other assets
access_log off;
}
}
##########################
# Khanat serveur de jeu #
##########################
server {
listen 40916;
listen [::]:40916;
server_name lirria.khaganat.net;
#Création des accès et des erreurs du logs dans /var/log/nginx
access_log /var/log/nginx/lirria.shard_access.log;
error_log /var/log/nginx/lirria.shard_error.log info;
#Dossier de ryzomweb
root /var/www/ryzomweb/web/public_php;
index index.php index.html ;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
====Installer le web-admin====
Allez à : ''http://VOTRE_ADRESSE_IP/setup''
===MySQL Database===
Suivez les instructions.
Si vous voulez gérer votre base MySQL, allez à : ''http://VOTRE_ADRESSE_IP/phpmyadmin''
Pour vous aidez à la remplir :\\
''https://khaganat.net/wikhan/fr:shard_database''
Notes de travail :
Une page générale sur tous les web services : https://ryzomcore.atlassian.net/wiki/display/RC/Web+Services+Installer+Design+Doc
Pour installer les web services : https://ryzomcore.atlassian.net/wiki/display/RC/Configure+Linux+Web+Services
---
Pour installer AMS : https://ryzomcore.atlassian.net/wiki/display/RC/Setup+the+AMS
Documentation sur AMS : https://ryzomcore.atlassian.net/wiki/display/RC/Account+Management+System
Détails sur AMS : https://ryzomcore.atlassian.net/wiki/display/RC/AMS+Design+Info
Vidéos et explications de l'auteur de AMS : https://plus.google.com/116363537101759977044
---
Installation de l'API pour avoir des app : https://ryzomcore.atlassian.net/wiki/display/RC/Configuring+Ryzom+API
WIki sur l'API : http://dev.ryzom.com/projects/ryzom-api/wiki
=====Liens symboliques, binaire et scripts=====
Cette partie vous explique comment lancer votre shard avec la nouvelle organisation des data.
====Liens symboliques pour que le système voit les data====
ln -s $RYDATA/collisions $RYZOM_PATH/server/
ln -s $RYDATA/leveldesign $RYZOM_PATH/server/
ln -s $RYDATA/primitives $RYZOM_PATH/server/
ln -s $RYDATA/translation $RYZOM_PATH/server/
ln -s $RYDATA/continents $RYZOM_PATH/server/
ln -s $RYDATA/common $RYZOM_PATH/server/
ln -s $RYDATA/shard/su/dev_gm_names.xml $RYZOM_PATH/server/data_shard
ln -s $RYDATA/shard/su/invalid_entity_names.txt $RYZOM_PATH/server/data_shard
ln -s $RYDATA/shard/su/reserved_names.xml $RYZOM_PATH/server/data_shard
ln -s $RYDATA/shard/egs/game_event.txt $RYZOM_PATH/server/data_shard
ln -s $RYDATA/shard/egs/mission_queues.txt $RYZOM_PATH/server/data_shard
ln -s $RYDATA/shard/egs/named_items.txt $RYZOM_PATH/server/data_shard
====Recompiler les données des datasheets====
Vous pouvez aussi copié [[https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code/snippets/9|le script]] qui fabrique automatiquement le sheet_id.bin et visual_tab.bin et il place au bon endroit tous les fichiers dont à le client . c'est un script quand le shard et le client est au même endroit.
===Compiler sheet_id.bin===
cd $RYHOME/build/bin
./make_sheet_id -o$RYDATA/leveldesign/game_elem/sheet_id.bin $RYDATA/leveldesign/game_elem $RYDATA/leveldesign/game_element $RYDATA/leveldesign/world $RYDATA/leveldesign/ecosystems $RYDATA/sound
===Compiler visual_slot.tab===
Tout d'abord, vérifier que les chemins vers le répertoire contenant les datasheets (''leveldesign''), les primitives (''primitives'') et les fichiers communs au serveur et au client (''common'') sont bons dans le fichier de configuration :
cd $RYHOME/build/bin
cp sheets_packer $RYZOM_PATH/tools/sheets_packer/
cd $RYZOM_PATH/tools/sheets_packer
(Changez sheets_packer.cfg n'est plus utile pour la branche Lirria que vous avez pullé)
nano sheets_packer.cfg
État actuel de notre fichier sheets_packer.cfg :
/////////////////////////////////
/////////////////////////////////
/// SHEETS PACKER CONFIG FILE ///
/////////////////////////////////
/////////////////////////////////
DataPath = { "../../common/data_leveldesign", "../../common/data_common", "../../client/data", "../../../../../khanat-ressources/common", "../../../../../khanat-ressources/leveldesign", "../../../../../khanat-ressources/primitives" };
WorldSheet = "ryzom.world";
PrimitivesPath = "../../../../../khanat-ressources/primitives";
OutputDataPath = "../../client/data";
LigoPrimitiveClass = "world_editor_classes.xml";
Puis on peut lancer le sheets_packer, en restant bien dans le répertoire où on a ce fichier .cfg car les chemins sont relatifs :
$ $RYZOM_PATH/tools/sheets_packer/sheets_packer
Enfin, copier le visual_slot.tab à sa place
cp visual_slot.tab $RYZOM_PATH/common/data_common/visual_slot.tab
===Ajouter les langages manquants===
Ceci est un bidouillage pour ajouter certains fichiers de traduction étrangement demandés par IOS. Il faudrait trouver comment supprimer ces appels qui sont hardcodés dans : ''code/ryzom/server/src/input_output_service/string_manager.h'' lignes 54 à 67:
class CStringManager
{
public:
/// This is a list of available language.
enum TLanguages
{
work,
english,
german,
french,
russian,
spanish,
NB_LANGUAGES
};
for var in $RYDATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_de}; done
for var in $RYDATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_es}; done
for var in $RYDATA/translation/translated/*_wk.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_wk/_ru}; done
Si jamais vous n'avez pas non plus les traductions en français, il faut ajouter :
(Changez le français n'est plus utile pour la branche Lirria que vous avez pullé)
for var in $RYDATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_fr}; done
=====Démarrer the Shard=====
**Pour allumer le shard:**
shard start
**Pour naviguer et sortir de screen:**
ctrl+a+n ( ou ctrl+a+ le chiffre du service) permets de naviguer entre les services
Ctrl+a+d permets de sortir de screen
Ctrl+a+echap permets de remonter le log
Shard join permets de rejoindre un shard allumé
shard share permets de rejoindre un shard allumé à plusieurs
**Pour éteindre le shard:**
shard stop
====Installer le patch (optionnelle)====
L'installation du Serveur de Patchs est expliquée en détail sur une page dédiée : [[fr:Installation d'un serveur de patchs]]
====Verifier que tous marche sans clients====
http://votre.ip:40916/login/r2_login.php?cmd=login&login=sonlogin&password=mdp&clientApplication=Lirria
sonlogin= votre user
mdp= votre mots de passe
===== ANNEXE =====
==== Problème de compilation ====
=== undefined reference ===
Des librairies ne sont pas présente dans l'édition de lien (création du binaire avec toutes le dépendances)
* openIcuConverter
Erreur : /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libxml2.a(encoding.o): In function `openIcuConverter':
(.text+0xff7): undefined reference to `ucnv_open_57'
patch :
diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt
index 4e5d4bfb5..7f773d4ab 100644
--- a/code/CMakeLists.txt
+++ b/code/CMakeLists.txt
@@ -152,6 +152,20 @@ IF(WITH_STATIC)
IF(LIBLZMA_LIBRARIES)
SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${LIBLZMA_LIBRARIES})
ENDIF()
+ # under Linux, recent libxml2 versions are linked against libicuuc & libicudata
+ IF(WITH_STATIC_EXTERNAL)
+ find_library (LIBICUUC_LIBRARY NAMES icuuc)
+ IF(LIBICUUC_LIBRARY)
+ SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${LIBICUUC_LIBRARY})
+ ENDIF()
+ find_library (LIBICUDATA_LIBRARY NAMES icudata)
+ IF(LIBICUDATA_LIBRARY)
+ SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${LIBICUDATA_LIBRARY})
+ ENDIF()
+ ENDIF()
ENDIF()
ENDIF()
* libcrypto
Erreur: /usr/local/lib/libcurl.a(md5.c.o):(.data.rel.ro+0x0): undefined reference to `MD5_Init'
patch :
--- CMakeLists.txt-ref 2018-03-11 15:14:14.921459798 +0100
+++ CMakeLists.txt 2018-03-14 22:52:57.604317241 +0100
@@ -440,6 +451,14 @@
SET(CURL_LIBRARIES ${CURL_LIBRARIES} ${IDN_LIBRARY})
ENDIF()
+ # libcrypto
+ FIND_LIBRARY(LIBCRYPTO_LIBRARY NAMES libcryto crypto PATHS /usr/lib/x86_64-linux-gnu)
+ IF(LIBCRYPTO_LIBRARY)
+ MESSAGE("-- Found crypto: ${LIBCRYPTO_LIBRARY}")
+
+ SET(CURL_LIBRARIES ${CURL_LIBRARIES} ${LIBCRYPTO_LIBRARY})
+ ENDIF()
+
# CURL Macports version depends on libidn, libintl and libiconv too
IF(APPLE)
FIND_LIBRARY(INTL_LIBRARY intl)
@@ -457,6 +476,14 @@
ADD_SUBDIRECTORY(nel)
ENDIF()
+# libcrypto
+FIND_LIBRARY(LIBCRYPTO_LIBRARY NAMES libcryto crypto PATHS /usr/lib/x86_64-linux-gnu)
+IF(LIBCRYPTO_LIBRARY)
+ MESSAGE("-- Found crypto: ${LIBCRYPTO_LIBRARY}")
+ SET(CURL_LIBRARIES ${CURL_LIBRARIES} ${LIBCRYPTO_LIBRARY})
+ENDIF()
+
IF(WITH_RYZOM)
ADD_SUBDIRECTORY(ryzom)
ENDIF()
=== can not be used when making a shared object; recompile with -fPIC ===
Certaine librairie on était compilé sans l'option '-fPIC', cela implique que ces librairie ne peuvent pas être intégré en static dans les binaires opennel.
[Static a intérêt pour le client, qui évite de forte contrainte sur l'installation sur différent Linux]
* libluabind
Erreur : /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/6/../../../../lib/libluabind.a(class.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
Il faut compiler libluabind (et ne pas installer le package debian)
mkdir -p /opt/src/luabind
wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg.orig.tar.gz -O /opt/src/RUN luabind.tar.gz
wget -q http://http.debian.net/debian/pool/main/l/luabind/luabind_0.9.1+dfsg-11.debian.tar.xz -O /opt/src/luabind-debian.tar.xz
tar xvf /opt/src/luabind.tar.gz -C /opt/src/luabind --strip 1 || exit 2
tar xvf /opt/src/luabind-debian.tar.xz -C /opt/src/luabind || exit 2
cd /opt/src/luabind; for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done
cd /opt/src/luabind;export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS)" linkflags=" $(dpkg-buildflags --get LDFLAGS)"
cd /opt/src/luabind;export -p DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH); bjam -d2 release debug install link=static cflags="-fPIC $(dpkg-buildflags --get CFLAGS)" cxxflags="-fPIC $(dpkg-buildflags --get CXXFLAGS)" linkflags=" $(dpkg-buildflags --get LDFLAGS)"
* libogg
Erreur : /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/libogg.a(framing.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
Il faut compiler libogg & libvorbis(et ne pas installer le package debian)
# Build libogg
mkdir -p /opt/src/libogg
wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2.orig.tar.gz -O /opt/src/libogg.tar.gz
wget -q http://http.debian.net/debian/pool/main/libo/libogg/libogg_1.3.2-1.diff.gz -O /opt/src/libogg.diff.gz
tar xvf /opt/src/libogg.tar.gz -C /opt/src/libogg --strip 1 || exit 2
gunzip /opt/src/libogg.diff.gz
cd /opt/src/libogg ; patch -p1 < /opt/src/libogg.diff
mkdir -p /opt/src/libogg/build
cd /opt/src/libogg/build && ../configure --disable-maintainer-mode \
--host=$(dpkg-architecture -qDEB_HOST_GNU_TYPE) \
--build=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) \
--libdir=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH) \
--enable-static \
--prefix=/usr \
CPPFLAGS="-D_FORTIFY_SOURCE=2" \
CFLAGS="-Wformat=2 -g -fPIC" \
CXXFLAGS="-Wformat=2 -g -fPIC" \
LDFLAGS="-Wl,-z,now"
cd /opt/src/libogg/build && make
cd /opt/src/libogg/build && make install
# Build libvorbis
mkdir -p /opt/src/libvorbis
wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5.orig.tar.gz -O /opt/src/libvorbis.tar.gz
tar xvf /opt/src/libvorbis.tar.gz -C /opt/src/libvorbis --strip 1 || exit 2
wget -q http://security.debian.org/debian-security/pool/updates/main/libv/libvorbis/libvorbis_1.3.5-4+deb9u1.debian.tar.xz -O /opt/src/libvorbis.debian.tar.xz
tar xvf /opt/src/libvorbis.debian.tar.xz -C /opt/src/libvorbis || exit 2
cd /opt/src/libvorbis; for file in $(cat debian/patches/series); do patch -p1 < debian/patches/$file; done
cd /opt/src/libvorbis; ./configure --enable-static --with-pic
cd /opt/src/libvorbis; make
cd /opt/src/libvorbis; make install
{{tag>informatique serveur shard tutoriel client_rc_obsolete Obsolète}}