Hi Leute!
Warum gibt es dann Unterschiede? Das frage ich mich schon lange, war aber nie wichtig genug, hier zu fragen. Aber jetzt will ich es mal wissen:
Ich habe mir als Beispiel mal dwm herausgesucht. Ich baue mittlerweile alles via chroot, daher kommt jetzt hier kein makepkg vor.
$ makechrootpkg -n -c -r $CHROOT
[...]
$ ls -l /home/packages/dwm-6.1-3-x86_64.pkg.tar.xz
-rw-r--r-- 1 sekret users 27700 09.01.2017 23:18 /home/packages/dwm-6.1-3-x86_64.pkg.tar.xz
$ makechrootpkg -n -c -r $CHROOT
[...]
$ ls -l /home/packages/dwm-6.1-3-x86_64.pkg.tar.xz
-rw-r--r-- 1 sekret users 27684 09.01.2017 23:19 /home/packages/dwm-6.1-3-x86_64.pkg.tar.xz
Woher könnten diese Größenunterschiede kommen? Stören tut mich das nicht, ich kann es aber nicht nachvollziehen.
Mein erster Gedanke war, dass ccache damit was zu tun hat. Den habe ich aber für diesen Test deaktiviert. Dann wollte ich wissen, wie es mit der Binary /usr/bin/dwm aussieht.
$ ls -l /usr/bin/dwm
-rwxr-xr-x 1 root root 57216 Jan 9 23:25 /usr/bin/dwm
$ md5sum /usr/bin/dwm
fabdcbd5a1edfe5ca2c4f36b45dc6051 /usr/bin/dwm
$ ls -l /usr/bin/dwm
-rwxr-xr-x 1 root root 57216 Jan 9 23:25 /usr/bin/dwm
$ md5sum /usr/bin/dwm
fabdcbd5a1edfe5ca2c4f36b45dc6051 /usr/bin/dwm
Ok, die scheint exakt gleich zu bleiben, also liegt es an der Kompression des Pakets, also an xz. Aber wenn ein Kompressionsalgorithmus 2x denselben Input hat, warum kommt dann nicht dasselbe heraus?
Also ein anderer Test, mal Musik komprimieren:
$ flac2mp3
[...]
$ ls -l
total 31668
-rw-r--r-- 1 sekret users 11484879 09.01.2017 23:32 '01 serious.mp3'
-rw-r--r-- 1 sekret users 9296085 09.01.2017 23:32 '02 mania.mp3'
-rw-r--r-- 1 sekret users 11643706 09.01.2017 23:32 '03 silent goodbye.mp3'
$ rm *mp3
$ flac2mp3
[...]
$ls -l
total 31668
-rw-r--r-- 1 sekret users 11484879 09.01.2017 23:34 '01 serious.mp3'
-rw-r--r-- 1 sekret users 9296085 09.01.2017 23:34 '02 mania.mp3'
-rw-r--r-- 1 sekret users 11643706 09.01.2017 23:34 '03 silent goodbye.mp3'
Ok, das scheint zu passen. Btw, flac2mp3 ist ein Skript:
#!/bin/bash
preset=$(echo -e "standard\nextreme" | dmenu -i -p 'chose quality') || exit
for a in *.flac
do
ARTIST="$(metaflac "$a" --show-tag=ARTIST | sed 's/.*=//g')"
ALBUM="$(metaflac "$a" --show-tag=ALBUM | sed 's/.*=//g')"
TITLE="$(metaflac "$a" --show-tag=TITLE | sed 's/.*=//g')"
TRACKNUMBER="$(metaflac "$a" --show-tag=TRACKNUMBER | sed 's/.*=//g')"
if [ $(echo $TRACKNUMBER | grep "^.$") ]
then
TRACKNUMBER="0$TRACKNUMBER"
fi
GENRE="$(metaflac "$a" --show-tag=GENRE | sed 's/.*=//g')"
DATE="$(metaflac "$a" --show-tag=DATE | sed 's/.*=//g')"
COMMENT="$(metaflac "$a" --show-tag=COMMENT | sed 's/.*=//g')"
mkdir -p "$(echo $ARTIST | sed 's/\//-/g')/$(echo $DATE | sed 's/\//-/g') $(echo $ALBUM | sed 's/\//-/g')"
flac -c -d "$a" | lame \
--id3v2-only \
--ta "$ARTIST" \
--tl "$ALBUM" \
--tt "$TITLE" \
--tn "$TRACKNUMBER" \
--ty "$DATE" \
--tg "$GENRE" \
--tc "$COMMENT" \
--preset $preset \
- "$(echo $ARTIST | sed 's/\//-/g')/$(echo $DATE | sed 's/\//-/g') $(echo $ALBUM | sed 's/\//-/g')/$(echo $TRACKNUMBER | sed
's/\//-/g') $(echo $TITLE | sed 's/\//-/g')".mp3
done
cd "$(echo $ARTIST | sed 's/\//-/g')/$(echo $DATE | sed 's/\//-/g') $(echo $ALBUM | sed 's/\//-/g')"
(Wahrscheinlich hässlichst programmiert, aber tut was es soll ^^)
Danach habe ich mal mit xz diese mp3s zusammengequetscht:
$ xz -z -k *
$ ls -la
total 31624
-rw-r--r-- 1 sekret users 11469852 09.01.2017 23:34 '01 serious.mp3.xz'
-rw-r--r-- 1 sekret users 9277208 09.01.2017 23:34 '02 mania.mp3.xz'
-rw-r--r-- 1 sekret users 11631204 09.01.2017 23:34 '03 silent goodbye.mp3.xz'
$ md5sum *
83e5f24f686fed52a39387c2ec65b4fc 01 serious.mp3.xz
8636bcaefbf7fffd01a209c3d48d97ce 02 mania.mp3.xz
1871af66d6c563415a63f5fd5d7ce645 03 silent goodbye.mp3.xz
$ rm *xz
$ xz -z -k *
$ ls -la
total 31624
-rw-r--r-- 1 sekret users 11469852 09.01.2017 23:34 '01 serious.mp3.xz'
-rw-r--r-- 1 sekret users 9277208 09.01.2017 23:34 '02 mania.mp3.xz'
-rw-r--r-- 1 sekret users 11631204 09.01.2017 23:34 '03 silent goodbye.mp3.xz'
$ md5sum *
83e5f24f686fed52a39387c2ec65b4fc 01 serious.mp3.xz
8636bcaefbf7fffd01a209c3d48d97ce 02 mania.mp3.xz
1871af66d6c563415a63f5fd5d7ce645 03 silent goodbye.mp3.xz
Also bei mp3s erzeugt xz jedes Mal exakt dieselbe Datei.
ABER WARUM NICHT BEI PROGRAMMPAKETEN WIE AM BEISPIEL VON DWM???