Re: Paket postinstall-Skript anzeigen

From: Lars Engels <lars.engels(at)0x20.net>
Date: Thu, 28 Mar 2019 17:09:30 +0100

On Fri, Mar 22, 2019 at 03:03:48PM +0100, Harold Gutch wrote:
> Hi Olli,
>
> On Fri, Mar 22, 2019 at 02:50:03PM +0100, Oliver Fromme wrote:
> > Hallo Harold,
> >
> > Harold Gutch wrote:
> > > ich stehe gerade etwas auf dem Schlauch, ich will mir zu einem Paket
> > > das postinstall-Skript anzeigen lassen. Prinzipiell geht zwar so etwas
> > > wie "pkg info -R -F foo-1.2.3.txz", aber da sind die einzelnen Skripte
> > > "inline", außerdem liegt das Skript dort als ein String innerhalb
> > > eines JSON oder YAMLs vor und alles mögliche an Zeichen ist dann
> > > gequotet (z.B. ") und Newlines stehen dann in der Ausgabe als "\n".
> > >
> > > Klar, ich kann das ganze z.B. durch Python und das json-Modul jagen,
> > > aber gibt es da nichts "builtin" in pkg(8)?
> >
> > Vor genau demselben Problem stand ich auch schon. Es gibt
> > offenbar keinen „offiziellen“ Weg, um sich diese Skripte
> > anzeigen zu lassen. Daher habe ich vor einiger Zeit mal
> > ein Skript dafür gebastelt. ;-)
> >
> > http://inof.de/FreeBSD/scripts/pkg-script/
> >
> > Ruft man es mit dem Namen eines Pakts auf, werden die
> > verfügbaren Skripte aufgelistet:
> >
> > $ pkg-script joe
> > post-install
> > pre-deinstall
> >
> > Gibt man den Namen eines Skripts an, wird dieses ausgegeben:
> >
> > $ pkg-script joe post-install
> > case "etc/joe/ftyperc.sample" in
> > /*) sample_file="etc/joe/ftyperc.sample" ;;
> > *) sample_file="/usr/local/etc/joe/ftyperc.sample" ;;
> > esac
> > target_file="${sample_file%25.sample}"
> > [...]
>
> Praktisch, genau an so etwas dachte ich.
>
> Der innerste Kern deines Skripts macht quasi exakt dasselbe wie das
> womit ich mir vorhin auf die Schnelle beholfen habe (nur dass ich mich
> auf das absolute Mininum an Errorchecks beschränkt habe):
>
> pkg info --raw-format json -R
> -F /usr/ports/packages/All/apache24-2.4.38.txz | \
> python -c 'import json, sys; j = json.load(sys.stdin); \
> s = j.get("scripts"); \
> print s.get("post-install") if s else ""'
>
> Hätte ich keine guten Antworten bekommen dann hätte ich mir wohl auch
> heute Abend ein kleines Skript gebastelt, aber so greife ich jetzt
> gerne auf deins zurück.
>
> Super, vielen dank!

Ich habe mir gerade so beholfen:

echo $(pkg info -R --raw-format json vim | jq -a '.scripts."post-install"')

Das benötigt lediglich textproc/jq.

Gruß

Lars

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 28 Mar 2019 - 17:09:40 CET

search this site