Two Debian tips

Astazi o sa va povestesc doua din scamatoriile care m-au ajutat sa convertesc la Debian de la distanta niste sisteme existente:


Intrebarea 1: ce te faci daca vrei sa refaci (sau sa duplici) lista de pachete a unui sistem Debian?

Raspuns: Mai intai

dpkg --get-selections > selections.save

iar mai tarziu


dpkg --set-selections 

Caveat1: dpkg nu povesteste decat de pachetele pe care le stie, asa ca pe sistemul final, este riscul sa ajunga mai multe decat se dorea. Asa ca 2...

dpkg-query --show --showformat='${Package}\n' > packages.orig
...
dpkg-query --show --showformat='${Package}\n' > packages.new
diff packages.orig packages.new | grep '^>' | cut -c3- | xargs dpkg --purge


Intrebarea 2: cum se rezolva in Debian vestita problema a placilor de retea care isi schimba ordinea la un upgrade de kernel?

Newbie note: interfetele ethN sunt botezate in functie de cum sunt incercate driverele de retea din kernel. E drept ca in ultima vreme s-au mai standardizat lucrurile, dar in continuare driverele built-in sunt incercate primele, iar modulele mai tarziu, intr-o ordine configurabila. Problema e evidenta atunci cand te gandesti ca nu iti muta nimeni firul de la mediaconvertor in cealalta placa, ca sa repari nazbatia.

Raspuns: Uluitor de simplu! Se trece in /etc/network/interfaces un descantec similar cu acesta:


auto lo
iface lo inet loopback

auto eth0 eth1
mapping eth0 eth1
        script /etc/network/get-mac-address.sh
        map 01:23:45:67:89:AB lan
        map AA:BB:CC:DD:EE:FF internet

iface internet inet static
        address 123.45.67.89
        netmask 255.255.255.128
        gateway 123.45.67.1

iface lan inet static
        address 172.24.60.254
        netmask 255.255.255.0

Evident se adapteaza, pe ici, pe colo, prin partile esentiale. Minunatul get-mac-address.sh arata cam asa:


#!/bin/sh
set -e
export LANG=C

iface="$1"
mac=$(/sbin/ifconfig "$iface" |\
      sed -n -e '/^.*HWaddr \([:[:xdigit:]]*\).*/{s//\1/;y/ABCDEF/abcdef/;p;q;}'\
     )
which=""

while read testmac scheme; do
        if [ "$which" ]; then continue; fi
        if [ "$mac" = "$(echo "$testmac" | sed -e 'y/ABCDEF/abcdef/')" ]
          then which="$scheme"
        fi
done

if [ "$which" ]; then echo $which; exit 0; fi
exit 1

A nu se uita sa se aseze in calea corecta si sa fie executabil. Daca blogul meu formateaza aiurea textul, acest exemplu se poate gasi in documentatia pachetului ifupdown3 (localizata, evident, in /usr/share/doc/ifupdown).


Note explicative:

  1. Cuvantul e in latina si se pronunta ca atare :)
  2. Tehnica inspirata din Debian System: Concepts and Techniques de Martin F. Krafft aka. madduck, o carte fenomenala despre Debian si Linux.
  3. Mentinut de actualul DPL, Anthony Towns

3 Responses to “Two Debian tips”

  1. Bogdan Calugaru Says:

    Buna seara!
    Am si eu o rugaminte: am trecut la fiberlink si ip-ul este dinamic. La reinstalare mi-a spus ca a configurat reteaua, dar ca trebuie sa setez manual o cale, sau cam asa ceva…
    Cum fac sa am internet si pe Debian? Unde bag user-ul si parola de la rds ca sa porneasca automat netul la deschiderea calculatorului?
    Va multumesc!

  2. petre Says:

    Cred ca e vorba de o legatura pppoe, caz in care va trebuie programul pppoeconfig (aflat in pachetul cu acelasi nume). O sa va intrebe programul respectiv toate informatiile necesare (mie unul mi-a fost suficient).

  3. Bogdan Calugaru Says:

    Buna ziua!
    Va multumesc! Ma puteti ajuta sa-l fac si sa ruleze automat la deschiderea calculatorului?
    Ca sa ma intrebe trebuie sa tastez mereu pppoeconfig in consola. In plus, Etch nu-l instaleaza default si a durat un pic pana am inteles de ce primeam mesajul de eroare cand tastam pppoeconfig ca root!