FreeBSD demoliert

Hallo,

Ich hab mein FreeBSD 6.1 kaputtgemacht.

Ich benutze ein FreeBSD 6.1 mit Gnome
unter Apache2/mod_perl2 als
Entwicklungsplattform.

Soweit so gut. Nun habe ich wohl irgendetwas
„falsch“ installiert (Ports) oder „gemacht“ -
und nun funktioniert das Port-System gar nicht
mehr.

Jede zweite Installation geht nun schief, weil
angeblich „Ruby 1.8“ ein Sicherheitsproblem
darstellen soll (??).

Ruby (was ich nicht verwende) wird wohl von den
Port-Tools benötigt. Ich kann auch kein ‚portupgrade‘
installieren:

[root@bsdsrv /usr]# portmanager sysutils/portupgrade

liefert:

 ...
 update portupgrade-2.0.1\_1,1
 MGPMrUpdate 0.4.1\_5 command: #9 of 14 cd /usr/ports/sysutils/portupgrade && make
 ------------------------------------------------------------------------
 ===\> Vulnerability check disabled, database not found
 ===\> Found saved configuration for portupgrade-2.1.3.3\_1,2
 ===\> Extracting for portupgrade-2.0.1\_1,1
 =\> MD5 Checksum OK for pkgtools-2.0.1.tar.bz2.
 =\> SHA256 Checksum OK for pkgtools-2.0.1.tar.bz2.
 ===\> portupgrade-2.0.1\_1,1 depends on file: /usr/local/bin/ruby18 - found
 ===\> Patching for portupgrade-2.0.1\_1,1
 ===\> portupgrade-2.0.1\_1,1 depends on file: /usr/local/bin/ruby18 - found
 ===\> Applying FreeBSD patches for portupgrade-2.0.1\_1,1
 2 out of 3 hunks failed--saving rejects to etc/pkgtools.conf.rej
 =\> Patch patch-etc-pkgtools.conf failed to apply cleanly.
 \*\*\* Error code 1

So ein Mist. Alles, was im Handbuch steht, hab ich
probiert. Deinstall/Reinstall, 10x, alles ge-cleaned,
egal. Neue Pakete von Hand gezogen, egal.
Immer dasselbe.

Was nun?

Grüße

CMБ

Hi,

Ich hab mein FreeBSD 6.1 kaputtgemacht.

allerdings :smile: Zwar scheinbar nur „im Kleinen“, aber wer weiß… Schaun mer mal:

Jede zweite Installation geht nun schief, weil
angeblich „Ruby 1.8“ ein Sicherheitsproblem
darstellen soll (??).

Ruby wird v.a. von sysutils/portupgrade benutzt. Aktuell ist ruby-1.8.5_1,1.

portupgrade-2.1.3.3_1,2
===> Extracting for portupgrade-2.0.1_1,1

Hier wird’s schon komisch. 2.0.1_1,1 ist steinalt.

So ein Mist. Alles, was im Handbuch
steht, hab ich probiert. Deinstall/Reinstall, 10x, alles ge-cleaned,
egal. Neue Pakete von Hand gezogen, egal. Immer dasselbe.

Was nun?

Grob: Problematisches entfernen, Portstree aktualisieren, Benötigtes neubauen.

Zunächst mal schaust Du, was Du installiert hast, mit

# pkg\_info

Interessant ist alles, was ruby enthält, vermutlich

ruby-1.8.5\_1,1 An object-oriented interpreted scripting language
ruby18-bdb-0.5.9\_2 Ruby interface to Sleepycat's Berkeley DB revision 2 or later

außerdem portupgrade selbst. Entfernen kannst Du per

# pkg\_delete -f ruby-1.8.5\_1,1 ruby18-bdb-0.5.9\_2 portupgrade-2.1.3.3\_1,2

Kontrolliere danach nochmal via

# pkg\_info

ob’s auch aus der portsdb raus ist. Falls dem nicht der Fall ist, die Binaries aber weg sind (portupgr geht net), kannst Du die portsdb löschen

