Sie sind nicht angemeldet.

1

20.03.2010, 23:19

Ändern der System Pakete

Hallo,

weiß jemand wie man Pakete dem system-set hinzufügt oder viel mehr daraus löscht?

Soweit ich gesehen habe werden diese durch die Datei "packages" im make.profile bestimmt. Dieses profile hat wiederum Links auf andere profile. In der man-Page steht man könne diese in kaschierten Profilen löschen. Allerdings sobald ich irgend etwas in /usr/portage ändere wird dies ja beim nächsten sync überschrieben.

Soweit ich probiert habe ist es auch nicht möglich dies über eine /etc/portage/profile/packages Datei zu bearbeiten. Meine Überlegung war ein neues Profil in einem overlay anzulegen und make.profile darauf zu linken. Allerdings bekomme ich dann ja wieder Probleme mit den parent-Dateien welche die Profile miteinander verknüpfen. Zudem kann ich mein overlay nicht in /usr/portage/profiles/profiles.desc eintragen da auch diese Datei wieder überschrieben wird. Eine profiles.desc Datei im overlay/profiles bzw /etc/portage/profile/ wird ebenfalls ignoriert.

Es muss doch eine einfache Möglichkeit geben system-Pakete dauerhaft zu deinstallieren.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »nougad« (21.03.2010, 15:34)


2

21.03.2010, 07:14

kannst du mal konkretisieren, was du aus deinem System fernhalten willst? Dann kann man ggf. einen Plan entwerfen und ggf. Pakete maskieren.
System:
i7 P2600 @ 3,4GHz
jabber: poedel@jabber.ccc.de

3

21.03.2010, 10:33

Reicht es nicht, die Pakete, die Du nicht haben möchstest in die /etc/portage/profile/package.provided einzutragen?
Es könnte jedoch zu Problemmen kommen, falls die Pakete doch mal benötigt werden.
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

21.03.2010, 11:20

nach dem ich mir das thema nochmals verinnerlicht habe, denke ich der Weg von Bell ist der beste und sauberste.


1. Ist es ziemlich schnell durchgeführt und update resistent.

2. kann man es ziemlich schnell und unkompliziert ändern falls man das eine oder andere paket dann doch noch braucht.
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

5

21.03.2010, 11:27

Reicht es nicht, die Pakete, die Du nicht haben möchstest in die /etc/portage/profile/package.provided einzutragen?
Es könnte jedoch zu Problemmen kommen, falls die Pakete doch mal benötigt werden.

Mit der package.provided wäre ich vorsichtig. Die Datei ist ja dafür gedacht Portage mizuteilen dass man eine eigene Version händisch im System installiert hat und sich nicht mehr darum kümmern soll. Diese dafür zu benutzen um ein Paket anzugeben welches garnicht vorhanden ist ist immer ziemlich heikel. Portage geht ja davon aus dass das Paket installiert ist.
The most wonderful thing in the world is silence. And how noisy thoughts are!
Nanavira Thera

6

21.03.2010, 11:31

Laut man portage sollte es folgendermaßen per /etc/portage/profile/gehen:

Zitat

/etc/make.profile/
This is usually just a symlink to the correct profile in /usr/portage/profiles/. Since it is part of the portage tree, it may easily be updated/regenerated by running `emerge --sync`. It defines what a profile is (usually arch specific stuff). If you need a custom profile, then you should make your own /etc/make.profile/ directory and populate it. However, if you just wish to override some settings, use /etc/portage/profile/ (it supports all of the same file types that /etc/make.profile/ does, except parent). Do NOT edit the settings in /etc/make.profile/ because they WILL be lost with the next `emerge --sync`.

Der TE sagte es funktioniert aber nicht über /etc/portage/profile/. Das mag an dem "except parents" liegen. Nähere Infos was er jetzt genau vor hat und was nicht geht wäre evtl. hilfreich.
The most wonderful thing in the world is silence. And how noisy thoughts are!
Nanavira Thera

7

21.03.2010, 11:36

Yep, das meinte ich mit "falls die Pakete doch mal benötigt werden".
Alternative wäre es auf Portage 2.2 zu gehen. Dort ist "system" kein Bestandteil von "world". Da habe ich jedoch noch keine Erfahrung und kann nicht viel mehr zu sagen.
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.

8

21.03.2010, 11:38

