Ich habe einindividuellUbuntu ISO, wo ich alle meine benötigten Pakete installiert habe, aus dem /pool/extras/
Verzeichnis. Jetzt möchte ich in der Lage sein,Kopiereneines der Pakete ( .deb
) aus diesem /pool/extras
Verzeichnis und speichern Sie es unterein anderer Ort, sagen wir zum Home-Verzeichnis eines Benutzers, von dem ich weiß, dass er existiert ( /home/myuser/
). Ich habe versucht, dies in dervorbesetzen
d-i preseed/late_command string if [ -f /media/cdrom/pool/extras/mypkg.deb ]; then cp -f /media/cdrom/pool/extras/mypkg.deb /home/myuser; fi
Aber das hat anscheinend nicht funktioniert! Ist dieser Ansatz richtig? Oder gibt es eine andere Möglichkeit, wie ich das Paket (vielleicht zu einem späteren Zeitpunkt) abrufen kann /pool/extras
?
Antwort1
Ich habe zumindest einen Vorschlag für dich. Ich weiß, dass das funktioniert, da ich an einem Projekt mit Ubuntu 14.4 arbeite und dieser Mechanismus bei mir funktioniert.
Zuerst der preesed.cfg preseed-lat Befehl
d-i preseed/late_command string \
cd /target; \
wget http://sub.webserver.domain/directory/script; \
chmod +x ./script; \
chroot ./ ./script; \
rm -f ./script
Die Datei, die wir hier Skript nennen, enthält den Code, der während der
Installation ausgeführt wurde:
etwas wie
wget http://sub.webserver.tdl/dir/run -O /etc/profile.d/run.sh
chmod +x /etc/profile.d/run.sh
wie Sie sehen, erfordert dieser Ansatz einen Webserver. Wenn Sie in Ihrem Fall ein ISO haben, können Sie beide Dateien im Stammverzeichnis Ihres ISO speichern und Folgendes verwenden
d-i preseed/run string script
In diesem Fall muss das Skript im selben Verzeichnis liegen wie die preseed.cfg
Im obigen Beispiel kopiert die Skriptdatei einfach run.sh in das Verzeichnis profile.d, in dem jede SH-Datei ausgeführt wird, wenn sich ein Benutzer anmeldet.
Je nachdem, was Sie tun möchten, können Sie entweder die Skriptdatei selbst verwenden, um Ihre Dateien mit SH-Shell-Befehlen zu kopieren, oder die SH-Datei in profile.d mit Bash verwenden, nachdem sich der Benutzer angemeldet hat, und sie löschen, wenn die Aktionen abgeschlossen sind.
Antwort2
Letztendlich hat die ISO-Methode bei mir nicht funktioniert, daher habe ich folgende Problemumgehung verwendet dpkg
:
In meinem .deb
Paket, im postinst
Skript ( bash
), habe ich einen Abschnitt wie den folgenden hinzugefügt:
MYPKG=$(find $PWD -name mypkg.deb)
cp -f $MYPKG /home/myuser
überraschenderweise war der Pfad tatsächlich so, als ich ihn protokollierte /media/cdrom/pool/extras/mypkg.deb
(wie in der late_command
Zeichenfolge verwendet!) :(
Ich bin mir nicht sicher, warum es nicht funktioniert hat überd-i preseed/late_command