BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanneKontakt

Pastebin aus der Kommandozeile verwenden

Mit Hilfe von wgetpaste lassen sich Dateien von der Kommandozeile her auf einen Pastebin-Service hochladen. Im FreeBSD-Portsbaum findet man wgetpaste unter www/wgetpaste:

# cd /usr/ports/www/wgetpaste && make install clean

Alle verfügbaren Pastebin-Services können mit der -S Option angezeigt werden:

# wgetpaste -S
Services supported: (case sensitive):
Name:        | Url:
=============|=================
ca           | http://pastebin.ca/
codepad      | http://codepad.org/
dpaste       | http://dpaste.com/
poundpython  | http://paste.pound-python.org/
zlin         | http://zlin.dk/p/
*gists       | https://api.github.com/gists

Nun kann eine gewünschte Datei mit Hilfe von wgetpaste hochgeladen werden. Mit Hilfe der -s Option kann der zu verwendende Pastebin-Service angegeben werden:

# wgetpaste -s ca <hochzuladende Datei>
Your paste can be seen here: http://pastebin.ca/2148134

Anschliessend wird eine URL ausgegeben die auf die hochgeladene Datei zeigt. Alle Optionen von wgetpaste erhält man mit der -h Option.

Comments (1)  Permalink

pkgng-Pakete mit poudriere bauen

Mit Hilfe von poudriere lassen sich ähnlich wie bei Tinderbox Ports testen und Pakete erstellen. Im Gegensatz zu Tinderbox benötigt poudriere keine zusätzliche Software wie eine Datenbank usw. sondern verwendet nur Funktionen des Basissystems (z.B. ZFS und Jails). Im FreeBSD-Portsbaum findet man poudriere unter ports-mgmt/poudriere:

# cd /usr/ports/ports-mgmt/poudriere && make install clean

Für poudriere benötigt man einen zpool welcher in folgendem Beispiel den Namen tank hat:

# zpool list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
tank  19.9G  1.23G  18.6G     6%  1.00x  ONLINE  -

Nun kan die poudriere-Konfiguration angelegt werden. Dabei muss der Name des zpool's den man verwenden möchte und ein FTP-Server angegeben werden. Weiter wird noch der Ort angegeben wo sich die resolv.conf der Jails befindet:

# vi /usr/local/etc/poudriere.conf
ZPOOL=tank
FTPHOST=ftp.ch.freebsd.org
RESOLV_CONF="/usr/local/etc/poudriere.d/resolv.conf"

Anschliessend erstellt man die entsprechende resolv.conf:

# mkdir /usr/local/etc/poudriere.d/
# vi /usr/local/etc/poudriere.d/resolv.conf

Als nächstes muss eine Jail erstellt werden. Im folgenden Beispiel wird eine FreeBSD 8.2 Jail für amd64 erstellt welche den Namen 82amd64 erhält. Die entsprechenden Daten werden danach vom FTP-Server heruntergeladen:

# poudriere jail -c -v 8.2-RELEASE -a amd64 -j 82amd64

Als nächstes wird der Portsbaum erstellt welcher mit portsnap angelegt wird:

# poudriere ports -c

Standardmässig baut poudriere normale FreeBSD-Pakete. Möchte man Pakete für pkgng erstellen, wird dies in der make.conf für die entsprechende Jail eingetragen:

# echo "WITH_PKGNG=yes" > /usr/local/etc/poudriere.d/82amd64-make.conf

Nun werden alle Ports für die man Pakete bauen möchte in einer Datei eingetragen:

# echo "www/firefox" > ~/pkglist
# echo "mail/thunderbird" >> ~/pkglist

Anschliessend werden diese Ports gebaut:

# poudriere bulk -f ~/pkglist -j 82amd64

Die fertigen Pakete werden danach unter /usr/local/poudriere_data/packages und dem entsprechenden Jail-Namen in einer Verzeichnisstruktur angelegt welche mit den offiziellen FTP-Servern übereinstimmt, so dass man diese auf einem Web- oder FTP-Server freigeben kann und diese danach zum Beispiel mit pkg_add oder portmaster verwenden kann. Hat man pkgng-Pakete gebaut wird zugleich noch eine Repository-Datei erstellt, so dass diese die Verzeichnisstruktur auch als pkgng-Repository verwendet werden kann:

# cd /usr/local/poudriere_data/packages/82amd64-default
# ls -l repo.txz 
-rw-r--r--  1 root  wheel  1580 May  5 13:28 repo.txz

