Brew le package manager Osx

Sur une machine apple ce qui manque le plus c’est un package manager qui permet l’accès à wget ou nmap sans avoir a compiler soit meme. Il y a quelques pre-requis :

  • Command Line Tools for Xcode
  • XQuartz pour des applications X11
  • Java pour du Java

Installation

L’installation se fait via ruby en une ligne

ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

Mise a jour

Avec cette commande on met a jour la liste des paquets disponible.

brew update

Recherche

Comme apt-cache search on peut chercher directement dans la liste :

brew search nm
bsponmpi   cpanminus  net-snmp	 nmap	    openmeeg   openmpi
homebrew/science/fast-statistical-alignment

Version d’un paquet

Interroger la version en cours :

brew info wget
wget: stable 1.14, HEAD
http://www.gnu.org/software/wget/
/usr/local/Cellar/wget/1.14 (7 files, 676K) *
https://github.com/mxcl/homebrew/commits/master/Library/Formula/wget.rb
==> Options
--enable-debug
	Build with debug support
--enable-iri
	Enable iri support

Edition

Pour choisir soit même la version a installer comme l’url du développeur qui a changée mais qui n’est pas a jour dans brew.On peut tout a fait choisir sa propre version :

brew edit multitail
require 'formula'

class Multitail < Formula
  homepage 'http://www.vanheusden.com/multitail/download.html'
  url 'http://www.vanheusden.com/multitail/multitail-5.2.11.tgz'
  sha1 'b3e721c3fb02092b0cbe9cfc6c67d1bbed6800f4'

  def install
    ENV['DESTDIR'] = prefix
    system "make", "-f", "makefile.macosx", "multitail"

    bin.install "multitail"
    man1.install gzip("multitail.1")
    etc.install "multitail.conf"
  end
end

C'est uniquement les champs url et sha1 qui comptent, veillez à ce que vous répercutiez bien le bon hash d'intégrité avec le bon algorithme.

Installation

Et on termine par l'installation, avec le joie d'avoir brew qui prend en charge les dépendances à d'autres package :

brew install wget

Cli wizard : exemple de unattended en cli sur ldap

Etant entrain de bosser sur ldap je me suis vu confronté a la re configuration du paquet en changement le rootdn et la j’ai eu la flemme de chercher quels fichiers et quelles actions entraient en jeu.

J’ai donc creusé sur le wizard cli qui sort avec un dpkg-reconfigure et je suis tombé sur deb-conf bien sur uniquement pour Debian et ses forks.
Quel merveille !!! En route pour une reconfiguration automatique de slapd.

debconf-show slapd
root@hdr12:~# debconf-show slapd
  slapd/internal/generated_adminpw: (password omitted)
* slapd/password2: (password omitted)
  slapd/internal/adminpw: (password omitted)
* slapd/password1: (password omitted)
* slapd/allow_ldap_v2: false
  slapd/password_mismatch:
  slapd/invalid_config: true
* shared/organization: test.cyklodev.com
  slapd/upgrade_slapcat_failure:
* slapd/no_configuration: false
* slapd/move_old_database: true
  slapd/dump_database_destdir: /var/backups/slapd-VERSION
* slapd/purge_database: false
* slapd/domain: customer.auth
* slapd/backend: HDB
  slapd/dump_database: when needed

On y retrouve les pages du wizard obligatoires avec une * et on peut accéder a chacun des champs avec un

echo "get  slapd/backend" | debconf-communicate
0 HDB

On peut bien sur les modifier

echo "set  slapd/backend HDB" | debconf-communicate
0 value set

Il ne reste plus qu’a lancer la reconfiguration du paquet en specifiant le mode non interactif.

dpkg-reconfigure -f noninteractive slapd

Comme quoi la flemme c’est bien !

Centos en vm et sa couche IP

Apparement avec CentOS 6.2, la couche ip de l’interface habituelle eth0 ne se met pas en dhcp forcement.
Voila comment remédier la chose

vim /etc/sysconfig/network-scripts/ifcfg-eth0

Et on rajoute le protocole dhcp et le fait que l’interface demarre au boot.

ONBOOT="yes"
BOOTPROTO="dhcp"

Un reglage par defaut assez deroutant …

Caracteres ASCII

Des fois l’ASCII ca sauve la vie !
Imaginez que vous ayez à insérer des séparateurs dans des données contenant l’ensemble des caractères séparateurs, vous aller avoir soit à mettre un séparateur multi-caractères soit vous pouvez introduire un caractere ascii qui lui n’occupe qu’un caractère.

Ici on va prendre le ACK qui est utilisé dans les liaisons de données de type Half Duplex (Wikipedia Duplex  )

$ touch vide_1.tx
$ echo '' >vide_2.tx
$ echo -en "\006" >vide_3.tx
$ cat vide_1.tx
$ cat vide_2.tx

$ cat vide_3.tx
$ hexdump vide_1.tx
$ hexdump vide_2.tx
0000000 000a
0000001
$ hexdump vide_3.tx
0000000 0006
0000001

Et voila on a un séparateur qui n’occupe qu’un caractère et qui est un séparateur qui ne devrait pas être dans vos données.