PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

crowd42 : Une astuce pour ajouter les dépôts PPA sur Debain

jeudi 30 mai 2013 à 21:50

À défaut d’avoir un AUR-like sur Debian GNU/Linux, voilà une petite astuce qui va vous permettre d’ajouter facilement les dépôts PPA d’Ubuntu.

wget http://blog.anantshri.info/content/uploads/2010/09/add-apt-repository.sh.txt
mv add-apt-repository.sh.txt /usr/sbin/add-apt-repository
chmod o+x /usr/sbin/add-apt-repository
chown root:root /usr/sbin/add-apt-repository

Vous pouvez maintenant ajouter le dépôt PPA que vous voulez, comme si vous utilisiez une Ubuntu :

add-apt-repository ppa:Nom du dépôt

Sympa non ? Juste un conseil, n’en abusez pas trop, au risque de casser votre système :)

source

Cet article Une astuce pour ajouter les dépôts PPA sur Debain est apparu en premier sur crowd42.

Gravatar de crowd42
Original post of crowd42.Votez pour ce billet sur Planet Libre.

®om : GIT : squasher des merges

jeudi 30 mai 2013 à 17:40

gitmerge

Supposons que je souhaite ajouter une fonctionnalité à un projet sur GIT.

Je prends la version actuelle de la branche master (A), puis ajoute sur ma branche topic les commits X et Y.

    X---Y  topic
   /
--A  master

Je propose la fonctionnalité upstream (par un git request-pull ou une pull request), qui met un peu de temps à être revue.

Pendant ce temps, la branche master a avancé, et malheureusement les modifications effectuées entrent en conflit avec mon travail sur topic.

    X---Y  topic
   /
--A---B---C  master

Une fois mon code revu et accepté, les mainteneurs vont alors me demander de résoudre les conflits avec la branche master avant de merger ma branche topic.

Si j’avais eu à prendre en compte les mises à jour de master avant d’avoir rendu public mon topic, j’aurais simplement rebasé mon travail par-dessus master. Mais là, impossible.

Je dois donc merger. Très bien. Je merge et je résous les conflits.

    X---Y---M  topic
   /       /
--A---B---C  master

Mais, alors que je n’ai pas encore rendu M public, je m’aperçois qu’il y a un nouveau commit D sur master, que je veux intégrer dans topic.

    X---Y---M  topic
   /       /
--A---B---C---D  master

La solution la plus évidente est de merger à nouveau.

    X---Y---M---N  topic
   /       /   /
--A---B---C---D  master

Mais je voudrais éviter un commit de merge inutile. Pour un seul, ce n’est pas très gênant, mais si on maintient une branche suffisamment longtemps avant qu’elle ne soit mergée, ces commits inutiles vont se multiplier.

Une solution serait de revenir à Y et de le merger avec D :

git checkout topic
git reset --hard Y
git merge master
    X---Y---M'  topic
   /         \\
--A---B---C---D  master

Mais dans ce cas, pour créer M', je vais devoir résoudre à nouveau les conflits que j’avais déjà résolu en créant M.

Comment éviter ce problème ?

rerere

Une solution est d’avoir activé rerere avant d’avoir résolu les conflits de M :

git config rerere.enabled true

Ainsi, lorsque je tenterai de merger à nouveau Y et D, les conflits entre Y et C seront automatiquement résolus de la même manière que précédemment.

Cependant, cette méthode a ses inconvénients.

Tout d’abord, il ne s’agit que d’un cache local de résolutions des conflits, stocké pendant une durée déterminée (par défaut à 60 jours pour les conflits résolus), ce qui est peu pratique si on clone son dépôt sur plusieurs machines (les conflits ne seront résolus automatiquement que sur certaines).

Ensuite, elle est inutilisable lorsqu’on souhaite squasher un merge conflictuel alors que rerere était désactivé lors de sa création.

Enfin, cette fonctionnalité est encore récente, et la fonction git rerere forget (pour permettre de résoudre autrement des conflits déjà résolus), a la fâcheuse tendance à segfaulter (un patch a été proposé).

Rebranchement

La solution que j’utilise est donc la suivante.

    X---Y---M---N  topic
   /       /   /
--A---B---C---D  master

Une fois obtenus les deux merges M et N, le principe est de remplacer le parent de N, qui était M, par Y, sans rien changer d’autre au contenu.

          -----
         /     \\
    X---Y---M   N' topic
   /       /   /
--A---B---C---D  master

Ainsi, M devient inatteignable, et c’est exactement le résultat souhaité :

    X---Y-------N' topic
   /           /
--A---B---C---D  master

Pour faire cela, il faut déplacer le HEAD (pointant vers topic) sur Y, faire croire à GIT qu’on est en phase de merge avec D en modifiant la référence MERGE_HEAD, puis commiter :