Poudriere enthält noch viele weitere Funktionalitäten und Möglichkeiten welche in der Manpage poudriere(8) beschrieben sind.

Comments (0)  Permalink

DNS-Zonendatei auf Fehler überprüfen

Mit Hilfe von validns lässt sich eine DNS-Zonendatei auf Fehler überprüfen. Im FreeBSD-Portbaum findet man validns unter dns/validns:

# cd /usr/ports/dns/validns && make install clean

Stellt validns in der Zonendatei einen Fehler fest, so wird eine entsprechende Fehlermeldung ausgegeben. Wird nichts angezeigt, hat validns keinen Fehler gefunden: 

# validns /etc/namedb/master/chruetertee.ch
chruetertee.ch-zone:17: invalid or unsupported rdtype ax
# validns /etc/namedb/master/chruetertee.li
#

Mehr Informationen zu validns findet man in der Manpage validns(1).

Comments (0)  Permalink

Partitionsinformationen graphisch anzeigen

Mit Hilfe von dfc lassen sich Informationen zu Partitionen graphisch darstellen. Im FreeBSD-Portbaum findet man dfc unter sysutils/dfc:

# cd /usr/ports/sysutils/dfc && make install clean

Führt man dfc aus, wird der benutzte und freie Speicherplatz graphisch dargestellt:

# dfc 
FILESYSTEM  (=) USED      FREE (-) %USED AVAILABLE     TOTAL MOUNTED ON 
/dev/da0s1a [========------------]   35%    559.5M    989.2M /
devfs       [====================]  100%        0B      1.0K /dev
/dev/da0s1d [=====---------------]   22%    689.0M    989.2M /tmp
/dev/da0s1f [================----]   77%      3.6G      2.8G /usr
/dev/da0s1e [=============-------]   61%    621.1M      1.9G /var

Mit der -i Option werden zusätzlich Informationen zu den Inodes angezeigt. Durch die -s Option wird das Total aller Partitionen angezeigt und die -o Optionen zeigt die Mount-Optionen der Partitionen an:

# dfc -i -s -o
FILESYSTEM  (=) USED      FREE (-) %USED AVAILABLE     TOTAL   #INODES AV.INODES MOUNTED ON MOUNT OPTIONS
/dev/da0s1a [========------------]   35%    559.5M    989.2M      141k        0k /          rw
devfs       [====================]  100%        0B      1.0K        0k        0k /dev       rw
/dev/da0s1d [=====---------------]   22%    689.0M    989.2M      141k        0k /tmp       rw,noexec
/dev/da0s1f [================----]   77%      3.6G      2.8G    35634k        0k /usr       rw
/dev/da0s1e [=============-------]   61%    621.1M      1.9G      282k        0k /var       rw,noexec,nosuid
SUM:        [============--------]   58%      5.4G      6.7G

Mehr Informationen zu dfc findet man in der Manpage dfc(1).

Comments (1)  Permalink

PDF Datei aus einer Textdatei generieren

Mit Hilfe von ascii2pdf kann eine PDF-Datei aus einer Textdatei generiert werden. Im FreeBSD-Portbaum findet man ascii2pdf unter textproc/ascii2pdf:

# cd /usr/ports/textproc/ascii2pdf && make install clean

Nun kann aus einer Textdatei ein PDF generiert werden:

# ascii2pdf textdatei
# ls -1 textdatei.pdf 
textdatei.pdf

Soll das PDF im Querformat erstellt werden, kann die -l Option verwendet werden. Mit der -p Option wird die gewünschte Zeichengrösse angegeben werden:

# ascii2pdf -l -p 14 textdatei

Mehr Informationen zu ascii2pdf erhält man mit der -h Option.

Comments (0)  Permalink

Verzeichnisse rekursiv löschen

Mit Hilfe der -p Option von mkdir(1) lassen sich Verzeichnisse rekursiv erstellen. Genau gleich können mit der -p Option von rmdir Verzeichnisse rekursiv gelöscht werden solange sich in einem der Verzeichnisse keine Dateien befinden:

# mkdir -p foo/bar/mitz
# touch foo/datei
# rmdir -p foo/bar/mitz
rmdir: foo: Directory not empty
# ls foo/
datei

Mehr Informationen zu rmdir findet man in der Manpage rmdir(1).

Comments (0)  Permalink

Zurückgewiesener Patch anwenden

