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