Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

18.05.2008, 21:56

System aktuell halten - für Versionsjunkies

Ihr aktualisiert Euer System täglich mit

Quellcode

1
emerge -uvatDN world

und denkt alles ist auf dem aktuellsten Stand?
Falsch! Der Befehl berücksichtigt folgendes nicht:


1. Pakete, die zu keinem anderen Paket aus World als Abhängigkeit stehen werden nicht aktualisiert.
Diese kann man mit

Quellcode

1
emerge -vp --depclean

sehen. Man sollte sie entweder in World aufnehmen, einzeln aktualisieren oder löschen.


2. Pakete, die nur zum Bauen, jedoch nicht zur Laufzeit benötigt werden, werden nicht aktualisiert.
Diese kriegt man mit folgendem Befehl mit aktualisiert:

Quellcode

1
emerge -uvatDN --with-bdeps=y world

Sinn macht es eigentlich nicht, da diese aktualisiert werden, sobald sie wieder benötigt werden.


3. CVS/SVN oder sonstige Live-Ebuilds sind zwar aktuell, jedoch ändert sich die Quelle fast täglich. Daher ist das installierte Ergebnis wahrscheinlich nicht aktuell. Hier möchte ich auf ein Skript "update-live-ebuilds" hier verweisen.


4. Öfter werden Änderungen an Ebuilds gemacht, ohne dass sich die Versionsnummer ändert. Dies ist insbesondere bei den noch nicht stabil markiertden Ebuilds der Fall. Es kommt jedoch auch vor, dass der Ebuild-Developer kleine Änderungen oder Verbesserungen macht, eine Versionsänderung jedoch noch nicht für notwendig hält.
Für diesen Fall gibt es folgenden Skript. Anregungen, Anmerkungen und Verbesserungsvorschläge sind zu diesem Skript willkommen. Danke an @toralf bei forums.gentoo.org, der mein Skript hier optimiert hat.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/sh
I=/tmp/ebuild.installed
C=/tmp/ebuild.portage
cleanup () {
   sed 's/#.*//g'  $1 | \
   grep -v   $1   \
   -e "^$"   \
   -e 'KEYWORDS='   \
   -e 'HOMEPAGE='   \
   -e 'LICENSE='   \
   -e 'SRC_URI='   \
   -e 'eerror'   \
   -e 'einfo'   \
   -e 'ewarn'   \
   -e 'elog'
} 
cd /var/db/pkg/ || exit 1
find . -mindepth 3 -type f -name '*.ebuild' |\
sort |\
while read FILE
do
   EBUILD_INSTALLED=$(basename $FILE)
   PACKAGE=$(echo $EBUILD_INSTALLED | cut -f1 -d '.')
   CATEGORIE=$(echo $FILE | cut -f2 -d'/')
   
   EBUILD_PORTAGE=$(ls /usr/portage/$CATEGORIE/$(echo $PACKAGE | cut -f1 -d'-')*/$EBUILD_INSTALLED 2>/dev/null)
   [[ -f $EBUILD_PORTAGE ]] || continue
   
   cleanup $FILE    > $I
   cleanup $EBUILD_PORTAGE   > $C
   
   DIFF=$(diff $I $C 2>/dev/null)
   if [[ $? -eq 1 ]]; then
   if [[ "$1" = "-q" ]]; then
      echo "=$CATEGORIE/$EBUILD_INSTALLED" | sed 's/\.ebuild//g'
   else
      echo -e "$CATEGORIE/$(basename $(dirname $EBUILD_PORTAGE))\t$EBUILD_INSTALLED"
   fi
   [[ "$1" = "-v" ]] && echo -e "$DIFF\n"
   fi
   
   rm $I $C
done


Edit
Hier noch nen Link zu einem Beitrag im Linux Forum.
Gentoo ganz sauber und aktuell

Changelog:
18.05.2008 Initial aus dem Thread hier übernommen. Der Skript kann noch nicht mit Overlays umgehen.
02.06.2008 Bugfix bei .ebuild. Danke an RudiB
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »bell« (02.06.2008, 16:13)


2

22.05.2008, 22:12

Hallo,

Quellcode

1
     	echo "=$CATEGORIE/$EBUILD_INSTALLED" | sed 's/.ebuild//g'

In dieser Zeile sollte der Punkt (= beliebiges Zeichen) bei ".ebuild" maskiert werden:

Quellcode

1
echo "=$CATEGORIE/$EBUILD_INSTALLED" | sed 's/\.ebuild//g'

Ansonsten gibts arge Probleme:

Quellcode