# rm /var/db/pkg/pkgdb.db

und neu aufbauen:

# pkgdb -auF

Dieser Schritt ist allerdings mit Vorsicht zu genießen, mach das nur, wenn die gelöschten Binaries als Pakete noch in der portsdb stehen!

Als nächstes ziehst Du Dir den aktuellen portstree:

# cvsup -g -L 2 -h cvsup2.de.freebsd.org /usr/share/examples/cvsup/ports-supfile

(erfordert cvsup-without-gui oder cvsup)

Falls Du cvsup nicht draufhast, kannst Du auch

# portsnap fetch

benutzen, so vorhanden. cvsup ist zu bevorzugen, weil etwas aktueller.

Nun kannst Du portupgrade neu bauen:

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

Das sollte dann hinhauen. An weiteren Infos könnte für uns noch interessant sein die Ausgaben von

# pkg\_version -v
# uname -a

außerdem mehr Fehlermeldungen beim bauen beliebiger Ports.

Gruß,

Malte

‚Bow to the master‘ (was: FreeBSD demoliert …)
Hallo

Ich hab mein FreeBSD 6.1 kaputtgemacht.

Grob: Problematisches entfernen, Portstree aktualisieren,
Benötigtes neubauen.

pkg_delete -f ruby-1.8.5_1,1 ruby18-bdb-0.5.9_2

rm /var/db/pkg/pkgdb.db

(‚pkgdb.db‘ gabs bei mir gar nicht)

pkgdb -auF

!!

cvsup -g -L 2 -h cvsup2.de.freebsd.org

(ging, hatte ich mal installiert, als das noch möglich war)

cd /usr/ports/sysutils/portupgrade && make install clean

bingo, es hat alles funktioniert …

Ich hatte mir geschworen - wenn ich das *tatsächlich*
irgendwie wieder zum Laufen bekomme, dann konzentriere
ich mich weitgehend auf *BSD, das System erscheint
mir brauchbar.

Und ich hatte mir jetzt schon vor Verzweiflung die
Slackware-11 DVD gezogen - welche Bandbreiten-
verschwendung :wink:

Grüße & Danke

CMБ

Hi,

bingo, es hat alles funktioniert …

schön, dass ich mal jemandem mit BSD-Stuff helfen konnte, kommt hier selten vor :wink:

Ich hatte mir geschworen - wenn ich das *tatsächlich*
irgendwie wieder zum Laufen bekomme, dann konzentriere
ich mich weitgehend auf *BSD, das System erscheint
mir brauchbar.

Lohnt sich. Ich bin beruflich gezwungen, mich zunehmend mit Linux zu beschäftigen, ist auch okay, aber ich fühle mich dabei immer wieder in meinem Fetisch „BSD“ bestätigt. BSD hat sicher Schwächen und ist manchmal etwas kompliziert, aber andererseits ein sehr logisches und einfaches System.

Danke für die prompte Erfolgsmeldung und Gruß,

Malte

PS: [email protected] ist die deutschsprachige BSD-Mailingliste, mit angenehmem Umgangston und auf hohem Niveau. Die helfen auch gern, gut und schnell bei kniffligen Problemen.

Nachtrag zur Erklärung:

(‚pkgdb.db‘ gabs bei mir gar nicht)

Ich hatte mir geschworen - wenn ich das *tatsächlich*
irgendwie wieder zum Laufen bekomme, dann konzentriere
ich mich weitgehend auf *BSD, das System erscheint
mir brauchbar.

Die pkgdb ist die zentrale DB, in der die installierte Software aus den Ports katalogisiert ist. Ohne die geht $gar_nix. Allerdings kann FreeBSD sich die pkgdb rekonstruieren, weil es die Metainformationen zu jedem Port auch in Unterverzeichnissen in /var/db/pkgdb vorhält. Diese pkgdb hast Du irgendwie geschrottet, und Dein Portstree war auch aus irgendeinem Grund inne Fritten, was dann zu $seltsamen Ergebnissen beim Installieren von Ports führt. Beides wiederhergestellt, löst sich alles in Wohlgefallen auf.

