задача, модернизировать vlc.SlackBuild таким образом так, что бы установка было возможна в каталог по выбору
- /usr
- /usr/local
- /opt/vlc-xxx
ну или куда еще, так сказать "аналогично маковским программам", все при себе, не используя системных библиотек (по возможности), каталогов итд
библиотеки и кодеки линкуются статически
далее, в скрипте есть такое определение
VLCDEPSDIR="$TMP/tmp-$PRGNAM/vlcdeps"
каталог для временной установки библиотек, с которыми будет линковаться vlc
конфигурация всех библиотек примерно такая:
./configure \
--prefix=$VLCDEPSDIR/usr \
--libdir=$VLCDEPSDIR/usr/lib${LIBDIRSUFFIX}
тут все понятно, конфигурим и устанавливает соответственно во временный библиотечный каталог
////////////////////////////////////////////////////////////////////////////////
### VPX
далее библиотека VPX
make_vpx()
{
./configure \
--disable-install-bins \
--disable-install-srcs \
--disable-install-libs \
--disable-debug-libs \
--enable-postproc \
$ARCHOPTS \
make -j${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_vpx.log
# Install libvpx into a temp location so vlc can pickup the library
make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_vpx.log
тут вообще полный алец-капуть
в конфигураторе ни каких "подходящих" ключей и устанавливается "по умолчанию" - сразу в систему
цель и задача озвучена в начале (что бы не повторяться)
советовать "просто так собрать и посмотреть" не надо, во первых сборка идет около 2х часов, во вторых это уже не раз делалось
вопрос конкретный: модернизация скрипта, что, возможно я делаю не так (в плане модернизации)
или посоветуйте где почитать о "сборке самодостатоных приложений"
алиеновские скрипты не всегда идеальны, особенно в случае с vlc, возможно, на соотв. тачке и соотв. конфигурации системы все ок
считаю что необходимо все предусмотреть, разобраться с непонятками, выслушать советы и комментарии, что бы двинуться далее
высказывайтесь по делу, не флудите, пожалуйста, не надо уподобляться обезьянам и давайте гордо нести наше звание "человек разумный"
золотое молчание приветствуется :о)
как говориться найдите пять отличий получите конфекту :lol:
... во-первых ".. нахрена нам ВТО ? мы и так всё выполняем ! ..." как говорит один известнейший человек .. если вы плохо прочитали анотацию в слакбилде , то извиняйте проблемы негров шерифа не волнуют .
... во-вторых чем вас не устроил оригинальный же слакбилд ? Вы по наивности полагаете что при сборке все кодеки и либы идут в основное дерево системы ?
разуверю вас , вот листинг готового пакета vlc :
как видите всё что входит в vlc полностью изолировано от основной системы , другими словами , если в vlc опционально идет к примеру ffmpeg , но у вас в системе он не установлен , то кроме как из самого vlc вы его вызвать не сможете , так как он является интегрированой частью vlc .
может я невнимательно почитал первый пост ? , что вы собственно хотите , кроме того что переопределить корневой каталог установки ?
чтобы это сделать достаточно изменить только это :
text
TMP=${TMP:-"/tmp/build"}
PKG=$TMP/package-$PRGNAM
PKG2=$TMP/package-$PRGNAM-$PRGNAM2
OUTPUT=${OUTPUT:-"/tmp"}
............................
и это :
## Add the icons to be used in menu entries:
#mkdir -p $PKG/usr/share/pixmaps
#convert share/vlc512x512.png -resize 64x64 $PKG/usr/share/pixmaps/vlc.png
#for res in 16 32 48 64 128; do
# mkdir -p $PKG/usr/share/icons/hicolor/${res}x${res}/apps
# convert share/vlc512x512.png -resize ${res}x${res} \
# $PKG/usr/share/icons/hicolor/${res}x${res}/apps/vlc.png
#done
# Add the man page:
mkdir -p $PKG/usr/man/man1
gzip -9c doc/vlc.1 > $PKG/usr/man/man1/vlc.1.gz
# Remove traces of our temporary install location from libtool files:
find $PKG/usr/lib${LIBDIRSUFFIX} -name "*.la" -o -name "*.pc" \
| xargs sed -i -e "s#$VLCDEPSDIR##g"
# Add package documentation:
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
mv $PKG/usr/share/doc/vlc/* $PKG/usr/doc/$PRGNAM-$VERSION || true
rm -rf $PKG/usr/share/doc
cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION || true
# Add all the supporting packages' documentation too:
cp -a $VLCDEPSDIR/doc/* $PKG/usr/doc/$PRGNAM-$VERSION || true
# Add the SlackBuild as well as all patches we used to create the package:
cat $SRCDIR/$(basename $0) > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
( cd $SRCDIR
tar -zcf $PKG/usr/doc/$PRGNAM-$VERSION/${PRGNAM}_slackware_patches.tar.gz \
*.diff *.patch ltablex.sty
)
find $PKG/usr/doc -type f -exec chmod 644 {} \;
chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION/*
# Compress the man page(s):
if [ -d $PKG/usr/man ]; then
find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
fi
# Add a package description:
mkdir -p $PKG/install
cat $SRCDIR/slack-desc > $PKG/install/slack-desc
if [ -f $SRCDIR/doinst.sh ]; then
cat $SRCDIR/doinst.sh >> $PKG/install/doinst.sh
fi
if [ -f $SRCDIR/slack-required ]; then
cat $SRCDIR/slack-required > $PKG/install/slack-required
fi
# Build the package:
cd $PKG
makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.${PKGTYPE} 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log
cd $OUTPUT
md5sum ${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.${PKGTYPE} > ${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.${PKGTYPE}.md5
cd -
cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.txt
if [ -f $PKG/install/slack-required ]; then
cat $PKG/install/slack-required > $OUTPUT/${PRGNAM}-$(echo $VERSION |tr '-' '.')-${ARCH}-${BUILD}${TAG}.dep
fi
ну во первых, конечно же спасибо что похвастались, так разрекломировались, я прямо таки изучил все ваши дактилоскоптитческие прелести, шо могу теперь вам нагадать вашу судьбинушку...:о) теперь же, неадеюсь, вы заберете все ваши оконечности из моего монитора и начнем дышать ровно и спокойно :о)))))))))
теперь по делу
>>... во-вторых чем вас не устроил оригинальный же слакбилд ?
>> Вы по наивности полагаете что при сборке все кодеки и либы идут в основное дерево системы ?
>> разуверю вас , вот листинг готового пакета vlc
- прочитайте еще раз внимательно топик
- по наивности я не полагаю... опять таки еще раз читаем топик вдумчиво
- о дереве системы:
/usr/bin
/usr/lib
/usr/include etc...
это перестало быть системным деревом? еще раз читаем топик, на этот раз включаем монитор, если не помогло, подсказака - а что там говорится о "макось подобном подходе создания пакетов"? применительно к линуксу - каталог /opt/xxx
так, читаем дальше..., нет не то, там далее словоблудие...
ага, вотс:
>> может я невнимательно почитал первый пост ?
золотая мысль :о)
и окончание...
я два раза (зачеркнуто, исправлено на три) пересмотрел ваш кодо-выкус и не нашел там ни
/opt/$NAME-$VERISON
ни переменной
$PREFIX
которую я определил как каталог установки
принципиально нового и дельноно не нашел (пусть даже так - не смог увидеть :о)
ps
если вы все же переосилите себя и еще раз ознакомитесь и перечитаете топик, то наткнетесь на описание библиотеки, которая устанавливается в систему, а не во временный каталог... это до сих пор остается загадкой, почему именно так?
нашел "--enable-static --disable-shared", но до этого уже дошел сам :о)
если я что то не понимаю, или не знаю, прошу высказываться без заносчивого тона, так мы быстрее найдем общий язык и как следствие поймем др/др-га и найдем решение, можно дать ключевые слова, ссылки итд...
спасибо за ответ, терпение... но пока говрим как то на разных частотах, если действительно не понятно что я тут задумал, давайте в личке пообщаемся, что бы не заваливать тут лишним
начните внимательно изучать слакбилд вот с этой строчки ( воспользуйтесь поиском ) строка 1155 столбец 14 [ЕМНИП]
text
sh bootstrap
и далее до конца .
остальное вам уже разжевали на http://www.slackware.ru
а хамить и тролить не надо - много о себе думаете , разбирайтесь сами если умнее всех ...
начните внимательно изучать слакбилд вот с этой строчки ( воспользуйтесь поиском ) строка 1155 столбец 14 [ЕМНИП]
text
sh bootstrap
и далее до конца .
остальное вам уже разжевали на http://www.slackware.ru
а хамить и тролить не надо - много о себе думаете , разбирайтесь сами если умнее всех ...
да перерыл уже весь слакбилд
зы внимательно читаем свое выступление... это по поводу хамства и троля, я еще раз предлагаю начать нормально общаться, не ужели не понятно
нам всем не очень нравится когда нам хамят и мы все очень не сильно замечаем когда сами тролим и хамим
засим, еще и еще раз предлагаю начать конструктивную критику и дилог? нет так нет, конечно же сам буду разбираться, докавыряю и выложу суда... ежели не сдохзну от опухшего мозга :о)
мысли? ну... думаю посмотреь еще пару раз внимательно...
кавыряюсь.. что сказать...
с бибилотекой которая в систему ставится - не понятно пока вообще на все 100%
почему устанавливается то? это обычная либа, которая может быть установлена во временный каталог, другое дело что "есть особенности сборки vlc который будет исктаь именно в системе"... короче пока в запое... ищу... :о)
мысли? ну... думаю посмотреь еще пару раз внимательно...
кавыряюсь.. что сказать...
с бибилотекой которая в систему ставится - не понятно пока вообще на все 100%
почему устанавливается то? это обычная либа, которая может быть установлена во временный каталог, другое дело что "есть особенности сборки vlc который будет исктаь именно в системе"... короче пока в запое... ищу... :о)
make_vpx()
{
./configure \
--disable-install-bins \
--disable-install-srcs \
--disable-install-libs \
--disable-debug-libs \
--enable-postproc \
$ARCHOPTS \
make -j${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_vpx.log
# Install libvpx into a temp location so vlc can pickup the library
make install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_vpx.log
тут же идет установка по умолчанию? или я ошибаюсь
щас глянуть не могу ключи конфигуратора.... возможно что там проявится
я два раза (зачеркнуто, исправлено на три) пересмотрел ваш кодо-выкус и не нашел там ни
/opt/$NAME-$VERISON
ни переменной
$PREFIX
которую я определил как каталог установки
Вам предлагалось это вписать самостоятельно в процитированную часть.
Посыл простой -- vlc, сконфигурированный с --prefix=$PREFIX и без прочих ...dir целиком в $PREFIX же и будет собираться/ставиться, следовательно, потребует корректировки последующих действий по формированию пакета -- раскладыванию конфигов, документации и прочего. Всё, что до того момента, менять не требуется.
Именно об этом Вам сказали, приведя тот кусок слакбилда, который нужно корректировать соответствующим образом.
В качестве совета: часть слакбилда (например, удаление исходников и результатов сборки) на время отладки полезно отключать, например, с помощью if/fi, чтобы при ошибке не начинать всё с самого начала, а скорректировав ошибочное действие, продолжать заниматься делом...
а!!! я тормоз, признаюсь... ну примерно так я и предпологал (и что тормоз и про раскладывание хахаряшек в каталоге $PREFIX)
спасибо
но вот остатся пока не понятно, что же делать с либой vpx, которая ставится в систему
для чего? можно конечно в коде после сборки пакета ее же и удаплить тамо же, но не люблю делать "на авось" не понимая точной картины: что зачем и почему
sunjob,
тут надо отметить, что на самом деле "сборка в систему", то есть в системные /etc, /usr, ... требует некоторых "приседаний" по "вытягиванию" структуры на верхний уровень в виде
в то время как желаемый т.с. вариант достаётся нам совсем даром:
--prefix=/opt/vlc \
и удалив {lib,sysconf,man,doc,localstate}dir из configure, получим всё в /opt/vlc на автомате (возможно, стоит --sysconfigdir=/etc и --mandir=/usr/man отставить).
Только остаток скрипта после make DESTDIR=... install , рассчитан на другое поведение, именно его Вам gramozeka предлагал исправить.
gramozeka,
про отключение -- это когда до make DESTDIR=... install всё проделано, а на последующих шагах что-то не учли, не то или не туда скопировали -- всё пересобирать ради этого не стоит. Вот потому и говорю, что в таких случаях бывает полезен "goto на точку после make install", который обычно несколькими if-ами легко достигается.
Если по-быстрому нужен результат, то остальное и руками в mc недолго раскидать/доделать...
Если по-быстрому нужен результат, то остальное и руками в mc недолго раскидать/доделать...
меня то это не заморачивает уже давно , я билды уже как года два сам пишу если нужны (кайру-дока к примеру с нуля замастырил )... :D
а vlc замечательно живет в системе как в Слаке все остальные пакеты живут и никому не мешает .. ну каждый_сам_себе_сами_кто wink
vlc замечательно живет в системе как в Слаке все остальные пакеты живут и никому не мешает .. ну каждый_сам_себе_сами_кто wink
попробуй "замечательно" поставить несколько версий этого самого vlc-плеера (уж и не спрашивай зачем такой изврат :о)
и вся замечательность сразу куда то девается ...
выход из положения - сборка соотв. пакета с альтернативным каталогом
если у вас есть свое видение, высказывайте
зы я тоже могу вставить картинку с 5ю запущенными плеерами, разных версий.
только к чему это? топик совсем не для этого