1
2
3
4
$ checkmodebuilds | grep sys-kernel
sys-kernel/gentoo-sources	gentoo-sources-2.6.24-r7.ebuild
sys-kernel/gentoo-sources	gentoo-sources-2.6.24-r8.ebuild
sys-kernel/module-rebuild	module-rebuild-0.5.ebuild

Quellcode

1
2
3
4
$ checkmodebuilds -q | grep sys-kernel
=sys-kernel/gentoo-sources-2.6.24-r7
=sys-kernel/gentoo-sources-2.6.24-r8
=sys-kernel/module--0.5

Quellcode

1
2
3
4
5
6
7
8
9
# emerge -av1 $(./checkmodebuilds -q)

These are the packages that would be merged, in order:

Calculating dependencies /

!!! '=sys-kernel/module--0.5' is not a valid package atom.
!!! Please check ebuild(5) for full details.
!!! (Did you specify a version but forget to prefix with '='?)


Rudi
Seien Sie vorsichtig mit Gesundheitsbüchern - Sie könnten an einem Druckfehler sterben. [Mark Twain]

3

02.06.2008, 16:15

Ich habe die Änderung von RudiB eingebaut. Vielen Dank.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

4

04.02.2009, 19:04

Hab mir vor einiges Zeit dieses Skript angeschaut und es überarbeitet bzw. nach dessen Vorlage neu entworfen.
Werd es bei Zeiten mal in mein Overlay stellen.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

5

05.02.2009, 11:49

Freut mich zu hören das es noch, oder wieder weiter entwickelt wird :thumbup:
Prima wäre wenn man noch den Umgang mit installierten Paketen aus Overlays mit einbauen oder anpassen könnte, denn bisher wurden diese ja grundsätzlich mit neugebaut. Eine Alternative wäre ja auch erst mal wenn Pakete aus Overlays bei der Suche ausgeschlossen werden.

MfG

6

05.02.2009, 20:07

Kein Problem, Overlays funktionieren und wenn du willst, kann ich die Zeile zum Ausschalten auch noch reinmachen.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

7

23.03.2010, 21:31

"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »maggu2810« (25.04.2010, 19:51)


8

24.03.2010, 05:24

Was dagegen, wenn ich das für mein Update-Script klaue?

9

24.03.2010, 07:12

Mach damit was du willst. ;)

Ich fände es natürlich sinnvoller, wenn du es in deinem Update-Skript aufrufst, anstatt es dort "rein-zu-arbeiten".
Und Verbesserungen wären jederzeit willkommen...
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

10

24.03.2010, 07:44

Da ich ein automatisiertes

Quellcode

1
emerge --oneshot ${PKGOUT}
loslassen möchte, werde ich es wohl einarbeiten. Ich bin faul. Daher kämpf ich lieber nen bisschen mit dem Code und kann dann entspannt genießen 8) Außerdem lerne ich so mehr. Ich mache das ja, um etwas besser mit der Bash umgehen zu können.

Wegen den Verbesserungen:
Ich weiß noch nicht genau, warum das kommt, aber ich kriege da ne "Fehlermeldung"

Quellcode