@nikaya du hast natürlich recht, pakete in der provided durchaus komische probleme mitsich bringen. Da Portage diese (eventuelle) abhängigkeit als erfüllt ansieht, obwohl in diesem fall das paket ja garnicht vorhanden ist.

Also ist der package.provided doch nicht so die tolle Lösung. Ich nehme alles zurück :D
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

9

21.03.2010, 15:33

Erstmal ein großes DANKE für die ganzen Ideen.

Ich habe vor ein minimales chroot mit gentoo zu bauen. Bei Ansätzen wie jail etc hat man immer das Problem das es schwer ist neue Programme dort hinzuzufügen. Ich möchte, dass jemand über ssh auf das chroot zugreifen kann und so nicht Zugriff auf den kompletten Server hat. Da ist es natürlich erforderlich Software im chroot nach zu installieren. Deshalb möchte ich schon eine Paketverwaltung im chroot. deboostrap ist mir immer noch zu viel deshalb wollte ich mein Glück mit Gentoo versuchen. Es soll ein master-chroot geben, welches die Pakete kompiliert und die client-chroot's mounten dann das selbe /usr/portage und installieren nur noch die Binärpakete. Somit benötige ich Pakete wie shadow, oder gcc auf den clients nicht.

Ich muss mich korrigieren: Über /etc/portage/profile/packages kann man wirklich das system-set bearbeiten. Ich hatte das auch getestet aber anscheinend falsch. Über eix --system werden diese Pakete nicht mehr als system-package markiert. Allerdings wollte ich zum Beispiel openssh deinstallieren kam die Meldung:

'net-misc/openssh' is part of your system profile.

Wenn ich das ignorierte wurde es dennoch beim nächsten -vatNDu wieder installiert. Es steht nicht im packages und wurde noch einmal explizit über /etc/portage/profile/packages von system ausgeschlossen.

Was ich übersehen habe: virtual/ssh steht im system-profil und daher kommt openssh mit.

Sorry also dafür! Funktioniert nun soweit.

Danke!

10

22.03.2010, 18:22

@nougad,

dass es um chroot geht, hättest Du früher sagen können ;)

Bedenke, dass chroot nicht sicher ist, da ein Ausbruch möglich ist.
Hier würde ich empfehlen Dich mit vserver zu befassen. Ich empfehle hier auf Testing zu gehen. (sys-cluster/util-vserver, sys-kernel/vserver-sources). Ein vserver ist im Prinzip ein kernel-abgesichertes chroot.
Die Utils haben auch ein "vemerge" mit an Board, mit dem du Deine vserver aktuell halten kannst.

Wenn Du doch bei chroot bleiben willst, schaue Dir folgende Umgebungsvariablen an:

Aus "man emerge"

Quellcode

1
2
3
4
5
6
7
8
9
10
ENVIRONMENT OPTIONS
       ROOT = [path]
              Use  ROOT  to  specify  the target root filesystem to be used for merging packages or ebuilds. This variable can be set via the
              --root option or in make.conf(5) (the command line overrides other settings).
              Defaults to /.

       PORTAGE_CONFIGROOT = [path]
              Use PORTAGE_CONFIGROOT to specify the location for various portage configuration files (see FILES for a detailed list  of  con‐
              figuration files).  This variable can be set via the --config-root option.
              Defaults to /.

Damit kannst Du Deine chroot vom Portage und von Portage-Konfiguration trennen. Kompiliert wird ausserhalb der chroot.

Quellcode

1
2
3
4
5
 # cat chrt_emerge.sh 
#!/bin/bash
export PORTAGE_CONFIGROOT=/usr/local/32bit_conf
export ROOT=/usr/local/32bit
emerge $@


Und so sieht es dann aus:

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
# ./chrt_emerge.sh -va1 mysql

 * IMPORTANT: 3 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.


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

