Hallo schon wieder,
ich bin gerade am ausmisten von Paketen. Dabei habe ich Probleme mit der Darstellung von langen Paketnamen mittels dpkg. Löschkadidaten sind z.b. Pakete namens '*emacs*' Ich will mir also die Pakete ausgeben lassen um sie per cut&paste hinter ein "dpkg --purge" zu werfen. Nur klappt das nicht so wie es sollte:
root@boss:~> dpkg -l|grep emacs ii xemacs21-bases 2001.07.09-2 Editor and kitchen sink -- compiled elisp su root@boss:~>
Ich verrate jetzt mal, daß das Paket eigentlich 'xemacs21-basesupport' heisst. dpkg schneidet die Namen auf einem 80 Zeichen breiten Terminal einfach ab. OK, nur wie bekomme ich den ganzen Namen heraus ohne die ganze Liste per Hand zu durchsuchen? Wenn ich mein rxvt richtig breit ziehe und mir die ganze Liste ausgeben lasse steht da:
root@boss:~> dpkg -l '*emacs*' ... ... ii xemacs21-basesupport 2001.07.09-2 Editor and kitchen sink -- compiled elisp support files ... ...
Jo, das klappt. Mich interessieren ja aber eigentlich nur die installierten Pakete, also sage ich:
root@boss:~> dpkg -l '*emacs*'|grep ^ii ii xemacs21-bases 2001.07.09-2 Editor and kitchen sink -- compiled elisp su root@boss:~>
und schon ist die dpkg-Ausgabe wieder verkrüppelt. Sobald dpkg seine Ausgabe in eine pipe schickt schnippelt er die Augabe so zurecht, als hätte er nur 80 Zeichen Platz. Kann man das irgendwie umgehen? So wie dpkg hier reagiert ist es für Verwendung in Skripten ziemlich untauglich.
Reinhard
On Fri Oct 12, 2001 at 22:32:49 +0200, Reinhard Foerster wrote:
und schon ist die dpkg-Ausgabe wieder verkrüppelt. Sobald dpkg seine Ausgabe in eine pipe schickt schnippelt er die Augabe so zurecht, als hätte er nur 80 Zeichen Platz. Kann man das irgendwie umgehen? So wie dpkg hier reagiert ist es für Verwendung in Skripten ziemlich untauglich.
$ COLUMNS=150 dpkg -l *emacs* | grep ^ii
oder
$ dpkg --get-selections | grep emacs
Adam
On Fri Oct 12, 2001 at 22:56:58 +0200, Reinhard Foerster wrote:
On Fri, Oct 12, 2001 at 10:39:44PM +0200, Adam Lackorzynski wrote:
$ COLUMNS=150 dpkg -l *emacs* | grep ^ii
geht. Ein Bug ist es mMn trotzdem. Wenn stdout kein tty is sollte man eigentlich die Zeikenlänge nicht begrenzen
Hmm, dann nimm in Script nicht "dpkg -l" sondern z.B. "dpkg --get-selections | grep ' install$'". "dpkg -l" scheint eher nur "Humans" zu sein als fuer maschinelle Weiterverarbeitung. Ein kurzer Blick in die Sourcen zeigt auch, dass da eine Breite von 80 fest eingebaut ist falls diese nicht via COLUMNS oder via ioctl kommt. Designflaw? Die Bugliste von dpkg ist auch ein bissel lang, so dass es keinen Spass macht, danach zu suchen... ;)
Adam
Am Freitag, dem 12. Oktober 2001 um 22:39:44, schrieb Adam Lackorzynski:
On Fri Oct 12, 2001 at 22:32:49 +0200, Reinhard Foerster wrote:
und schon ist die dpkg-Ausgabe wieder verkrüppelt. Sobald dpkg seine Ausgabe in eine pipe schickt schnippelt er die Augabe so zurecht, als hätte er nur 80 Zeichen Platz. Kann man das irgendwie umgehen?
$ COLUMNS=150 dpkg -l *emacs* | grep ^ii
Netter workaround fuer einen furchbar alten dpkg-Bug. Es gibt aber ein neues Frontend fuer dpkg, apt usw., was ich recht beeindruckend fand. Am besten mal auf lwn nachgucken...
oder
$ dpkg --get-selections | grep emacs
oder noch kuerzer:
ls /usr/doc/|grep emacs
;-)
Torsten
lug-dd@mailman.schlittermann.de