Möchte man einen Patch auf eine Datei anwenden, dieser wird allerdings zurückgewiesen, da die Datei bereits Änderungen vor den eigentlich geänderten Zeilen besitzt welche mit dem Patch in Konflikt stehen, so kann mit wiggle versucht werden den Patch doch noch anzuwenden. Im FreeBSD-Portbaum findet man wiegle unter textproc/wiggle:

# cd /usr/ports/textproc/wiggle && make install clean

Im folgenden Beispiel schlägt ein Patch fehl, da Zeilen vor der eigentlichen Änderung in der zu patchenden Datei geändert wurden. Dabei wird automatisch eine .rej Datei angelegt, welche den Konflikt beinhaltet:

#  patch < test.patch
Hmm...  Looks like a unified diff to me..
Patching file datei using Plan A...
Hunk #1 failed at 2.
Hunk #2 failed at 4.
2 out of 2 hunks failed--saving rejects to datei.rej
done

Nun kann wiggle die zu patchende Datei und die .rej-Datei angegeben werden und das Ergebnis wird dabei auf der Standardausgabe ausgegeben. Im Gegensatz zu patch(1) versucht nun wiggle die Änderung wortweise an anzuwenden und so führt dies auch zum Erfolg obwohl Zeilen geändert wurden, welche auch in der Patchdatei aufgeführt sind:

# wiggle datei datei.rej

Ist das Ergebnis zufriedenstellend kann mit der --replace Option die Änderung in die Datei geschrieben werden.

# wiggle --replace datei datei.rej

Mehr Informationen zu wiggle findet man in der Manpage wiggle(1).

Comments (0)  Permalink

Bugzilla über die Kommandozeile anfragen

Mit Hilfe von pybugz lässt sich ein Bugzilla-Bugtracker von der Kommandozeile her abfragen und falls man Schreibrechte dafür hat, auch bearbeiten. Im FreeBSD-Portbaum findet man pybugz unter devel/pybugz:

# cd /usr/ports/devel/pybugz && make install clean

Mit der -b Option wird die URL der Bugzilla-Instanz abgegeben und hat man keinen Bugzilla-Benutzer kann mit --skip-auth das Anmelden an Bugzilla übersprungen werden. Mit dem Schlüsselwort search kann nun Bugzilla durchsucht werden. Im folgenden Beispiel wird der Mozilla-Bugzilla nach "freebsd" durchsucht:

# bugz -b https://bugzilla.mozilla.org --skip-auth search freebsd
 * Using https://bugzilla.mozilla.org 
 * Searching for 'freebsd' 
352822 nobody               apps since MOZILLA_1_8_BRANCH don't build anymore on FreeBSD
449373 nobody               firefox3 FreeBSD Alpha build fails -> nsTHashtable.h:368: warning: cast from increases req
455194 wtc                  socket.c hangs in "UDP Client/Server Test - IPv6/Ipv4" on FreeBSD 7.0
512076 wtc                  Review the nspr package in FreeBSD ports
527650 nobody               Add correct FreeBSD Support
529790 nobody               Support NSS on FreeBSD ia64
543241 nobody               FreeBSD NS_IsMainThread() isn't working (TLS broken?)
544377 nobody               Build fails on FreeBSD, with unknown platform, in ipc
645865 nobody               Firefox4 fails to start (exits before GUI launch) / FreeBSD/amd64
683879 nobody               xpcom: no support for FreeBSD ia64 ipc/chromium/src/build/build_config.h
729447 general              [firefox 10 FreeBSD ia64 regression] js/src/vm/RegExpObject-inl.h:380: error: 'ignoreCase'
729511 rjesup               Import SCTP library from FreeBSD
733042 nobody               [404] https://support.mozilla.org/1/firefox/10.0.2/GNU/kFreeBSD/en-US/firefox-help
 * 13 bug(s) found.

Möchte man sich einen Bugreport näher anschauen verwendet man das Schlüsselwort get und die Bugnummer:

# bugz -b https://bugzilla.mozilla.org --skip-auth get 729511
 * Using https://bugzilla.mozilla.org 
 * Getting bug 729511 ..
Title       : Import SCTP library from FreeBSD
Assignee    : rjesup
Reported    : 2012-02-22 06:57:00 -0800
Updated     : 2012-03-23 10:43:51 -0700
Status      : NEW
Severity    : normal
Priority    : --
Reporter    : rjesup
Product     : Core
Component   : Networking
Blocked     : 694808, 729512
Comments    : 9
Attachments : 4