Calculating dependencies... done!
[ebuild  N    ] dev-db/mysql-init-scripts-1.2 to /usr/local/32bit/ 0 kB
[ebuild  N    ] dev-perl/Net-Daemon-0.43 to /usr/local/32bit/ 0 kB
[ebuild  N    ] perl-core/Storable-2.20 to /usr/local/32bit/ 0 kB
[ebuild  N    ] perl-core/Sys-Syslog-0.27 to /usr/local/32bit/ 0 kB
[ebuild  N    ] virtual/perl-Storable-2.20 to /usr/local/32bit/ 0 kB
[ebuild  N    ] perl-core/File-Spec-3.30 to /usr/local/32bit/ 0 kB
[ebuild  N    ] virtual/perl-Sys-Syslog-0.27 to /usr/local/32bit/ 0 kB
[ebuild  N    ] dev-perl/PlRPC-0.2020-r1 to /usr/local/32bit/ 0 kB
[ebuild  N    ] virtual/perl-File-Spec-3.30 to /usr/local/32bit/ 0 kB
[ebuild  N    ] dev-perl/DBI-1.609 to /usr/local/32bit/ 0 kB
[ebuild  N    ] dev-db/mysql-5.0.90-r2 to /usr/local/32bit/ USE="berkdb community perl ssl -big-tables -cluster -debug -embedded -extraengine -latin1 -max-idx-128 -minimal -profiling (-selinux) -static -test" 22,692 kB
[ebuild  N    ] virtual/mysql-5.0 to /usr/local/32bit/ 0 kB
[ebuild  N    ] dev-perl/DBD-mysql-4.00.5 to /usr/local/32bit/ 0 kB

Total: 13 packages (13 new), Size of downloads: 22,692 kB

Would you like to merge these packages? [Yes/No] 
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.

11

22.03.2010, 22:12

Ah, das vserver sieht ja schon sehr lecker aus. Leider ist das Hostsystem ein virtueller Server mit Debian bei dem ich eher ungern am Kernel rumspiele. Auch wenn ich sonst da kein Hemmnis vor habe, bin ich bei so einem Vserver immer etwas vorsichtiger.

Ich habe nur einen eingeschränkten Nutzerkreis und soweit ich bereits mich mit pam_chroot befasst habe, sind die User auch nicht als root im chroot unterwegs. Von daher halte ich ein chroot erst einmal für akzeptabel. Aber danke für den Hinweis, Ich wusste nicht das es so einfach ist da raus zu kommen.

Das mit den Variablen ist super! Dann spare ich mir wieder ein wenig Ballast. Leider scheint es so als könnte ich portage nicht deinstallieren. Gibt es da einen Trick?

Unschön ist etwas, dass einige "Zusatztools" wie revdep-rebuild die Variablen nicht auswerten. Auch logged emerge nach wie vor nach /var/log/emerge.log was ich auch nicht für sehr gut halte. Aber zumindest besser als nichts.

Aktuell bin ich noch bei 240MB was mir eigentlich noch viel zu groß ist. Morgen mal ein bisschen rum probieren was noch deinstalliert werden kann.

Danke schon mal für die Hilfe!

12

22.03.2010, 22:33

bez. portage , eventuell hilft es dir den portagetree zu komprimieren (mit squashfs und aufs2)?

Quellcode

1
2
$ ls -lsh /var/portage/portage-current.sqfs 
46M -rwx------ 1 root root 46M 22. Mär 19:33 /var/portage/portage-current.sqfs
Intel core 2 duo E6600
XFX Geforce 7950 gt
4096 MB DDR2
Intel DP35DP

13

22.03.2010, 22:37

Kurze Einführung:
http://www.gentoo.org/proj/en/base/embed…l?part=1&chap=3
http://www.gentoo.org/proj/en/base/embed…development.xml

Für die Beispiel-Wrappers:
http://www.gentoo.org/proj/en/base/embed…l?part=4&chap=2
http://www.gentoo.org/proj/en/base/embed…l?part=4&chap=3
http://www.gentoo.org/proj/en/base/embed…l?part=4&chap=5


Müsste man noch einiges zusammentragen, aber mit "Cross-Compiling With Portage" und den einzelnen beispielen unter "Boards", kannst du dir für portage / emerge schöne Wrapper-Skripte bauen und dir die gewünschten Pakete in einem belieben Verzeichnis installieren.
(noman noinfo nodoc dürften da eben auch hilfreich sein)
"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.

14

23.03.2010, 11:08

Ah, ok, squash FS ist eine nette Idee. Für meinen Zweck aber glaube ich nicht ganz das Richtige. Ziel soll es ja sein die chroots klein zu halten. Der portage-tree ist für mich eher Teil des Hostsystems. Das brauche ich ja nur einmal und nicht für jedes chroot.

noman noinfo nodoc ist genial, das kannte ich auch noch nicht!

Aber mit cross-compiling hat mein chroot nicht ganz so viel zu tun. Ich habe einfach den stage 3 tarball entpackt und die Variablen von bell alle möglichen Pakete deinstalliert. Oder verstehe ich da grad was falsch?

