Zunächst verbindet er sich fröhlich, holt sich (laut Log) ein DHCP Lease und schreibt dann aber nach ein paar Sekunden ins Log:
dhcpcd[12948]: dhcpcd not running
dhcpcd[12954]: sending signal ARLM to pid 12864
dhcpcd[12954]: waiting for pid 12864 to exit
dhcpcd[12864]: received signal ALRM from PID 12954, releasing
dhcpcd[12864]: eth0: removing interface
dhcpcd[12864]: eth0: deleting address 2001:.....
Nach etwas googlen stellt sich raus, das es am Zusammenspiel zwischen dhcpcd und wicd hängt [1].
Der dhcpcd verschwindet nämlich in der Standardeinstellung in den Hintergrund, sobald er eine IP-Adresse irgendeines Protokolls erhalten hat, in dem Fall IPv6:
dhcpcd[12721]: eth0: soliciting a DHCP lease
dhcpcd[12721]: eth0: Router Advertisement from fe80::...
dhcpcd[12721]: eth0: adding address 2001:..../64
dhcpcd[12721]: eth0: adding route to 2001:..../64
dhcpcd[12721]: eth0: adding default route via fe80::...
dhcpcd[12721]: eth0: requesting DHCPv6 information
dhcpcd[12721]: forked to background, child pid 12864
Der wicd schaut aber, wenn der dhcpcd sich verabschiedet, ob eine IPv4-Adresse konfiguriert wurde, was wegen des noch laufenden DHCP Handshakes noch nicht der Fall ist. Daher wird gleich wieder disconnected.
In die /etc/dhcpcd.conf die Zeile
waitip 4
hinzufügen. Das veranlasst den dhcpcd immer auf eine IPv4-Adresse zu warten, bevor er sich forked.
Um das Problem ohne Neuinstallation zu lösen, gibt es Linux-Tool namens chntpw [1]. Das liegt eingen Linux LiveCDs bereits bei, auf anderen LiveCDs reicht ein Download des Executables per Netzwerk, da es kaum Bibliotheksabhängigkeiten hat.
Nach meinen Recherchen und Versuchen gibt es jedenfalls folgende Erkenntnisse:
Hack its
Ein Hackit besteht aus einer Datei, die es zu knacken gilt. Sie besteht aus mehreren Leveln und hat am Ende einen Hinweis und einen Link zu einer Hall of Fame.
Es bedarf an manchen Stellen nur scharfen Hinsehens, machmal aber auch Programmierkenntnisse. Ist also definitiv für Nerds geeignet.
Warnung: ehrgeizige Rätselfans sollten sicherstellen, grade nix wichtiges auf der TODO-Liste stehen zu haben, denn so ein Hackit kann viele Stunden verbrauchen. Suchtgefahr! Also sagt nich, ich hätte euch nicht gewarnt.
Zu den Hackits:
Download: hackit1.zip
Level: mehr als 10
Einträge in Hall of Fame: 6
Download: hackit2.zip
Level: ungefähr 10 Level
Einträge in Hall of Fame: 3
Falls ihr hier Kommentieren wollt, bitte nicht spoilern. Fragen kann man auch per Mail an helpmehackit [at] friiks.de loswerden.
Viel Spaß beim Knobeln.
Since we used an antique version of gitosis on our repository server I used the opportunity to migrate to the new version. So I wrote an live ebuild [1].
A few steps are needed after installation:
There are enough tutorials out there how to setup gitweb, so I only point out some specifics of our setup.
The VirtualHost config looks something like this:
ServerName git.fem.tu-ilmenau.de ServerAlias git* DocumentRoot /usr/share/gitweb <Directory /usr/share/gitweb> Allow from all AllowOverride all Order allow,deny Options ExecCGI <Files gitweb.cgi> SetHandler cgi-script </Files> </Directory> AliasMatch ^(/.*?\.git)(/.*)?$ /var/lib/gitolite/repositories$1$2 <Directory /var/lib/gitolite/repositories> Allow from all </Directory> SetEnv GITWEB_CONFIG /etc/git/gitweb_config.perl RewriteEngine on # redirect userdir listing to gitweb search RewriteRule ^/?(~[^/]+)/?$ /?s=$1 [R] # rewrite all other paths that aren't git repo internals to gitweb RewriteRule ^/$ /gitweb.cgi [PT] RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /gitweb.cgi%{REQUEST_URI} [L,PT]
To make this work, you have to add some gitolite specific configuration to the gitweb config file:
read_config_file("/etc/git/gitweb-gitolite.conf");
This works for git versions >= 1.7.5. For older version just prepend the contents of the gitweb-gitolite.conf to gitweb config.
Note: Make sure the user running the webserver (gentoo: apache) is member of the group git, otherwise gitweb won't be able to browse repositories.
If you have got more than one machine for developing and don't want to share your ssh key between them, you would need to add multiple ssh keys.
With the multikey feature [3] of gitolite you can add as many ssh keys as you want for a username without changing gitolite configuration.
[1] http://subversion.fem.tu-ilmenau.de/repository/fem-overlay/trunk/dev-vcs/gitolite/
[2] http://sitaramc.github.com/gitolite/g3/
[3] http://sitaramc.github.com/gitolite/oldmultikeys.html
Sehr zu empfehlen sind dabei die USE-Flags consolekit und policykit, da man mit den beiden Diensten ohne weitere Verrenkungen als normaler User den Rechner in Suspend schicken kann oder angesteckte USB-Sticks mounten kann. Als Window manager nutze ich slim, ein Programm genau nach meinem Geschmack: kein Spielkram, klein, schnell und nur ein Configfile.
Slim selber hat kein Screenlock, Xfce4 bringt kein eigenes Programm mit, sondern unterstützt xscreensaver, gnome-screensaver, slock oder xlock (siehe /usr/bin/xflock4). Die haben aber alle eigene GUIs zum locken. Da mir der Loginscreen von slim im Gentoo Theme so gut gefällt, hab ich nochmal geschaut und slimlock gefunden. Das liest die slim.conf und lockt den Screen im passenden Slimtheme. *yeah*
Den Code gibts bei Github, ebuild im Bugtracker.
]]>
Erzeugen eines CSR für netqmail-SMTP:openssl x509 -text -in certificate.crt
openssl req -new -nodes -out req.pem -config /var/qmail/control/servercert.cnf -keyout /var/qmail/control/servercert.pem.new
Nach Zertifikatserstellung:
cat cert.pem >> /var/qmail/control/servercert.pem.new
mv /var/qmail/control/servercert.pem.new /var/qmail/control/servercert.pem
Verifizieren des Zertifikats eines SMTP-Servers (Beispiel unter Gentoo, explizites TLS):
openssl s_client -CApath /etc/ssl/certs -starttls smtp -crlf -connect mein.stmpserver.de:25
Und schon kann man SMTP mit TLS ohne Warnungen benutzen.
]]>
Also hab ich das gerade eben mal fix angegangen.
Zunächst das Auflösungsproblem:
Das häufiger im Netz vorgeschlagene folgende Vorgehen führte zwar zu einem Bootvorgang in voller Auflösung aber dafür hat der X-Server beim Start gemeckert, dass irgendein Puffer im nividia-Treiber zu klein oder voll wäre oder sowas. Naja, liegt wahrscheinlich an meinem dual head setup:
Removing the # from the GRUB_GFXMODE command in /etc/default/grub + Änderung auf ordentliche Auflösung (~Zeile 13)
Adding set gfxpayload=keep after the set gfxmode=${GRUB_GFXMODE} to the /etc/grub.d/00_Header (~Zeile 104)
Then sudo update-grub gives a flawless graphical boot.
Besser funktionierte ein hinzufügen von "vga=792" zu der Zeile GRUB_CMDLINE_LINUX="" in der /etc/default/grub mit anschließendem sudo update-grub. Dies führt zu einer Auflösung von 1024x786 bei vollen Farben. Die Nummern für andere Grafikmodi gibts z.B. hier: http://www.my-guides.net/en/content/view/125/26/1/12/#plymouth
Auch nach dem Boot gibbet keinen Stress.
Hässlich war der lila boot screen aber immer noch, also noch ein anderes Plymouth Theme installiert:
Auserkoren habe ich das MIB-Ubuntu-Plymouth-theme, da sich Hintergrundbild einfach ändern lassen und es aufgrund der Ursprünge bei Mandriva zu hoffen ließ, dass die Eingabe von Passwörtern während des Bootvorgangs gescheit unterstützt wird.
Installiert sich folgendermaßen:
sudo cp -R MIB-Ubuntu/ /lib/plymouth/themes/
sudo update-alternatives --install /lib/plymouth/themes/default.plymouth default.plymouth /lib/plymouth/themes/MIB-Ubuntu/MIB-Ubuntu.plymouth 100
sudo update-alternatives --config default.plymouth and chose MIB-Ubuntu from list
sudo update-initramfs -u
]]>
Emerge brach ab mit:
config.status: executing default commands
make -j1
bison -y -d ./parse.y
conflicts: 1 shift/reduce
__file__: <__file__>
...
make: *** [y.tab.c] Broken pipe
Abhilfe schafft ein einfaches Neubauen von sys-devel/bison. Was da genau kaputt war, weiß ich nicht, geht auf jeden Fall wieder.
]]>
Nachdem ich gestern auf die stabile Version von Opera 10 umgestiegen bin hab ich mich jetzt doch noch mal hingesetzt um dem Flash-Problem auf den Grund zu gehen.
Die Symptome waren, dass einfache Flashanimationen öfter mal ohne Probleme liefen aber der Großteil nicht angezeigt wurde. Ton funktioniert jedoch meistens. Insbesondere Flashvideos, z.B. auf Youtube waren praktisch nie zu sehen.
Ohne jetzt weiter drumrumzureden die Lösung des Problems:
In den Plugin-Optionen tauchten zwei Flash-Plugins auf. Eines im Mozilla Plugin Verzeichnis mit Namen "flashplugin-alternative.so" und eines in /usr/lib/flashplugin-installer/ namens libflashplayer.so. Beide weisen sich als Shockwave Flash 10.0 r32 aus.
Zweiteres wirkt etwas "offizieller" also mal das Mozilla Plugin Verzeichnis aus den Suchpfaden entfernt und siehe da Flash läuft ohne Probleme. Da ich die anderen Plugins in dem Verzeichnis eigentlich eh nicht brauche (sowas wie quicktime oder divx-player) lass ich das auch erstmal so und überleg mir gegebenenfalls 'ne andere Lösung, wenn diese Notwendig werden sollte.
]]>Quellen:
[1] http://zweithirn.friiks.de/archives/148-Unprivilegierte-Prozesse-auf-privilegierten-Ports.html
[2] http://subversion/repository/fem-overlay/trunk/sys-kernel/xen-sources/files/accessfs-2.6.30-0.22.patch
Leider hatte ich keine Gentoo Boot-CD am Start, so dass ich auf ein Knoppix 5.1 zugegriffen habe, was für eine Gentoo-Installation ja egal sein sollte.
Sollte.
Die zwei Festplatten im Rechner sollten als Software-RAID 1 konfiguriert werden. Also "Linux raid autodetect" Partitionen angelegt (partition type FD) und mit mdadm die Raiddevices erstellt und damit den Raidsuperblock geschrieben.
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hda1 /dev/hdb1
Das ganze formatiert, eingehangen und mit nem Gentoo bestückt.
Nachdem alle wichtige Pakete emerget, der Kernel gebacken und der Grub konfiguriert und in den MBR geschrieben wurde, stand neustarten an.
So weit so gut, jedoch erklärte der Kernel panisch, er könne sein Rootdevice nicht finden. Weiter oben im Log sah mal das md-Subsystem hochfahren, ohne jedoch für den Betrieb im RAID konfigurierte Geräte zu finden.
md: raid1 personality registered for level 1
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
...
md: unknown device "md0" or unknown block device (9,0)
VFS: Kernel panic (something about root= parameter not set right).
Es hat eine Weile gedauert, bis ich dahinterkam, woran es lag.
Für den RAID-Superblock gibt es 2 sehr unterschiedliche Formate (metadata format), Version "version-0.90" und "version-1". Genaue Details und Unterschiede findet man in einem Kernerlwiki [1].
Wenn "md" in den Kernel einkompiliert wurde (nicht als Modul!), ist er in der Lage, RAID-Devices automatisch zu erkennen und zusammenzusetzen. Das geht aber nur mit Metadata-Version 0.90. Für die andere Version muss ein Userspace-Programm aufgerufen werden. Um dies vor dem Einhängen der Rootpartiton zu erledigen (um davon booten zu können), bräuchte man dazu eine initiale Ramdisk (initrd), was unter Gentoo wiederum relativ unüblich ist. [2]
Da Knoppix ein Debianderivat ist, gehört dort eine initrd natürlich dazu. Daher erstellt das mdadm unter Knoppix standardmäßig RAIDs mit Version-1-Superblöcken, unter Gentoo jedoch mit Version 0.90 als Standardwert, wie in der Manpage angegeben.
Deswegen war der Kernel ohne initrd auch nicht in der Lage, die Devices zusammenzusetzen.
Neuerstellen des RAIDs mit Metadata-Version 0.90 sorgte für Abhilfe.
Unter Knoppix/Debian:
mdadm --create /dev/md0 --metadata=0.90 --level=1 --raid-devices=2 /dev/hda1 /dev/hdb1
Quellen:
[1] http://linux-raid.osdl.org/index.php/RAID_superblock_formats
[2] http://bugzilla.kernel.org/show_bug.cgi?id=7208#c3
Nach einem PHP-Update funktionierte plötzlich das MultiViews-Feature [1] nicht mehr, mit dem Websvn kürzere und lesbarere URLs realisiert.
[error] [client x.x.x.x] Negotiation: discovered file(s) matching request: /var/www/localhost/htdocs/websvn/wsvn (None could be negotiated).
Im Bugtracker hatte bereits jemand das Problem gemeldet [2]. Ursache ist ein Update der mod_php5.conf für das Apachemodul. Dort wurde die Einbindung von PHP auf die vom Hersteller empfohlene Weise umgestellt [3]. Dabei wird auf SetHandler statt AddType gesetzt:
# Set it to handle the files
<FilesMatch "\.ph(p5?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
Um PHP mit MultiViews wieder zu aktivieren, reicht ein
AddType application/x-httpd-php .php
in der entsprechenden Vhost-Konfiguration oder in einer .htaccess.
Quellen:
[1] http://httpd.apache.org/docs/2.2/content-negotiation.html
[2] http://bugs.gentoo.org/show_bug.cgi?id=256941
[3] http://www.php.net/manual/en/install.unix.apache2.php Example #1 Installation Instructions - Schritt 15
Nach einer Weile googlen und ausführliches FAQ [2] lesen, hab ich nun eine stabile Konfiguration, in der alle Tasten zumindest zwischen Client und Server funktionieren.
Meine ~/.x11vncrc:
rfbauth /home/pegro/.vnc/passwd
display :0
forever
bg
skip_lockkeys
nomodtweak
rfbauth kümmert sich um die Authentifizierung
forever lässt den Dienst weiterlaufen, wenn sich der Client abmeldet
bg schickt den Dienst in den Hintergrund (starten des Daemon durch "x11vnc" ohne Parameter)
skip_lockkeys ignoriert alle einrastenden Tasten (Capslock, Scrolllock, ...) verhindert auch nerviges Einrasten der Alt-Taste nach einem Fensterwechsel mit Alt+Tab
nomodtweak schaltet einen Mechanismus ab, der bei unterschiedlichen Tastaturlayouts hilft, z.B. ein fehlendes AltGr auf der Tastatur zu emulieren
Den letztgenannten Mechanismus hab ich deaktiviert, da die meisten VNC-Clients, die ich getestet habe, dieses Verhalten scheinbar selber übernehmen und es dadurch zu komischen Effekten kam.
Als brauchbar haben sich folgende Clients erwiesen:
Mac OS X: RealVNC Enterprise Edition Viewer
Linux: KRDC, RealVNC Viewer, ...
Windows: RealVNC Viewer
Quellen:
[1] http://www.karlrunge.com/x11vnc
[2] http://www.karlrunge.com/x11vnc/faq.html#faq-altgr
Im Bugtracker gab es passenderweise einen Bug [1] dazu, wobei die Installation und Ausführung von dev-utils/lafilefixer als Problemlösung beschrieben wird:
lafilefixer --justfixit
Leider steht sowas mal wieder nur nach einigem Suchen tief im Bugtracker und nicht als Notice direkt beim Update. Ich hoffe, dass bessert sich noch.
Quellen:
[1] http://bugs.gentoo.org/show_bug.cgi?id=275597
Ich hab dazu mal ein Ebuild [2] gebastelt.
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header$
EAPI="2"
WX_GTK_VER="2.8"
inherit wxwidgets eutils
KEYWORDS="~alpha ~amd64 ~ppc ~sparc ~x86 ~x86-fbsd"
MY_PV=${PV/_/-}
MY_P=${PN}-${MY_PV}
S=${WORKDIR}/${MY_P}
DESCRIPTION="wxWidgets GUI for PostgreSQL."
HOMEPAGE="http://www.pgadmin.org/"
SRC_URI="mirror://postgresql/pgadmin3/release/v${MY_PV}/src/${MY_P}.tar.gz"
LICENSE="Artistic"
SLOT="0"
IUSE="debug"
DEPEND="x11-libs/wxGTK:2.8
virtual/postgresql-base
>=dev-libs/libxml2-2.6
>=dev-libs/libxslt-1.1"
RDEPEND="${DEPEND}"
src_configure() {
econf \
--with-wx-version=2.8 \
$(use_enable debug)
}
src_install() {
emake DESTDIR="${D}" install || die "einstall failed"
insinto /usr/share/pixmaps
newins "${S}/pgadmin/include/images/elephant48.xpm" pgadmin3.xpm
insinto /usr/share/pgadmin3
newins "${S}/pgadmin/include/images/elephant48.xpm" pgadmin3.xpm
insinto /usr/share/applications
doins "${S}/pkg/pgadmin3.desktop"
# Fixing world-writable files
chmod -R go-w "${D}/usr/share"
}
Quellen:
[1] http://www.pgadmin.org/visualtour.php
[2] http://subversion.fem.tu-ilmenau.de/repository/fem-overlay/trunk/dev-db/pgadmin3/pgadmin3-1.10.0_beta3.ebuild
Die NTFS-Unterstützung unter Linux ist zwar mittlerweile richtig gut, hat aber einen entscheidenden Nachteil. NTFS kennt kein execute-flag. Es können also entweder alle Dateien oder keine ausführbar sein. Blöd, wenn man primär Linux nutzt und auf der Partition auch Anderes als Bilder und Musik rumkullern. Lösung ist also Windows ext3 beizubringen. Dank der neuen Version 1.11a von Ext2IFS konnte ich endlich Truecryptvolumes, welche Ext3 als Dateisystem verwenden, auch ohne Bluescreens unter Windows mounten. Doch zu früh gefreut. Mounten ließ sich das Volume zwar, drauf zugreifen aber noch lange nicht. Der Explorer behauptete trotz korrekt installiertem ext2ifs, dass er das Dateisystem nicht kenne und doch gerne mal Formator spielen würde. Einige Suche hat ergeben, dass das Problem darin besteht, dass in aktuelleren Linuxdistributionen Inodes mit einer Größe von 256 angelegt werden, statt wie früher 128, womit ext2ifs nicht klar kommt. Abhilfe verschaffte die erneute Formatierung mittels:
sudo mkfs.ext3 -I 128 /dev/mapper/truecrypt1
Glücklicherwiese war noch nicht viel drauf auf der Partition. Eine Alternative wäre die Verwendung von ext2fsd, jedoch habe ich schon mehrfach gelesen, dass schreibender Zugriff damit zu Datenverlust geführt hat.
]]>Um diese Einstellung dauerhaft zu speichern, kann man in die ~/.subversion/config folgendes eintragen:
[auth]]]>
store-auth-creds = no
Da in Intrepid auf KDE4 umgestiegen wurde führt früher genutzte Ansatz Kcontrol zu installieren und dort Aussehen und Verhalten nach eigenem Gusto anzupassen zu keinem Erfolg mehr - Kcontrol gibbet nimmer.
Also "systemsettings" installiert um feststellen zu müssen, dass die entsprechenden Optionen ("Tastatur & Maus", sowie "Fenstereigenschaften" und noch ein paar andere) bei mir schlichtweg fehlen. Wahrscheinlich fehlen einfach noch ein paar KDE-Pakete welche dem systemsettings die notwendigen Optionen zur Verfügung stellen. Immerhin konnte ich in "Erscheinungsbild" die Icons auf "Human" umstellen und ein wenig die Dateiverknüpfungen überarbeiten.
Das Mausverhalten habe ich, nach längerem Suchen, in der Datei ~/.kde/share/config/kdeglobals geändert. Hier einfach folgendes einfügen/ergänzen/ändern:
[KDE] SingleClick=false
Hier können auch die Icons geändert werden, wenn man sich die Installation von systemsettings ersparen will.
[Icons] Theme=Human
Nun zur weiteren Optik. Sämtliche KDE-Software erstrahlt weiterhin in ihrem Oxygen-Look. Seit kurzem gibt es QGtKStyle, welches QT4 veranlasst die GTK-Engine zum Zeichnen der Fenster zu verwenden. Gibt's aber noch nicht in irgendwelchen Repos, also das .deb von hier genommen.
Folgender Eintrag in die kdeglobals sorgt dafür, dass fortan GTK für sämtliche qt4-KDE-Anwendungen verwendet wird.
[General] widgetStyle=gtk
Hat man auch reine qt4-Anwendungen (ohne KDE drumrum), so sorgt das Einstellen von GTK im qtconfig für optische Anpassung.
Qt3-Anwendungen erscheinen weiterhin im plastik-outfit, aber dafür (dagegen) hab ich auch noch keine schöne Lösung
]]>hint {in meine /etc/asound.conf einfügte und das Device als bevorzugt eingestellt hatte, funktioniert der Ton in allen KDE-Programmen wieder wie erwartet.
show on
description "DMix Softvol Device"
}
Section "Device"
  Identifier "Configured Video Device"
  Driver "nvidia"
  Option "NoLogo" "True"
  Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2233; PowerMizerDefault=0x3"