1
2
3
4
BitKiller Desktop # ./gentoo-ebuild-uptate-check.sh -o
./gentoo-ebuild-uptate-check.sh: Zeile 104: [: None: Zweistelliger (binärer) Operator erwartet.
cat: None: Datei oder Verzeichnis nicht gefunden
...
Die werde ich in meinem Script wohl unterdrücken. Sowas will ich nicht sehen.

11

24.03.2010, 08:45

Das wichtigste ist ja nur, dass Verbesserungen zurückfließen, damit alle was von haben. Werds mir bei Zeiten anschauen, was da los ist.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

12

24.03.2010, 09:15

So hab ich das in mein Script eingearbeitet. Läuft ohne Fehlermeldung.

edit:
siehe Zeilen 27 & 30

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# original from http://github.com/maggu2810/gentoo-ebuild-uptate-check
function gentoo_ebuild_update_check_by_maggu2810() {
	echo "Checking ebuild differences."
	OPT_OVERLAYS="true"
	PKGDB="/var/db/pkg/"
	PORTDIR="/usr/portage"
	OFFICIAL_TREE="gentoo"
	I="`mktemp --tmpdir ebuild.installed.XXXXXXXXXX`"
	A="`mktemp --tmpdir ebuild.actual.XXXXXXXXXX`"
	PARSE_CMD="cleanup"
	cd "${PKGDB}" || exit 1
	find . -mindepth 3 -maxdepth 3 -type f -name '*.ebuild' | sort | while read FILE
	do
	[[ "${FILE}" =~ ([^/]*)/([^/]*)/([^/]*)-([^-]*-r[^.-]*).ebuild ]] ||
	[[ "${FILE}" =~ ([^/]*)/([^/]*)/([^/]*)-([^-]*).ebuild ]]
	CAT="${BASH_REMATCH[1]}"
	PKGwV="${BASH_REMATCH[2]}"
	PKG="${BASH_REMATCH[3]}"
	VER="${BASH_REMATCH[4]}"
	EBUILD_I="${PKGDB}/${FILE}"
	REPO="$(cat ${PKGDB}/${CAT}/${PKGwV}/repository 2>/dev/null)" || REPO="${OFFICIAL_TREE}"
	if [ "${OPT_OVERLAYS}" != "true" -a "${REPO}" != "${OFFICIAL_TREE}" ]; then
	continue
	fi
	REPO_PATH="$(portageq get_repo_path / ${REPO})"
	EBUILD_A="${REPO_PATH}/${CAT}/${PKG}/${PKG}-${VER}.ebuild"	 
	if [ ! -e ${EBUILD_A} 2> /dev/null ]; then            	# <-- Fehlermeldung Teil 1
	continue
	fi
	PKGOUT="${CAT}/${PKG}" 2> /dev/null	# <-- Fehlermeldung Teil 2
	${PARSE_CMD} ${EBUILD_I} > ${I} 2> /dev/null   # <-- Fehlermeldung Teil 2
	${PARSE_CMD} ${EBUILD_A} > ${A}	2> /dev/null   # <-- Fehlermeldung Teil 2
	DIFF=$(diff -Naur ${I} ${A})	 
	if [ ${?} -eq 1 ]; then
	emerge --oneshot ${PKGOUT} 2> /dev/null >> /dev/null
	fi
	rm ${A} ${P}
	done
	echo "Checking ebuild differences finished."
	echo ""
}

13

24.03.2010, 23:45

@FelixPetzold
Hm, damit unterdrückst Du die Fehlermeldungen. Der Fehler bleibt jedoch bestehen. Es wäre besser dem Fehler auf den Grund zu gehen.
Baue mal folgende Zeile zwischen 19 und 20 (nach der Ermittlung der Variablen) ein.

Quellcode

1
        echo -e $CAT'|\t'$PKGwV'|\t'$PKG'|\t'$VER

Nimm die Fehlerunterdrückung raus und poste mal die Ausgabe-Zeilen von den Betroffenen Zeilen.

@maggu2810
Für Dich habe ich auch schon den ersten Bug-Report:

Quellcode

1
2
.|	sys-kernel|	module|	
ebuild not found: /usr/portage/./module/module-.ebuild [but: /var/db/pkg//./sys-kernel/module-rebuild-0.5/module-rebuild-0.5.ebuild]

Aus irgend einem Grund wird "." für $CAT gezogen. Wahrscheinlich weil das Paket ein "-" im Namen hat.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

14

25.03.2010, 07:09

@bell
Danke.
Ich kann den Fehler reproduzieren und werds mir heute Abend (oder sobald Zeit dafür ist) korrigieren.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

15

25.03.2010, 18:01

@ bell:

Quellcode

1
2
3
app-antivirus|	avast4workstation-1.3.0-r1|	avast4workstation|	1.3.0-r1
/etc/cron.daily/update.sh: Zeile 313: [: None: Zweistelliger (binärer) Operator erwartet.
cat: None: Datei oder Verzeichnis nicht gefunden

Allerdings sehe ich dort nix Auffälliges. Hier mal die folgenden 5 Zeilen zum vergleichen

Quellcode

1
2
3
4
5
app-arch|	bzip2-1.0.5-r1|	bzip2|	1.0.5-r1
app-arch|	cabextract-1.2-r1|	cabextract|	1.2-r1
app-arch|	cpio-2.10-r1|	cpio|	2.10-r1
app-arch|	file-roller-2.26.3|	file-roller|	2.26.3
app-arch|	gzip-1.4|	gzip|	1.4


Ja, ich wusste, dass ich die Fehlermeldungen nur umgelenkt habe. Das Problem dabei ist, ich kann lesen, was dort gemacht wird, aber um 100% zu verstehen, muss ich noch bisschen nachlesen, was die ganzen Optionen dort bedeuten. Daher war das erstmal meine "Lösung".

16

25.03.2010, 21:11

Danke für die Rückmeldungen, aber sowas wie Bug-Reports, gehört hier nicht in die Tipps & Tricks Sektion und hat in diesem Fall eigentlich auch nichts mit dem Forum zu tun.
Vielleicht benutzen wir leichter das "Issues" Feature von github -- muss aber gestehen, mich da noch selber einarbeiten zu müssen.
Siehe Beispielsvideo: http://github.com/blog/411-github-issue-tracker
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.