15

23.03.2010, 11:45

Dein Host ist ja Debian, hat also keinen Portage. Um hier auszuhelfen könntest Du das portage-Paket bei Dir irgendwo entpacken und mit folgenden Variablen nutzen:

Quellcode

1
2
export PYTHONPATH="/checkouts/portage/trunk/pym:${PYTHONPATH}"
export PATH="/checkouts/portage/trunk/bin:${PATH}"

Damit könntest Du dann mit "--builpkg" die Pakete generieren und mit den "ROOT" + "--usepkg" in Deine chroots installieren.
Natürlich wirst Du die Debian Build-Tools installieren müssen.

Initial kann die chroot leer sein. Hierfür brauchst keinen Stage3, sondern Du installierst nur das, was Du brauchst dort rein.
Das confdir muss eine etc/make.conf und Profil-Link etc/make.profile haben.

Die Anleitungen zum crosscompiling bescheftigen sich ua. mit der Verwendung der Variablen "ROOT". Du musst nicht cross-kompilieren. Die Anleitungen haben jedoch viele nützliche Hinweise und Beispiele.
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.

16

23.03.2010, 12:00

Eben...

Du musst ja nicht wirklich einen cross-compiler verwenden, nur die Tools und die Wrapper.
So kannst du deine Pakete im build system fürs host system mit minimalster Konfiguration bauen und wenn nötig auch gleich binpkgs erstellen.
"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.

17

23.03.2010, 20:20

Achso, dann hab ich mich da von dem cross-compiling etwas blenden lassen, sry. Stimmt natürlich die Wrapper etc sind recht nützlich.

Auf das leere chroot bin ich noch gar nicht gekommen. Das ist absolut super! Bin jetzt auf 103MB. Damit kann man schon mal leben.

Schade ist, dass ich ja sys-devel/binutils, sys-devel/gcc und sys-libs/glibc ja trotzdem brauche. Das macht schon einen sehr großen Batzen aus. Aber gut, ich bin mit dem Ergebnis schon sehr zufrieden.

Für Interessenten (oder Anmerkungen) meine /etc/make.conf:

Zitat

USE="-pam -cracklib -nls -ssl -perl -acl -crypt -python minimal -gpm -fortran"
FEATURES="nodoc noinfo noman parallel-fetch"


Und meine /etc/portage/profile/packages:

Zitat

-*net-misc/openssh
-*sys-apps/man
-*sys-apps/man-pages
-*sys-apps/module-init-tools
-*sys-apps/net-tools
-*sys-apps/shadow
-*sys-devel/autoconf
-*sys-devel/automake
-*sys-devel/bison
-*sys-devel/flex
-*sys-devel/gnuconfig
-*sys-devel/libtool
-*sys-devel/m4
-*sys-devel/make
-*sys-fs/e2fsprogs
-*sys-fs/udev
-*virtual/ssh
-*virtual/dev-manager
-*virtual/man
-*virtual/modutils
-*virtual/os-headers
-*sys-apps/baselayout
-*sys-apps/busybox
-*sys-apps/util-linux
-*virtual/portage
-*sys-apps/texinfo
-*net-misc/rsync
-*sys-process/psmisc
-*net-misc/iputils
-*sys-libs/readline
-*sys-apps/kbd


Wrapperscripte habe ich mir für das Testsystem noch nicht gebastelt Aktuell tuts ein:
sudo bash -c "export PORTAGE_CONFIGROOT=$(pwd); export ROOT=$(pwd); emerge -vatNDu world"

Folgende Pakete sind installiert:

Zitat

app-admin/eselect
app-admin/eselect-python
app-admin/eselect-vi
app-arch/bzip2
app-arch/cpio
app-arch/gzip
app-arch/tar
app-editors/vim
app-portage/eix
app-shells/bash
dev-libs/gmp
dev-libs/libpcre
dev-libs/mpfr
net-misc/wget
sys-apps/coreutils
sys-apps/diffutils
sys-apps/file
sys-apps/findutils
sys-apps/gawk
sys-apps/grep
sys-apps/sed
sys-apps/which
sys-devel/binutils
sys-devel/binutils-config
sys-devel/gcc
sys-devel/gcc-config
sys-devel/patch
sys-libs/glibc
sys-libs/ncurses
sys-libs/timezone-data
sys-libs/zlib
sys-process/procps
virtual/editor
virtual/libiconv
virtual/pager