[Attachment] [607459] [SCTP import patch (without SCTP userspace library source files)]
[Attachment] [608436] [build sctp within the Mozilla tree]
[Attachment] [608762] [build sctp within the Mozilla tree updated]
[Attachment] [608763] [import of userland libsctp from BSD, first cut]

[Comment #0] rjesup : 2012-02-22 06:57:30 -0800
---------------------------------------------------------------------------------------------------------------------
Import libsctp from the FreeBSD implementation (already broken out as a user library).
[...]

Auch lassen sich Attachements von Bugzilla mit dem Schlüsselwort attachement und der entsprechenden Nummer herunterladen:

# bugz -b https://bugzilla.mozilla.org --skip-auth attachment 607459
 * Using https://bugzilla.mozilla.org 
 * Getting attachment 607459
 * Saving attachment: "sctp_min.patch"

Mehr Informationen zu pybugz erhält man mit der -h Option.

Comments (0)  Permalink

Ports-README erstellen

Mit make readmes lässt sich zu jedem FreeBSD-Port eine HTML-Datei generieren welche Informationen zu dem Port beinhaltet und in einem Browser dargestellt werden kann. Erstellt man für den ganzen Portbaum die README Dateien, so kann dies eine ganze Weile dauern. Alternativ gibt es seit kurzem mkreadmes welches die Dateien in kürzerer Zeit generiert. Im FreeBSD-Portbaum findet man mkreadmes unter posts-mgmt/mkreadmes:

# cd /usr/ports/ports-mgmt/mkreadmes && make install clean

Führt man nun mkreadmes aus, werden die README-Dateien für den gesamten Portbaum unter /usr/ports erstellt:

# mkreadmes 
Making top-level README.html in /usr/ports (62 categories)
Making README.html for category accessibility (30 ports)
Making README.html for category arabic (10 ports)
Making README.html for category archivers (206 ports)
Making README.html for category astro (116 ports)
[...]
Making README.html for category x11-toolkits (306 ports)
Making README.html for category x11-wm (181 ports)

Soll die README nur für einen Port oder eine Kategorie erstellt werden so kann diese an mkreadmes angegeben werden:

# mkreadmes www/firefox
Making README.html for port www/firefox

Mehr Informationen zu mkreadmes findet man in der Manpage mkreadmes(1).

Comments (0)  Permalink

Alte Daten löschen

Möchte man eine Festplatte aufräumen, so lässt sich mit du(1) herausfinden wo wieviel Speicherplatz verbraucht wird. Es ist jedoch nicht gesagt, dass Verzeichnisse welche viel Platz benötigen auch immer gelöscht werden können. Mit Hilfe von agedu findet man heraus welche Verzeichnisse schon länger nicht mehr verwendet worden sind und wie viel Speicherplatz diese verbrauchen. Im FreeBSD-Portbaum findet man agedu unter sysutils/agedu:

# cd /usr/ports/sysutils/agedu && make install clean

Zuerst erstellt man einen Index über das Verzeichnis, welches aufgeräumt werden soll:

# agedu -s /usr/home/beat
Built pathname index, 1592357 entries, 133005950 bytes of index                                                                                                                                                                              
Faking directory atimes
Building index
Final index file size = 573847008 bytes

Danach kann abgefragt werden, welche Verzeichnisse schon länger nicht mehr verwendet worden sind und wieviel Speicherplatz diese benötigen. Im folgenden Beispiel werden alle Verzeichnisse angezeigt und den verbrauchten Speicherplatz in Kilobyte, welche innerhalb der letzten 12 Monate nicht benutzt wurden:

# agedu -t /usr/home/beat -a12m
12          /usr/home/beat/.subversion
6730802     /usr/home/beat/backup
2958        /usr/home/beat/bin
252         /usr/home/beat/chruetertee
2138        /usr/home/beat/dev
278         /usr/home/beat/firefox3-devel
8           /usr/home/beat/icedtea6
127428      /usr/home/beat/mod_pagespeed-0.9.11.5.full
2790        /usr/home/beat/vboxtindi

Ist der Index einmal erstellt können beliebig viele Abfragen gemacht werden. Wird der Index nicht mehr benötigt, da man genügend alte Daten gelöscht hat, kann dieser mit der -R Option wieder gelöscht werden:

# agedu -R

Mehr Informationen zu agedu findet man in der Manpage agedu(1).

Comments (1)  Permalink
Next1-10/507