Автор Тема: как се прави Slackware tgz пакет ?  (Прочетена 5238 пъти)

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
Знаете ли лесен начин как да си създам tgz пакет?
Трудното е да наслагам файловете в една директория (напр. /tmp/usr/ вместо /usr/). Не става с

Примерен код
./configure --prefix=/tmp/usr


защото програмата после ще си търси файловете не където трябва...

Питам, защото искам да си направя Live-CD на малък диск, а не искам да ми заема място gcc и компания.

В мoента съм си направил Live-CD на голям диск: vslive.hit.bg
Активен

soulcollector

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
как се прави Slackware tgz пакет ?
« Отговор #1 -: Feb 09, 2004, 19:59 »
Това е стандартния за Slackware начин, но за съжаление не винаги работи.
 $ configure --prefix=/usr
 $ make
 # make install prefix=/tmp/usr

По-добре използвай checkinstall.
$ configure --prefix=prefix
$ make
# checkinstall

А специално за Live-CD на малък диск виж SLAX
На официалната страница има скрипт за създаване на Live-CD
Активен

This place inside my brain
another kind of pain. (Korn)

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
как се прави Slackware tgz пакет ?
« Отговор #2 -: Feb 09, 2004, 20:11 »
Цитат (soulcollector @ Фев. 09 2004,20:59)
Това е стандартния за Slackware начин, но за съжаление не винаги работи.
 $ configure --prefix=/usr
 $ make
 # make install prefix=/tmp/usr

По-добре използвай checkinstall.
$ configure --prefix=prefix
$ make
# checkinstall

А специално за Live-CD на малък диск виж SLAX
На официалната страница има скрипт за създаване на Live-CD

Благодаря, ще пробвам с checkinstall
Само, че не ми стана ясно защо не винаги работи стандартния начин  '<img'>
Знам за SLAX, той ползва скриптовете Linux-Live. Използвам скриптовете на Slackware-Live, SLAX, Knoppix :-)
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
как се прави Slackware tgz пакет ?
« Отговор #3 -: Feb 09, 2004, 20:17 »
Какво значи това:
Цитат
NOTE TO SLACKWARE 8.0 USERS:

 Slackware 8.0 ships with a statically linked "ln", so any symlinks your installation process creates won't be detected and won't be included in your package. The way to fix this is to substitute your static "ln" for a dynamically linked one, like this one from a Slackware 7.1 installation.

 


не ми е ясно най-вече "statically linked "ln"". Това, че
/usr/bin/ln е символна връзка към /bin/ln ли е проблема?
Май не е това....
Активен

mironcho

  • Напреднали
  • *****
  • Публикации: 495
    • Профил
как се прави Slackware tgz пакет ?
« Отговор #4 -: Feb 09, 2004, 20:21 »
Checkinstall е най-доброто.
Иначе можеш да ползваш makepkg, обаче при компилацията не задавай:

configure --prefix=prefix

ами после след компилация напиши:

make prefix=/tmp/usr install
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
как се прави Slackware tgz пакет ?
« Отговор #5 -: Feb 09, 2004, 21:12 »
Цитат (mironcho @ Фев. 09 2004,21:21)
Checkinstall е най-доброто.
Иначе можеш да ползваш makepkg, обаче при компилацията не задавай:

configure --prefix=prefix

ами после след компилация напиши:

make prefix=/tmp/usr install

Ако при инсталацията не задам
Примерен код
configure --prefix=/usr

това ще е еквивалентно на
Примерен код
configure --prefix=/usr/local

и след като инсталирам програмата, тя ще си търси файловете не на /usr/share/programdata (където искам), а на /usr/local/share/programdata (където няма да има нищо).

Нали така? Или аз нещо не съм разбрал?
Активен

soulcollector

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
как се прави Slackware tgz пакет ?
« Отговор #6 -: Feb 10, 2004, 21:41 »
Правилно си разбрал prefix-a от ./configure трябва да е същия като на make install

Защо make install prefix=some_prefix не става винаги незнам,  но ми се е случвало да не работи.

Виж linuxpackages HOWTOs - Package HOWTO
Package Tools

(макар че може да си ги чел)
Активен

This place inside my brain
another kind of pain. (Korn)