git checkout N
git reset --soft Y
git update-ref MERGE_HEAD D
git commit -eF <(git log ..N ^D --pretty='# %H%n%s%n%n%b')

Il n’y a plus qu’à éditer le message de commit de merge.

La fin de la ligne du git commit permet de concaténer l’historique des commits intermédiaires (a priori uniquement des merges) comme lors d’un squash avec git rebase (pour pouvoir conserver les messages de merges intermédiaires, contenant nontamment les conflits).

En utilisant les références plutôt que les numéros de commit, cela donne :

git checkout feature
git reset --soft HEAD~2
git update-ref MERGE_HEAD master
git commit -eF <(git log ..HEAD@{1} ^master --pretty='# %H%n%s%n%n%b')

Si vous avez plus simple, je suis preneur…

Merci aux membres de stackoverflow.

Gravatar de ®om
Original post of ®om.Votez pour ce billet sur Planet Libre.

crowd42 : Installer XFCE 4.10 sur Debian stable depuis les dépôts de Siduction

jeudi 30 mai 2013 à 16:41

4.10-4

Pour installer XFCE 4.10 sur une Debian GNU/Linux stable, on peut soit le compiler depuis les sources, soit ajouter le dépôt de la branche unstable avec le bon fichier preferences. Cependant, les plus malins opteront pour une solution beaucoup moins stressante : ajouter le dépôt met en place par l’équipe de Siduction.

Pour la petite histoire, Siduction est une distribution basée sur Debian Sid stabilisée, qui propose des paquets plus à jour comparé à Aptosid.

Pour ajouter le dépôt en question, éditez le fichier /etc/apt/sources.list avec votre éditeur favori, Vim par exemple :

su -c 'vim /etc/apt/sources.list'

Ajouter ensuite ceci :

deb http://packages.siduction.org/xfcenext siduction main
deb-src http://packages.siduction.org/xfcenext siduction main

Enfin, exécutez les commandes suivantes :

sudo apt-get update
sudo apt-get install siduction-archive-keyring
sudo apt-get install xfce4

Enjoy it :)

crédit image

Cet article Installer XFCE 4.10 sur Debian stable depuis les dépôts de Siduction est apparu en premier sur crowd42.

Gravatar de crowd42
Original post of crowd42.Votez pour ce billet sur Planet Libre.

Articles similaires

Noireaude : Joeffice – Une nouvelle suite bureautique légère, écrite en Java

jeudi 30 mai 2013 à 14:30

joeffice-logo-3811189221-3_avatarPlop les bovins, comme vous avez pu le constater on aime bien mettre en avant de nouveaux projets et de nouvelles applications dans le coin, même si dès fois ils ou elles peuvent paraître un brin biscornu(e)s. Joeffice est un nouveau projet intéressant qui vise à fournir une suite bureautique légère, à même de pouvoir être utilisée sur des machines anciennes ou aux ressources limitées. Ce qui est intéressant dans ce projet, c’est qu’il n’a pas pour but de balancer un énième fork de LibreOffice ou d’autres softs du même type, mais qu’il constitue vraiment une alternative à part entière, dont le seul mot d’ordre est « légèreté. Parmi les aspects qui le caractérisent, on notera tout d’abord qu’il est publié sous licence Apache2 et multiplateforme GNU/Linux, Windows, Mac.

On notera ensuite qu’il est écrit en Java et qu’il propose un mode de travail prenant en compte la navigation par onglets, vous permettant ainsi de passer rapidement d’un document à un autre. On notera enfin qu’il peut être agrémenté de divers plugins mais que pour le moment, le bel animal ne prend en compte qu’un nombre de formats limités (dont ceux de MS Windows). Cela dit leur nombre devrait très vite augmenter et cela peut se comprendre dans le sens où ce projet est encore naissant. Il a moins de deux mois d’existence et pour info, la version actuelle a été codée en 30 jours seulement, par une seule personne.

Si vous avez envie de voir à quoi ressemble Joeffice, je vous invite à regarder cette petite vidéo qui va vous montrer tout ça en images.

Vous pouvez trouver plus d’infos sur le site officiel et aussi voir quelques captures décran sur cette page. Joeffice ne devrait pas tarder à sortir en version Alpha mais si vous êtes impatients, vous pouvez déjà vous procurer une version de développement du bel animal en vous rendant sur cette page, ou le tester en ligne  (uniquement sur contribution 5€).

Je signale enfin à ceux qui chercheraient un projet dans lequel s’investir, que son développeur Anthony Goubard, cherche du monde pour l’aider. Alors si ça vous tente …

Amusez-vous bien.

Moo!

source

flattr this!

Gravatar de Noireaude
Original post of Noireaude.Votez pour ce billet sur Planet Libre.

Clément OUDOT : OpenLDAP et l'overlay "constraint" : augmentez la qualité des données de votre annuaire

jeudi 30 mai 2013 à 14:15