EndSection
0x1 - Maximale Performance
0x2 - Irgendeine der mittleren möglichen Taktraten wird verwendet
0x3 - Maximales Energiesparen ist angesagt
# cd /usr/src/linuxDanach findet man unter
# cat accessfs-2.6.21-0.20.patch | patch -p1
# make menuconfig
File Systems --->die passende Einstellung. Durch die Veränderung am Kernel reicht es nicht, einfach nur das Modul zu bauen und zu laden.
Miscellanenous filesystems --->
<*> Accessfs support (Experimental)
<*> User permission based IP ports
# mount -t accessfs none /proc/accessoder per /etc/fstab:
proc /proc proc defaults 0 0Zum Schluss noch ein
none /proc/access accessfs 0 0
chown jboss:jboss /proc/access/net/ip/bind/80und der Jboss kann unprivilegiert auf Port 80 laufen.
tcpdump -i eth0 ether proto 0x88ccWer weiß, welche Informationen wo stehen, kann auf Anhieb sagen, welcher Port es ist. Wer das nicht kann, verwendet Wireshark [3].
(1) This site is using an outdated encryption method which is no longer classified as secure. It cannot sufficiently protect sensitive data. Do you wish to continue?Nach ewiger Suche fand sich die Problemerklärung im Forum [1] auf der Operaseite.
Both problems are due to problems caused by CACert.org, the "open source" CA.Übersetzt ungefähr so: 2 Probleme:
Their OCSP server is not standards compliant, and refuse to return a valid response when we try to GET it (POST works fine, but Opera now uses GET). They will have to fix their server.
The request for their CRL fails because they have specifed a HTTPS URL for that, signed by the same root specifying that CRL, meaning that the CRL is setting up a dependency on itself as we can't fetch the CRL until we have downloaded it, which means it will never happen. As CRLs are digitally signed, and have certain validity periods, using HTTPS for CRL fetching is unnecessary (and sets up a Catch-22 situation). CACert should reissue their root, removing the CRL URL, and also reissue their Class 3 intermediate so that the HTTP CRL URL is located there.
ProxyPass /myApp http://internerServer:8080/myApp
ProxyPassReverse /myApp http://internerServer:8080/myApp
Dies leitet alle Anfragen an /myApp an den entfernten Host weiter, der nur im internen Netz erreichbar ist, und kümmert sich drum, dass alle Hostnamen in den HTTP-Headern entsprechend geändert werden.ProxyPreserveHost On
den Apache dazu bringen, die Anfrage ohne Änderung des Host:-Headers weiterzuleiten. Lohnt sich vorallem bei der Generierung von RSS-Feeds.pegro@grossesp ~/myProject $ find * | grep -v .svn | sortFindet man nun einen Bug, der sowohl in der Stable- als auch in der Entwicklerversion auftritt, im Beispiel in der Datei source.c, wäre es ja wünschenswert, ihn mit einem Commit für beide Versionen zu beheben. Dazu müsste man aber von der obersten Ebene an auschecken und so das komplette Repository als Arbeitskopie liegen haben. Das kann bei größeren Projekten zu einem echten Problem werden.
branches
branches/BROKEN
branches/BROKEN/file1
branches/BROKEN/file10
branches/BROKEN/file2
branches/BROKEN/file3
branches/BROKEN/file4
branches/BROKEN/file5
branches/BROKEN/file6
branches/BROKEN/file7
branches/BROKEN/file8
branches/BROKEN/file9
branches/STABLE
branches/STABLE/source.c
tags
trunk
trunk/source.c
pegro@grossesp ~ $ svn co https://subversion/repos/myProject/ myProject --depth emptyenthält somit nur ein .svn-Verzeichnis, keine Ordner und keien Dateien.
Checked out revision 1.
pegro@grossesp ~ $ svn co https://subversion/repos/myProject/ myProject --depth immediatescheckt nur Dateien und direkte Unterordner aus, jedoch nicht deren Unterordner oder Dateien.
A myProject/trunk
A myProject/branches
A myProject/tags
Checked out revision 1.
pegro@grossesp ~ $ svn co https://subversion/repos/myProject myProject --depth immediatesDann folgen noch die immediates vom branches-Ordner:
A myProject/trunk
A myProject/branches
A myProject/tags
Checked out revision 1.
pegro@grossesp ~ $ svn up myProject/branches/ --set-depth immediatesBei initialen Checkout wird die Tiefe mit --depth gesetzt. Für dieses Update muss der Wert mit --set-depth für den Ordner überschrieben werden, damit dessen Unterordner erscheinen.
A myProject/branches/BROKEN
A myProject/branches/STABLE
Updated to revision 1.
pegro@grossesp ~ $ svn up myProject/branches/STABLE --set-depth infinitySomit haben wir nun die gewünschte teilweise Arbeitskopie ohne den BROKEN-Branch:
A myProject/branches/STABLE/source.c
Updated to revision 1.
pegro@grossesp ~ $ svn up myProject/trunk --set-depth infinity
A myProject/trunk/source.c
Updated to revision 1.
pegro@grossesp ~/myProject $ find * | grep -v .svn | sortNun kann man seine Änderung in beide Zweige mit einem Commit einchecken:
branches
branches/BROKEN
branches/STABLE
branches/STABLE/source.c
tags
trunk
trunk/source.c
pegro@grossesp ~/myProject $ svn commit --message "fixes bug #1"Quellen:
Sending branches/STABLE/source.c
Sending trunk/source.c
Transmitting file data ..
Committed revision 2.
if(empty(calcReturnValue($variable))) { ...dachte ich sollte das Problem beheben. Denkste.
Fatal error: Can't use function return value in write context in /path/to/script on line irrelevantDa hab ich nicht schlecht gestaunt. Denn empty kann nur Variablen auf "leer" prüfen:
Note: empty() only checks variables as anything else will result in a parse error. In other words, the following will not work: empty(trim($name)).Und ja, empfohlen wird
$result = calcReturnValue($variable);Sachen gibts...
if(empty($result)) { ...
Unresolved/UnknownDer Pfad für die GeoIPDB (GeoIPDBPath) war ebenfalls richtig gesetzt. Mhm.
DNSChildrenMit DNSChildren 5 krieg ich jetzt auch Tortendiagramme mit mehr als dem unbekannten Land.
The number of DNS children processes to run in order to
resolve IP addresses to domain names or lookup country
codes in the GeoIP database. Use a value of
zero ('0') to disable. If disabled, both, DNS and GeoIP
lookups will be disabled.
emerge gtk-chthemedann das Programm starten und Themes und Schriftarten wie gewünscht ändern. Ohne Neustart sieht sogar der Firefox viel schöner aus.