mironcho

  • Напреднали
  • *****
  • Публикации: 495
    • Профил
как се прави Slackware tgz пакет ?
« Отговор #7 -: Feb 10, 2004, 22:33 »
Цитат (soulcollector @ Фев. 10 2004,22:41)
Защо make install prefix=some_prefix не става винаги незнам,  но ми се е случвало да не работи.

За приложенията за които не действа, може да се ползва и:

make install DESTDIR=/some_path

срещал съм и ROOT да се използва вместо DESTDIR.
Активен

peio

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
как се прави Slackware tgz пакет ?
« Отговор #8 -: Feb 10, 2004, 23:31 »
Всички пакети за Slackware 9.1 са компилирани с
CFLAGS="-O2 -march=i486 -mcpu=i686"
мисля, че когато се създават пакети за дистрибутиране е добра идея да се ползва същото , защото gcc оптимизира за платформата, на която се компилира и е много възможно това да създаде проблеми на други платформи.
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
как се прави Slackware tgz пакет ?
« Отговор #9 -: Feb 12, 2004, 20:26 »
Цитат (peio @ Фев. 11 2004,00:31)
Всички пакети за Slackware 9.1 са компилирани с
CFLAGS="-O2 -march=i486 -mcpu=i686"
мисля, че когато се създават пакети за дистрибутиране е добра идея да се ползва същото , защото gcc оптимизира за платформата, на която се компилира и е много възможно това да създаде проблеми на други платформи.

Това
CFLAGS="-O2 -march=i486 -mcpu=i686"
как да го задам? Може ли без да се редактира Makefile (с параметри на make или ./configure)?

гледах ./configure --help на MPlayer:
Цитат

Advanced options:
  --enable-mmx           build with MMX support [autodetect]
  --enable-mmx2          build with MMX2 support (PIII, Athlon) [autodetect]
  --enable-3dnow         build with 3DNow! support [autodetect]
  --enable-3dnowex       build with extended 3DNow! support [autodetect]
  --enable-sse           build with SSE support [autodetect]
  --enable-sse2          build with SSE2 support [autodetect]
  --enable-altivec       build with Altivec support (PowerPC) [autodetect]
  --disable-fastmemcpy   disable 3DNow!/SSE/MMX optimized memcpy() [enable]
  --enable-big-endian    Force byte order to big endian [autodetect]
  --enable-debug[=1-3]   compile debugging information into mplayer [disable]
  --enable-profile       compile profiling information into mplayer [disable]
  --disable-sighandler   disable sighandler for crashes [enable]
  --enable-i18n          _experimental_ gnu gettext() support [autodetect]
  --enable-dynamic-plugins  Enable support for dynamic a/v plugins [disable]


Ако задам --enable-mmx --enable-mmx2 --enable-3dnow --enable-3dnowex ще работи ли на всички процесори? Или трябва само едно да избера?

Бях пробвал да пусна MPlayer на стара машина (Pentium 166) и ми излезе съобщение за грешка, което не си спомням точно (май беше нещо за MMX).
Активен

peio

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
как се прави Slackware tgz пакет ?
« Отговор #10 -: Feb 12, 2004, 21:08 »
Цитат

Това
CFLAGS="-O2 -march=i486 -mcpu=i686"
как да го задам? Може ли без да се редактира Makefile (с параметри на make или ./configure)?

да, точно така :
Примерен код

CFLAGS="-O2 -march=i486 -mcpu=i686" ./configure


всички други опции, които си изброил се отнасят за възможностите на процесора:
Примерен код

cat /proc/cpuinfo | grep ^flags

и затова е стойността им [autodetect] защото компилатора сам може да разбере дали той ги поддържа или не.

проблемът идва в случаи, като твоя, когато компилирания пакет трябва да се използва на друга система и тук се стига до въпроса за най-малкото общо кратно между всички платформи, които си избрал да поддържаш.
примерно П. Волкердинг  е решил да прави пакетите  минимум за тези процесори, а човекът който прави пакетите за Dropline Gnome само за >= 686.