Für das Paketmanagement gibt es verschiedene Werkzeuge, manche nutzen die pkgdb (wie portupgrade), andere gar nicht… Ich bevorzuge den „klassischen“ Weg, Ports über cd $port && make install clean, das aktuell halten via cvsup und das updaten via portupgrade, und bin damit bisher immer gut gefahren.

Es empfiehlt sich, vor portupgrades mal eben /usr/ports/UPDATING zu überfliegen, manche Pakete (portupgrade selbst und Gnome sind da heiße Kandidaten für) erfordern für ein Upgrade spezielle Maßnahmen, die dann dort vermerkt sind.

Für das Systemupdate gilt das respektive bzgl. /usr/src/UPDATING

Gruß,

Malte

…dann konzentriere ich mich weitgehend auf *BSD ,
das System erscheint mir brauchbar.

full ack :smile:

Hallo

[BSD-Stuff] …
kommt hier selten vor :wink:

Bisher ist alles o.k., und mit der Kombination
pkg_add / portupgrade und portmanager habe ich
jetzt im Nachhinein alles in den grünen Bereich
fahren können, er hat sogar mod_perl2.0.2 passend
für Apache 2.2.3 gebaut, obwohl es das (offiziell)
gar nicht gibt (staun) :wink:

Interessant ist auch, dass der portmanager beim
versuchten Installieren von mysql_administrator
(*das* war ein harter Fall) schliesslich und endlich
anfing, nach 100 Paketen auch noch ein neues
X(!, 6.9) draufzuziehen.

Wer da keine schnelle Leitung hat … :wink:

Was ich noch nicht hinbekommen habe:

  • Standard-Shell für root lässt sich irgendwie
    gar nicht auf bash setzen.

  • Standard-Shell für user ist bei remote-login
    noch auf /bin/sh, obwohl ich alles nach
    den „Linux-Weisheiten“ umgestellt habe
    (.profile/.bashrc + /etc/passwd), lokaler
    Konsolelogin und lokaler X-login ist ok.

Irgendwo muss da noch was drinstehen.

Nochmals Danke & Grüße

CMБ

Hi,

Was ich noch nicht hinbekommen habe:

  • Standard-Shell für root lässt sich irgendwie
    gar nicht auf bash setzen.

als root

chsh

und dann den Pfad zur Shell auf /usr/local/bin/bash (Die Bash ist unter FreeBSD nicht Systembestandteil, sondern wird aus den Ports nachinstalliert, deshalb unter /usr/local/).

  • Standard-Shell für user ist bei remote-login
    noch auf /bin/sh, obwohl ich alles nach
    den „Linux-Weisheiten“ umgestellt habe
    (.profile/.bashrc + /etc/passwd), lokaler
    Konsolelogin und lokaler X-login ist ok.

als root

chsh _Username_

und ebenfalls Pfad anpassen. Pakete mit „cd $PATHTOPORT && make install clean“ zu bauen, ergibt btw. a) erheblich aktuellere Pakete als „pkg_add -r“ und b) ermöglicht Dir weitreichende Anpassungen, wie z.B. bei vielen Ports ein

# make -DWITHOUT\_X11 install clean

_Welche_ Optionen zur Verfügung stehen, zeigt Dir das Makefile im $PATHTOPORT. Diese Optionen sind häufig enorm hilfreich (bspw. wenn Du Ports mit Postgres-Unterstützung statt mit MySQL bauen willst, oder schlicht bestimmte Teile/Schnittstellen nicht benötigst). Häufig werden sie per Menuauswahl angeboten, aber auch dann nicht unbedingt alle, die zur Verfügung stehen.

Außerdem könnte „man make.conf“ interessant sein.

Gruß,

Malte