11 octobre 2007

OpenVPN avec OpenBSD et Windows

OpenVPN est un logiciel libre qui, comme son nom l'indique, permet de créer des réseaux privés virtuels. Nous allons prendre pour exemple un serveur OpenVPN sous OpenBSD, et un client sous Microsoft Windows.


Partie serveur

Installation

Tout d'abord, installer le package OpenVPN. Avec OpenBSD 4.1:

pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.1/packages/i386/openvpn-2.0.6p0.tgz

OpenVPN utilise SSL pour sécuriser le réseau virtuel. Afin de garantir cette sécurité, SSL se base sur un système de clefs publiques (ou certificats d'identité) et de clefs privées.

Les clefs privées permettent de crypter les données et doivent rester protégées sur les postes concernés. Elles sont stockées dans des fichiers .key. Les clefs publiques permettent de décrypter ces données, et sont stockées dans des fichiers .crt. Elles doivent être présentes sur les postes qui reçoivent ces données.

Le certificat racine représente l'entité qui gère les autorisations d'accès au réseau (ici, notre serveur). Il est matérialisé par le fichier ca.crt.

Après avoir créé ce certificat, le serveur peut générer d'autres certificats qui lui permettront, ainsi qu'aux machines qui y seront autorisées, de se connecter au VPN.


Configuration pour la génération de clefs

Créer un répertoire /etc/openvpn/ en exécutant :

mkdir /etc/openvpn

Dans ce répertoire, nous allons faire une copie conforme des scripts présents dans la documentation:

cp -R /usr/local/share/examples/openvpn/easy-rsa/ /etc/openvpn/

Il faut éditer ensuite les caractéristiques des certificats à générer :

vi /etc/openvpn/easy-rsa/vars

Par exemple:
export KEY_COUNTRY=FR
export KEY_PROVINCE=07
export KEY_CITY="PRIVAS"
export KEY_ORG="OpenVPN-TEST"
export KEY_EMAIL="mon.email@mondomaine.fr"

Les clefs seront générées dans le répertoire /etc/openvpn/easy-rsa/keys/ . Se placer dans /etc/openvpn/easy-rsa/ et initialiser ce répertoire:

cd /etc/openvpn/easy-rsa/
. ./vars && ./clean-all


Générer le certificat racine:

./build-ca
Generating a 1024 bit RSA private key
............++++++
...........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [FR]:
State or Province Name (full name) [07]:
Locality Name (eg, city) [PRIVAS]:
Organization Name (eg, company) [OpenVPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:OpenVPN-CA
Email Address [
mon.email@mondomaine.fr]:

Le script va poser une série de questions. La seule à laquelle il faut obligatoirement donner une réponse est Common Name.


Génération de clefs

Pour générer la clef du serveur :

./build-key-server server

De la même manière que précédemment, le script va poser une série de questions. Répondre server à la question Common Name. Ensuite, répondre y aux deux questions Sign the certificate? [y/n] et 1 out of 1 certificate requests certified, commit? [y/n].

Il est ensuite possible de générer des clefs pour le (ou les) poste(s) client(s):

./build-key client1
./build-key client2
./build-key client3
...

Pour générer des clefs protégées par un mot de passe, utiliser le script build-key-pass au lieu de build-key.

Génération de paramètres Diffie Hellman (nécessaires à l'échange des clefs) :

./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................+...........................................
...................+.............+.................+.........
......................................


Configuration du serveur

OpenVPN se configure par l'intermédiaire du fichier /etc/openvpn/openvpn.conf :

vi /etc/openvpn/openvpn.conf

Le fichier de référence se trouve dans /usr/local/share/examples/openvpn/sample-config-files/server.conf. Voici un exemple de configuration:

# port sur lequel écoute le serveur
port 5550

# protocole utilisé (udp est plus approprié
# pour encapsuler du tcp)

proto udp

# périphérique à utiliser (ici, /dev/tun0)
dev tun0

# Certificat racine (à distribuer aux clients)
ca ca.crt

# Clef publique du serveur
cert server.crt

# Clef privée du serveur (à garder secrète)
key server.key

# Paramètres de Diffie Hellman
dh dh1024.pem

# Caractéristiques du réseau à mettre en place
server 172.16.0.0 255.255.255.0

# Fichier associant à chaque client qui se connecte
# une adresse IP
ifconfig-pool-persist ipp.txt

keepalive 10 120

# Activer la compression
comp-lz

# Exécuter avec l'utilisateur _openvpn
# et le groupe _openvpn

user _openvpn
group _openvpn

# Conserver les clefs et autres paramètres en
# mémoire (après les changements d'UID et de GID)

persist-key
persist-tun

# Niveau de détails du fichier journal
verb 5



Lancement du service au démarrage

Comme d'habitude sous OpenBSD, éditer le fichier /etc/rc.local et y ajouter:

if [ -x /usr/local/sbin/openvpn ]; then
  echo -n ' openvpn'
  /usr/local/sbin/openvpn --config /etc/openvpn/openvpn.conf --daemon > /dev/null 2>&1
fi


Fichier journal séparé

Par défaut, les messages de log d'OpenVPN sont publiés via syslog dans /var/log/messages. Pour qu'ils apparaissent dans un fichier séparé, ajouter les lignes suivantes dans /etc/syslog.conf :

!openvpn
*.* /var/log/openvpn.log

créer ensuite le nouveau fichier :
touch /var/log/openvpn.log


Protection avec pf

Packet Filter est le firewall d'OpenBSD. Voici un exemple de règles à ajouter à /etc/pf.conf pour ne laisser passer que les paquets qui concernent le protocole de partage réseau sous Windows (SMB) sur l'interface VPN du serveur :

# Définition de l'interface réseau correspondant au VPN
vpn_if="tun0"

[...]

# Bloquer tous les paquets entrants
block in on $vpn_if
# Laisser passer les paquets sortants
pass out on $vpn_if keep state

[...]

# Laisser passer les paquets entrants de type SMB
pass in on $vpn_if inet proto udp from any to ($vpn_if) port {netbios-ns, netbios-dgm}
pass in on $vpn_if inet proto tcp from any to ($vpn_if) port {netbios-ssn, microsoft-ds}


Partie client

Installation et configuration

Pour Windows, installer OpenVPN GUI. Ensuite, ouvrir son répertoire de configuration à partir du menu démarrer -> tous les programmes -> OpenVPN -> OpenVPN configuration file directory.

Copier dans ce répertoire le certificat racine ca.crt ainsi que les clefs générés précédemment pour le poste client, client1.crt et client1.key, à partir du serveur.

Sous windows, les fichiers de configuration OpenVPN sont munis de l'extension ovpn. En créer un dans ce même répertoire ; par exemple, privas.ovpn.

Le fichier de référence est C:\Program Files\OpenVPN\sample-config\client.ovpn. Voici un exemple de configuration:

; Mode (client ou serveur)
client

; Adresse IP du serveur OpenVPN
remote 209.85.135.147

; Port sur lequel écoute le serveur
port 5550

dev tun

; Activation de la compression
comp-lzo

; Certificat racine du serveur
ca ca.crt

; Certificat attribué au client
cert client1.crt

; Clef attribuée client
key client.key

Il ne reste plus qu'à cliquer droit sur l'icône d'OpenVPN puis cliquer sur Connect.



Désactiver un certificat sur le serveur

Dans certains cas, il peut être souhaitable d'annuler l'accès au VPN par le biais de clefs précédemment générées (vol d'un portable, ...). Pour ce faire, utiliser le script revoke-full:

cd /etc/openvpn/easy-rsa && . ./vars && ./revoke-full client1

Un fichier crl.pem est alors généré dans /etc/openvpn/easy-rsa/keys. Il contient la liste de certificats révoqués, et doit être accessible par l'utilisateur _openvpn (en effet, ce fichier est vérifié chaque fois qu'une connexion est faite). Pour cela, on peut déplacer le fichier vers /etc/openvpn :

mv /etc/openvpn/easy-rsa/keys/crl.pem /etc/openvpn/

puis faire un lien vers le répertoire où il a été généré:

ln -sf /etc/openvpn/crl.pem /etc/openvpn/easy-rsa/keys/

De cette manière, le fichier sera accessible par l'utilisateur _openvpn, et sera mis à jour lorsqu'on fera de nouveau appel à revoke-full.

Ajouter cette ligne dans /etc/openvpn/openvpn.conf :

crl-verify /etc/openvpn/crl.pem

afin qu'un contrôle soit effectué à chaque connexion au VPN. Redémarrer OpenVPN.



Conclusion

OpenVPN est un peu plus complexe à mettre en place qu'une solution comme Hamachi. Cependant, sa configuration de base reste relativement simple. Il est possible de l'utiliser en mode bridge. On peut s'y connecter via un proxy http. De plus, il ne dépend pas d'un serveur tiers, et est disponible sur un plus grand nombre de platformes.

Plus d'informations sur http://openvpn.net/howto.html#quick.

Libellés : , , ,


24 février 2007

Système: Installation d'un annuaire LDAP sous OpenBSD

LDAP est un protocole d'annuaire très répandu dont l'utilisation est très variée, du simple carnet d'adresse à un annuaire d'entreprise tel qu'Active Directory. Son implémentation la plus courante dans le monde libre est OpenLDAP.

OpenBSD est un système d'exploitation de type Unix dérivé de NetBSD, focalisé sur la sécurité. Il est connu pour être le berceau d'OpenSSH, implémentation libre du protocole crypté Secure Shell. Il intègre un firewall clair et efficace, pf, ainsi qu'un protocole permettant de répartir plusieurs serveurs sur une même adresse IP, CARP.


Installation du paquet OpenLDAP sous OpenBSD

Le serveur LDAP fourni avec OpenBSD sous forme de paquet binaire utilise un backend obsolète pour sa base de données (voir http://www.openldap.org/faq/data/cache/756.html). Il est donc préférable (mais pas indispensable) de le recompiler à partir des ports, ce qui donne l'occasion de mettre le nez dans ce système commun aux différents BSD.

L'arborescence des ports d'OpenBSD 4.0 se trouve ici. Elle consiste en un ensemble de répertoires permettant de compiler automatiquement des logiciels à partir de leurs sources. Voici comment procéder:

# installation du système de ports si ce n'est pas déjà fait
cd /usr/
tar xvzf ports.tar.gz

# installation d'OpenLDAP. On précise ici que l'on souhaite installer
# la version serveur avec avec SUBPACKAGE="-server", et que le
# paquet sera compilé avec les options nécessaires pour utiliser le
# backend bdb via
FLAVOR="bdb".
cd /usr/ports/databases/openldap
SUBPACKAGE="-server" FLAVOR="bdb" make install



Préparation du système

L'installation du serveur LDAP ne prépare pas le système à son utilisation, comme ce serait le cas par exemple avec une distribution linux classique. Il faut donc effectuer un certain nombre d'opérations:

# Préparation du répertoire où seront stockées les données
mkdir /var/openldap-data
chown -R _openldap:_openldap /var/openldap-data
chmod -R 700 /var/openldap-data


# Les fichiers d'informations sur le processus doivent être accessibles par
# le serveur qui sera lancé en tant qu'utilisateur _openldap
touch /var/run/slapd.args
chown _openldap:_openldap /var/run/slapd.args
touch /var/run/slapd.pid
chown _openldap:_openldap /var/run/slapd.pid



Configuration du serveur LDAP

La configuration du serveur se fait en éditant le fichier /etc/openldap/slapd.conf. En voici un exemple:

##
# slapd.conf
#

# Fichiers correspondant aux différents modèles d'objets stockés
# dans le répertoire LDAP
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema

# Fichiers d'informations sur le processus du service
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args

#################################
# Définitions concernant la base de données
#################################

# Type de base de données (indiquer ici ldbm si on n'a pas recompilé LDAP)
database bdb

# Suffixe (correspondant ici à crevette.fr)
suffix "dc=crevette,dc=fr"

# Compte administrateur (ici, root)
rootdn "cn=root,dc=crevette,dc=fr"

# Mot de passe de l'administrateur
# (généré à partir de l'outil /usr/local/sbin/slappasswd)
rootpw {SSHA}9W7n9BfscO/g+B+tCva/GeSCGirpIMup

# Répertoire où les données sont stockées physiquement
directory /var/openldap-data



Démarrage du service LDAP

Le démon correspondant au service LDAP est slapd. On peut le démarrer de la manière suivante, afin de s'assurer qu'il n'y a pas d'erreur dans la configuration:
/usr/local/libexec/slapd -f /etc/openldap/slapd.conf -u _openldap -g _openldap -d 256 &


Ajouter des entrées dans le répertoire LDAP

Il est possible d'ajouter des informations dans le répertoire LDAP à l'aide de fichiers de type ldif. En voici un exemple:

##
# test.ldif
#

# Tout d'abord, création de l'organisation "Crevette et Compagnie"
dn: dc=crevette, dc=fr
objectClass: top
objectClass: dcObject
objectClass: organization
dc:crevette
o: Crevette et Compagnie

# Création de l'unité organisationnelle "people" où sera stocké le carnet d'adresses
dn: ou=people, dc=crevette, dc=fr
objectClass: top
objectClass: organizationalUnit
ou: people

# Ajout d'une personne dans ce carnet d'adresse
dn: cn=Jeanine Dupont, ou=people, dc=crevette, dc=fr
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Jeanine Dupont
gn: Jeanine
sn: Dupont
mail: jeanine.dupont@crevette.fr
telephoneNumber: 01 45 87 97 02
mobile: 06 03 48 79 22


Pour ajouter ces informations à l'annuaire LDAP, exécuter la commande:
ldapadd -x -D 'cn=root,dc=crevette, dc=fr' -f test.ldif -W

Pour vérifier que l'opération s'est bien effectuée, lancer la commande:
ldapsearch -x -b 'dc=crevette, dc=fr' 'objectclass=*'

Il est à ce stade possible de se connecter au serveur LDAP avec un logiciel classique tel que Kontact ou Outlook.


Lancement d'LDAP lors du démarrage du système

Enfin, sous OpenBSD, il n'existe pas de système de niveaux d'exécution. Pour démarrer un service supplémentaire au démarrage, il faut donc éditer le script de démarrage /etc/rc.local et y ajouter les lignes suivantes:

if [ -x /usr/local/libexec/slapd ]; then
echo -n ' OpenLDAP'
touch /var/run/slapd.pid
chown _openldap:_openldap /var/run/slapd.pid
touch /var/run/slapd.args
chown _openldap:_openldap /var/run/slapd.args
/usr/local/libexec/slapd -u _openldap -g _openldap
fi


Références

http://www.bsdlife.org/viewtopic.php?pid=193
http://www.onlamp.com/pub/a/onlamp/2003/03/27/ldap_ab.html

Libellés : , ,


13 avril 2006

Unix: FreeBSD facile

On peut observer depuis quelques temps l'existence de deux variantes de FreeBSD: PC-BSD et DesktopBSD. Leur but est commun: rendre l'utilisation du système plus facile pour les néophytes.

Chacune possède une procédure d'installation graphique simple. Elles sont toutes deux basées sur l'environnement graphique KDE, un peu lourd mais mature et facile à appréhender, avec quelques outils graphiques supplémentaires (par exemple, pour monter et démonter les systèmes de fichiers). Leurs différences résident essentiellement dans la gestion des logiciels additionnels, une fois le système de base installé.

La première mouture, PC-BSD, est basée sur FreeBSD 6, avec en plus un système de mise à jour semblable à windows update, ainsi qu'un nouveau système pour l'installation des logiciels, PBI, similaire aux MSI de Windows. On y gagne beaucoup en simplicité, mais on y perd en flexibilité et en puissance. Le nombre de logiciels disponibles est relativement restreint par rapport à celui du système classique de FreeBSD, les ports, qui sont plus de 14000. On peut aussi regretter de ne pas pouvoir récupérer les packages sur internet directement à partir du système d'installation. Cependant la présence de certains paquets comme Flash ou le JDK est bien pratique, et il est toujours possible d'utiliser le système sous-jacent des ports.

DesktopBSD, plus sobre, est quant à lui basé sur FreeBSD 5. Il intègre une interface graphique qui permet de gérer les ports de FreeBSD pour installer de nouveaux logiciels. Cela le rend plus proche de la philosophie d'origine des BSD, et constitue une invitation conviviale à découvrir le système plus en profondeur. Il ne faut par contre pas avoir peur de mettre un peu les mains dans le cambouis pour certains cas spécifiques, comme par exemple l'installation du JDK ou l'utilisation d'un proxy. De plus, il n'existe pour l'instant pas de procédure de mise à jour du système de base, mis à part le traditionnel sysinstall ; et cette base est constituée d'une pré-version (FreeBSD 5.5-PRERELEASE) très stable ici néanmoins.

On a donc affaire à deux manières différentes d'atteindre des buts similaires. Alors, si vous êtes curieux, si les spywares à la sauce Windows vous agacent et si la jungle désorganisée des Linux vous laisse dubitatif, il peut être intéressant de tenter le coup. Des images de ces systèmes, utilisables avec VMWare Player, sont disponibles ici pour PC-BSD et ici pour DesktopBSD.

Libellés : , ,


21 janvier 2006

Unix: Combiner Pkgsrc et Debian GNU/Linux


1. Pourquoi


1.1. Debian GNU/Linux

Debian GNU/Linux est un système d'exploitation réputé, solide, stable, et facile à installer, sur lequel beaucoup d'autres distributions Linux sont basées. Cependant, Certains packages ne sont pas toujours disponibles, en particulier à cause d'une politique draconienne sur les licences des logiciels proposés.

Même si des contributions ou autres dépôts annexes existent, les packages ne sont pas toujours configurés comme on le souhaite; certaines fonctionnalités qui dépendent des options de compilation sont parfois désactivées.

1.2. Pkgsrc
Pkgsrc est le système de packages de NetBSD ; il permet leur compilation directement à partir des sources. Il comprend aussi un système de gestion de packages binaires, et s'appuie largement sur l'outil BSD Make.

Dans le même esprit que NetBSD qui supporte un maximum d'architectures, Pkgsrc supporte plusieurs systèmes d'exploitation, dont Debian (et par ailleurs SFU, une couche d'émulation POSIX pour Windows NT).

De plus, Pkgsrc est relativement propre, et installe tous ses logiciels dans un répertoire séparé du reste du système, /usr/pkg, ce qui permet d'éviter des mélanges peu souhaitables. Il permet dans une certaine mesure de personnaliser les options de compilation des paquets.

2. Comment


2.1. Installation de Debian

Ici nous considèrerons une installation minimale du système Debian Etch. Une fois l'installation effectuée, il faut s'assurer que les paquets de base nécessaires au fonctionnement de pkgsrc sont bien installés. En particulier,

libc6-dev, libncurses5-dev, groff, cvs

Il est fortement conseillé d'utiliser le serveur X fourni avec Debian, et par là même d'installer les paquets

x11-common, xserver-common, xbase-clients, libx11-dev, x-dev

ainsi que les polices et le serveur xfs, pour avoir un affichage correct

xfonts-100dpi, xfonts-100dpi-transcoded, xfonts-75dpi, xfonts-75dpi-transcoded, xfonts-base, xfonts-base-transcoded, xfonts-scalable, msttcorefonts, xfs

A ce jour, pkgsrc nécessite le compilateur gcc-2.95 ; il faut donc aussi installer ce paquet, et effectuer les opérations suivantes pour en faire le compilateur par défaut:

ln -sf /usr/bin/gcc-2.95 /usr/bin/gcc
ln -sf /usr/bin/cpp-2.95 /usr/bin/cpp
ln -sf /usr/bin/g++-2.95 /usr/bin/g++
ln -sf /usr/bin/gcov-2.95 /usr/bin/gcov

Il est aussi conseillé d'ajouter les répertoires de /usr/pkg dans le profil par défaut, par exemple en ajoutant

export PATH="${PATH}:/usr/pkg/bin:/usr/pkg/xorg/bin"
if [ `id -u` -eq 0 ]; then
export PATH="${PATH}:/usr/pkg/sbin"
fi
export MANPATH="${MANPATH}:/usr/pkg/man"


à /etc/profile.

2.2. Récupération et mise à jour de l'arborescence Pkgsrc

Deux types de branches sont disponibles pour Pkgsrc. La branche courante est mise à jour régulièrement et contient les paquets les plus récents. Des versions stabilisées sont publiées tous les trimestres.

Le plus souvent, on extrait le contenu de Pkgsrc dans /usr, de façon à obtenir un répertoire /usr/pkgsrc.
Pour mettre à jour Pkgsrc, il suffit alors de se placer dans /usr/pkgsrc pui d'y lancer la mise à jour via cvs, de la manière suivante:

cd /usr/pkgsrc && cvs update -dP

Il sera ultérieurement possible de connaître les paquets obsolètes installés en installant l'outil lintpkgsrc, puis en tapant

lintpkgsrc -i

2.3. Bootstrap et configuration
Avant l'utilisation de pkgsrc, il faut lancer le bootstrap comme ceci:

cd /usr/pkgsrc/bootstrap && ./bootstrap

Ceci permet d'installer le minimum d'outils nécessaires à son fonctionnement.

La configuration de pkgsrc se fait par l'intermédiaire de /usr/pkg/etc/mk.conf. On peut copier une version minimale de ce fichier générée par le bootstrap:

mkdir /usr/pkg/etc; cp /usr/pkgsrc/bootstrap/work/mk.conf.example /usr/pkg/etc/mk.conf

On peut l'éditer avec son éditeur préféré:

vi /usr/pkg/etc/mk.conf

afin de le personnaliser.

Si Vous avez choisi le serveur X de Debian, rajoutez la ligne suivante:

X11_TYPE=native

Il est possible de modifier les options de construction de paquets (pour l'utilisation de certaines librairies, comme par exemple gnome et pas kde) via la macro PKG_DEFAULT_OPTIONS. Les différentes options possibles sont listées dans /usr/pkgsrc/mk/defaults/options.description. Préfixer une option avec un '-' permet de la désactiver. Voici un exemple:

PKG_DEFAULT_OPTIONS=iptables dvdread -nas ogg xvid java alsa -arts -esound x11 gnome gtkspell gtk -ldap

On peut aussi indiquer quels types de licences sont acceptable pour les logiciel que l'on souhaite installer. Pour accepter tous types de licences, ajouter cette ligne:

_ACCEPTABLE=yes

Enfin, il est possible d'indiquer à partir de quel site on souhaite télécharger les sources. Ajouter ces lignes pour utiliser un site Français:

MASTER_SITE_OVERRIDE=ftp://ftp2.fr.netbsd.org/pub/NetBSD/packages/distfiles/
MASTER_SITE_BACKUP=ftp://ftp2.fr.netbsd.org/pub/NetBSD/packages/distfiles/
MASTER_SITE_LOCAL=ftp://ftp2.fr.netbsd.org/pub/NetBSD/packages/distfiles/LOCAL_P
ORTS/

2.4. Installation des packages

Pour fabriquer et installer un package, par exemple xfce4, placez-vous dans le répertoire correspondant dans pkgsrc puis lancez sa compilation comme ceci:

cd /usr/pkgsrc/meta-pkgs/xfce4 && bmake package

Il est à noter que 'bmake package' peut produire des erreurs lors du packaging. Il est possible d'installer un logiciel sans le packager avec 'bmake update'.

3. Conclusion

3.1. Avantanges
Pkgsrc peut être considéré comme un complément à Debian, si on souhaite utiliser des packages non disponibles dans la distribution de base, ou si on souhaite obtenir un fort niveau de personnalisation pour certains d'entre eux sans avoir à les recompiler à la main.

Dans la plupart des cas, des paquets de Pkgsrc-current sont mis à jour plus fréquemment que ceux de Debian.

3.2. Inconvénients

Souvent, Pkgsrc installe des librairies en double par rapport au système de base, ce qui équivaut à une perte de place et de mémoire. Ceci dit, cela lui permet de garantir une certaine cohérence par rapport à la variété de systèmes supportés.

De plus, Pkgsrc est principalement utilisé sous NetBSD, et donc moins testé sous Linux. Un certain nombre de paquets ne se compilent pas correctement, ce qui peut vite se révéler frustrant ; il est cependant possible de corriger l'arborescence de Pkgsrc à la main, si on connaît bien le fonctionnement des Makefiles.

4. Références

Libellés : , ,


This page is powered by Blogger. Isn't yours?