относно mplayer: тяхна политика е да разпростряняват сорс само и заради това, че като се компилира на дадената машина може да се изстиска максимума от нея. предполагам, че в кода се ползват множество инструкции специфични за отделните ахитектури и процесори. затова, ако би приел съвета ми е да направиш пакет, който съдържа сорса и инсталационен скрипт, който ще компилира и инсталира mplayer за системата.
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
как се прави Slackware tgz пакет ?
« Отговор #11 -: Feb 12, 2004, 22:36 »
В същност очаквах CFLAGS="-O2 -march=i486 -mcpu=i686" да е след ./configure а не преди...

Каква е разликата между -march и -mcpu?

Аз ще правя този пакет за да го ползвам по-късно за направа на Live-CD и не е много уместно да се компилира всеки път, когато се стартира Live-CD-то.
Не може ли по някакъв начин компилираната програма да е оптимизирана за всички възможни процесори? Или ще се наложи да инсталирам няколко пъти mplayer и да пиша скрипт, който проверява първо какъв е процесора и после пуска съответната версия   '<img'>
Активен

peio

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
как се прави Slackware tgz пакет ?
« Отговор #12 -: Feb 12, 2004, 23:15 »
Цитат
Каква е разликата между -march и -mcpu?

виж man страницата на gcc , трябва да преписвам от там иначе

Цитат
Не може ли по някакъв начин компилираната програма да е оптимизирана за всички възможни процесори?

Точно това е въпроса за най-малкото общо кратно на подържаните процесори. За Дебиан примерно този отговор е i386 , за Слак i486, за други i586 и i686. Въпрос на преценка на целева група от страна на този, който прави дистрибуцията.
Активен

vstoykov

  • Напреднали
  • *****
  • Публикации: 1286
  • Distribution: Ubuntu
  • Window Manager: Fluxbox
    • Профил
    • WWW
как се прави Slackware tgz пакет ?
« Отговор #13 -: Feb 13, 2004, 14:51 »
Като написах
Примерен код

checkinstall make install

ми се получи това в директорията install на пакета:

Примерен код

#
# doinst.sh, auto-generated by checkinstall-1.5.3
#

echo
cat /install/description

sed '/PACKAGE LOCATION/r /install/description' < "/var/log/packages/MPlayer-1.0pre3-i386-1" > description.tmp
mv description.tmp "/var/log/packages/MPlayer-1.0pre3-i386-1"
rm /install/description

( cd .; rm -rf 38 )
( cd .; ln -sf -> 38 )
( cd .; rm -rf 38 )
( cd .; ln -sf -> 38 )
( cd .; rm -rf 38 )
( cd .; ln -sf -> 38 )



Когато пробвах така:

Примерен код

make install DESTDIR=/pack
cd /pack/
makepak /mplayer.tgz


се получи пак нещо подобно:

Примерен код

( cd .; rm -rf 23 )
( cd .; ln -sf -> 23 )
( cd .; rm -rf 23 )
( cd .; ln -sf -> 23 )
( cd .; rm -rf 23 )
( cd .; ln -sf -> 23 )


В това не виждам никакъв смисъл... прави ми някакъв линк /- и празен файл /23
Активен

soulcollector

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
как се прави Slackware tgz пакет ?
« Отговор #14 -: Feb 13, 2004, 23:16 »
1. make install след checkinstall излишно. Само ако програмата се инсалира с друга команда е необходимо да използваш
# checkinstall command

2. По - добре използвай новата система на Slackware за описание на пакетите, т.е.
# checkinstall --newslack
Активен

This place inside my brain
another kind of pain. (Korn)

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Slackware QT проблем
Настройка на програми
kikcho 1 4767 Последна публикация Nov 11, 2002, 08:48
от mrvoland
Обновяване към Slackware 9.0
Хардуерни и софтуерни проблеми
FreeJak 3 4875 Последна публикация Mar 25, 2003, 00:53
от FreeJak
Slackware
Настройка на програми
ivo3d 1 3969 Последна публикация Mar 27, 2003, 23:53
от ivo3d
Slackware 9.0
Хардуерни и софтуерни проблеми
ivo3d 3 4319 Последна публикация Apr 07, 2003, 03:48
от ivo3d
Slackware 8.1
Настройка на програми
rip_darkman 1 3937 Последна публикация Aug 21, 2003, 08:59
от dafo