Enlarge your quality

Un annuaire LDAP n'est pas une base de données : les données d'un annuaire sont organisées de manière hiérarchique et respectent un schéma définissant les classes d'objet et attributs autorisés, en plus des syntaxes et règles de comparaison associées aux attributs.

Ces éléments permettent déjà d'assurer une certaine maîtrise de la qualité des données, par exemple :

Toutefois, ces vérifications peuvent s'avérer insuffisantes et autoriser des valeurs incohérentes dans l'annuaire LDAP.

Un manager exemplaire

Prenons l'exemple de l'attribut manager : il permet de définir le supérieur hiérarchique d'une personne. Sa définition technique est la suivante :

olcAttributeTypes: ( 0.9.2342.19200300.100.1.10 NAME 'manager' DESC 'RFC127
 4: DN of manager' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115
 .121.1.12 )

Comme les créateurs de LDAP font bien les choses, la syntaxe de cet attribut est un DN (1.3.6.1.4.1.1466.115.121.1.12), ce qui semble assez logique puisque l'on renseignera comme valeur le DN d'une autre entrée dans l'annuaire. Ainsi, impossible de définir la valeur suivante :

manager: Bill Gates

Par contre, cette valeur sera correcte :

manager: CN=Bill Gates,CN=users,DC=Microsoft,DC=com

Correcte syntaxiquement peut-être, mais fonctionnellement ?

En tant qu'utilisateurs émérites d'un annuaire LDAP, nous sommes en droit d'exiger plus de contrôle, par exemple :

Travaillons sous la contrainte

OpenLDAP possède un système de greffons nommé overlay. Chaque overlay permet l'activation d'une fonctionnalité, comme par exemple la gestion des groupes dynamiques (voir l'article dédié).

Pour notre problématique du jour, nous allons nous intéresser à l'overlay constraint. Cet overlay doit être compilé pour pouvoir être chargé, c'est le cas si vous utilisez les RPMs de LDAP Tool Box.

L'overlay constraint permet d'ajouter des contraintes sur les valeurs des attributs. Comme tout overlay, il n'agit que sur les opérations LDAP, et ne corrigera donc pas les données déjà enregistrées, cet overlay retournera par contre un message d'erreur si une opération LDAP modifie une valeur non compatible avec les règles déclarées (code d'erreur 19 - CONSTRAINT_VIOLATION).

Il existe cinq types de contraintes :

Le champ d'application de ces contraintes peut-être restreint à l'aide d'une recherche LDAP interne (clause restrict).

Les doigts dedans

Maintenant que les présentations sont faites, voyons comment implémenter nos contraintes.

La création de l'overlay doit se faire dans le backend cn=config. Vous pouvez utiliser la ligne de commande, un navigateur LDAP, ou (et je vous le conseille bien entendu), LinID OpenLDAP Manager.

En LDIF, cela donne par exemple :

dn: olcOverlay={3}constraint,olcDatabse={1}bdb,cn=config
objectClass: olcConfig
objectClass: olcConstraintConfig
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: {3}constraint

Reste à définir ensuite les contraintes en tant que telles, dans l'attribut olcConstraintAttribute.

Commençons par le plus simple : la valeur de l'attribut manager doit correspondre à une entrée existante de l'annuaire :

olcConstraintAttribute: manager uri ldap:///dc=example,dc=com?entrydn?sub?(objectClass=*)

Si on souhaite que cette entrée soit explicitement un utilisateur (présence dans la branche ou=users, et avec la classe inetOrgPerson) :

olcConstraintAttribute: manager uri ldap:///ou=users,dc=example,dc=com?entrydn?sub?(objectClass=inetOrgPerson)

Peut-être qu'en fait cette contrainte ne doit être appliquée que pour les entrées de la branche ou=users, dans ce cas :

olcConstraintAttribute: manager uri ldap:///ou=users,dc=example,dc=com?entrydn?sub?(objectClass=inetOrgPerson) restrict "ldap:///ou=users,dc=example,dc=com??sub?(objectClass=*)"

Je pense que vous avez saisi le concept.

Set épatant

Avant de terminer, voyons une règle un peu plus complexe : il faut que le manager de l'utilisateur appartienne au même service que lui. En considérant que le service d'un utilisateur est défini dans son attribut departmentNumber, on utilisera alors la règle suivante :

olcConstraintAttribute: manager set "this/departmentNumber & this/manager/departmentNumber" restrict "ldap:///ou=users,dc=example,dc=com??sub?(objectClass=*)"

On mesure ici la puissance des sets d'OpenLDAP, créés initialement pour définir des ACLs complexes, et très utiles ici pour la définition de contraintes.

À très bientôt pour de nouveaux articles sur les configurations avancées d'OpenLDAP !

Gravatar de Clément OUDOT
Original post of Clément OUDOT.Votez pour ce billet sur Planet Libre.