Rating@Mail.ru
IPB
Etersoft - from Windows to Linux
Etersoft
решения для перехода
с Windows на Linux
Дружественные сайты: alv.me и Rus-Linux.net

Здравствуйте, гость ( Вход | Регистрация ) Поиск · 

> Внимание!

Прочитайте перед тем, как задать вопрос:

при создании темы в этом разделе предполагается, что вы обладете базовыми знаниями о работе GNU/linux
и имеете представление об использовании средств настройки, предоставленных вашим дистрибутивом,
а также понимаете назначение и основные принципы работы используемых вами сервисов.

при создании темы с описанием проблемы
- полностью описывайте проблему
- описывайте свои действия, предпринятые для решения проблемы
- приводите свои конфиги, логи или сообщения об ошибках
- указывайте, пожалуйста, свой дистрибутив

если вы не уверены в своих знаниях - добро пожаловать в "Администрирование для начинающих".

 
Reply to this topic Start new topic
> slackware - установка пакетов в определенной последовательности
sunjob
bookmark
gyfbbdvkffmrljmmmwd
Jan 10 2017, в 22:45
Сообщение #1


Интересующийся новичок
Иконка группы

Сообщений: 91

Вставить имя   :   Цитата

Группа: Участники

Автор темы
добрый день!

вводная:

1. идет сборка большого списка пакетов (и установка в систему)
2. пакеты складируются в свой подкаталог (типа $PKG)

пока идет процесс "сборка и сопутствующая установка" - все нормально (никаких казусов)

проблема - установка "на конечной" машине

обычная установка/обновление ВСЕГО этого зоопарка обычно у слакварщиков делается что-то типа (ну или подобное)

Код
sudo /sbin/upgradepkg --reinstall --install-new $PKG/*.t?z
sudo /sbin/upgradepkg             --install-new $PKG/*.t?z

или что-то такое (взято как пример)

#!/bin/sh
for dir in a ap d e f k kde l n t tcl x xap y ; do
( cd $dir ; upgradepkg --install-new *.tgz )
done

есть пакет, который ставится первым (или около того) !!! НО !!! в списке, при использовании шаблона "*.t?z" он будет в конце, и, соотв. ставиться/обновляться он будет позже...

далее код и описание относительно этого пакета

код slackBuild-а (код ПРИМЕРНЫЙ, дающий примерное представление)

Код
mkdir -p LIB; cd LIB
for FILE in lib$x/*.so* ; do
ln -sf      lib$x/$(basename $FILE) .

дает код doinst.sh в пакете (код, так же, ПРИМЕРНЫЙ)

Код
( cd LIB ; rm -rf *.so*             )
( cd LIB ; ln -sf lib$x/*.so* *.so* )

если пакеты буду ставиться НЕ ПО СПИСКУ, то данный пакет, устанавливаясь позже "все прочих" - просто напросто нахрен удалит ВСЁ из каталога LIB, уже установленных до этого файлов

итак:
можно разбить на группы и ставить последовательно, как тут
Код
#!/bin/sh
for dir in a ap d e f k kde l n t tcl x xap y ; do
( cd $dir ; upgradepkg --install-new *.tgz )
done

но мне удобно хранить все в одном каталоге
пока решаю обычным списком и скриптом, который ставит пакеты в нужной последовательности

вопрос:
- кто как решает данную проблему?
- проблема ли эта?!
- свои мысли по этому поводу
- только станд. команды (installpkg, upgradepkg, removepkg)

можно ключ. словами, ссылками

спасибо


--------------------
если я ошибаюсь, то поправьте а не критикуйте :о)
Go to the top of the page
 
+Quote Post
yars
bookmark
gyfbbdvkffmrljmmmwd
Jan 11 2017, в 00:03
Сообщение #2


Slacker!
Иконка группы

Сообщений: 1070

Вставить имя   :   Цитата

ОС: Slackware64-current
Город: Тамбовская область

Группа: Участники

Взгляните в man installpkg, там есть интересная опция -tagfile:
Цитата
-tagfile /somedir/tagfile
Specify a different file to use for package priorities (in this example, /somedir/tagfile will be used). The default is "tagfile" in the package's directory.

На великом и могучем это значит следующее: "Указывает другой файл для приоритетов пакетов (в данном примере будет использован /somedir/tagfile). По умолчанию это "tagfile" в каталоге пакетов". Актуальный русскоязычный man в 14.2 есть из коробки, остальные могут (для поддерживаемых в данный момент выпусков Slackware) получить его там: http://slint.fr. Тегфайл имеет простейший формат: одна строка -- один пакет и его приоритет.
А вот за использование таким образом глоббинга в doinst.sh надо отрывать голову smile.gif Просто оставьте работу по генерации оного makepkg, и он сгенерирует doinst.sh с правильными ссылками.
P.S. Пакеты содержат одинаковые файлы?


--------------------
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010


Спасибо сказали:
Go to the top of the page
 
+Quote Post
sunjob
bookmark
gyfbbdvkffmrljmmmwd
Jan 11 2017, в 00:22
Сообщение #3


Интересующийся новичок
Иконка группы

Сообщений: 91

Вставить имя   :   Цитата

Группа: Участники

Автор темы
> получить его там: http://slint.fr
прикольненько : Эта страница ещё не существует...
дак вы мне предлагаете наполнить отсебя эту вики? :о)

> отрывать голову
еще интересненько, кому? :о)

> он сгенерирует doinst.sh с правильными ссылками
БЛИН... да вот он и генерирует такой код... я же для чего приводил в начале ТО ЧТО ПИШЕМ в слакбилде и ЧТО ФОРМИРУЕТ мейкпкг... :о)

про ТЕГФАЙЛ - пока еще не понял... в 2-3х словах можно поподробнее?

спасибо


--------------------
если я ошибаюсь, то поправьте а не критикуйте :о)
Go to the top of the page
 
+Quote Post
yars
bookmark
gyfbbdvkffmrljmmmwd
Jan 11 2017, в 09:50
Сообщение #4


Slacker!
Иконка группы

Сообщений: 1070

Вставить имя   :   Цитата

ОС: Slackware64-current
Город: Тамбовская область

Группа: Участники

Цитата(sunjob @ Jan 11 2017, в 00:22) *
прикольненько

http://www.linuxquestions.org/questions/sl...tml#post5645424
Didier начал переводить сайт на DokuWiki, старая версия теперь тут: http://slint.fr/old.

Цитата(sunjob @ Jan 11 2017, в 00:22) *
он сгенерирует doinst.sh с правильными ссылками
БЛИН... да вот он и генерирует такой код... я же для чего приводил в начале ТО ЧТО ПИШЕМ в слакбилде и ЧТО ФОРМИРУЕТ мейкпкг... :о)

Что-то меня смущает применение ln здесь. Повторяю, это обычно делает makepkg, и в слакбилде нужда делать линки возникает крайне редко.

Цитата(sunjob @ Jan 11 2017, в 00:22) *
про ТЕГФАЙЛ - пока еще не понял... в 2-3х словах можно поподробнее?

В каталог с пакетами кладется тегфайл, а в нем - список пакетов, по одному на строку, с тегом ADD после имени пакета через пробел. Потом делаем # installpkg -tagfile /path/to/tagfile *.t?z*.


--------------------
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010


Спасибо сказали:
Go to the top of the page
 
+Quote Post
sunjob
bookmark
gyfbbdvkffmrljmmmwd
Jan 11 2017, в 10:49
Сообщение #5


Интересующийся новичок
Иконка группы

Сообщений: 91

Вставить имя   :   Цитата

Группа: Участники

Автор темы
> в слакбилде нужда делать линки возникает крайне редко.
такая необходимось постояннААА (спорить не будем) :о)

про tagfile - весьма интересный инструмент, надо изучить

СПАСИБО

ВОПРОС ПО ХОДУ

имеется "стандартненький" такой пользовательский doinst.sh (кот. заготовкой лежит рядом со slackBuild-ом)

Код
#
# ldconfig
#
if [ -x sbin/ldconfig ]; then
chroot . /sbin/ldconfig 2> /dev/null
fi

#
# Update the desktop database:
#
if [ -x usr/bin/update-desktop-database ]; then
chroot . /usr/bin/update-desktop-database usr/share/applications > /dev/null 2>&1
fi

#
# Update hicolor theme cache:
#
if [ -d usr/share/icons/hicolor        ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
  chroot . /usr/bin/gtk-update-icon-cache -f -t usr/share/icons/hicolor 1> /dev/null 2> /dev/null
fi
fi

#
# Update the mime database:
#
if [ -x usr/bin/update-mime-database ]; then
chroot . /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi


по ходу в slackBuild-e делаются к.л. манипуляции, в результате makepkg формирует doinst.sh с содержанием
Код
#
# ldconfig
#
if [ -x sbin/ldconfig ]; then
chroot . /sbin/ldconfig 2> /dev/null
fi

#
# Update the desktop database:
#
if [ -x usr/bin/update-desktop-database ]; then
chroot . /usr/bin/update-desktop-database usr/share/applications > /dev/null 2>&1
fi

#
# Update hicolor theme cache:
#
if [ -d usr/share/icons/hicolor        ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
  chroot . /usr/bin/gtk-update-icon-cache -f -t usr/share/icons/hicolor 1> /dev/null 2> /dev/null
fi
fi

#
# Update the mime database:
#
if [ -x usr/bin/update-mime-database ]; then
chroot . /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi

#
# далее то, что навертели в slackBuild
#

( cd usr/bin ; rm -rf uic3-qt4 )
( cd usr/bin ; ln -sf /usr/lib64/qt-4.8.7/bin/uic3 uic3-qt4 )
( cd usr/bin ; rm -rf xmlpatternsvalidator-qt4 )
( cd usr/bin ; ln -sf /usr/lib64/qt-4.8.7/bin/xmlpatternsvalidator xmlpatternsvalidator-qt4 )
( cd usr/bin ; rm -rf qttracereplay-qt4 )
( cd usr/bin ; ln -sf /usr/lib64/qt-4.8.7/bin/qttracereplay qttracereplay-qt4 )
( cd usr/bin ; rm -rf uic-qt4 )
... бла бла бла


но, по идее "верхнюю часть, т.е. то, что было в пользовательском doinst.sh - надо бы вставить последней частью

вопрос: как это сделать, есть какие механизмы?


--------------------
если я ошибаюсь, то поправьте а не критикуйте :о)
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
Jan 11 2017, в 12:48
Сообщение #6


grammatikführer
Иконка группы

Сообщений: 12068

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

Группа: Модераторы разделов

Цитата(sunjob @ Jan 10 2017, в 22:45) *
код slackBuild-а (код ПРИМЕРНЫЙ, дающий примерное представление)

Код
mkdir -p LIB; cd LIB
for FILE in lib$x/*.so* ; do
ln -sf      lib$x/$(basename $FILE) .

дает код doinst.sh в пакете (код, так же, ПРИМЕРНЫЙ)

Код
( cd LIB ; rm -rf *.so*             )
( cd LIB ; ln -sf lib$x/*.so* *.so* )

Я ни черта не смыслю в слакопакетах, но если doinst.sh генерится слакбилдом, и получается такой вот результат, значит использовать таким образом глоббинг в слакбилде просто-напросто нельзя (о чём уже и написал yars). Поскольку файлов, соответствующих глобу, на момент генерации doinst.sh нет, он не раскрывается и FILE принимает значение "lib$x/*.so*" (а вот переменная $x должна была в любом случае раскрыться — тут Вы, вероятно, что-то слишком ПРИМЕРНО написали), и в таком виде и подставляется.
А вообще, давайте не ПРИМЕРНЫЕ, а реальные примеры.


--------------------
Пишите правильно:
в консоли
в общем
вообще
в течение (часа)
команда
новичок
пожалуйста
приемлемо
проблема
пробовать
репозиторий
трафик
Go to the top of the page
 
+Quote Post
sunjob
bookmark
gyfbbdvkffmrljmmmwd
Jan 11 2017, в 14:34
Сообщение #7


Интересующийся новичок
Иконка группы

Сообщений: 91

Вставить имя   :   Цитата

Группа: Участники

Автор темы
Цитата
... вероятно, что-то слишком ПРИМЕРНО написали ...
... давайте не ПРИМЕРНЫЕ, а реальные примеры ...


да, конечно слишком примерно... пока сам ковырялся в скриптах, выясняя причину, пока форум..., пока время... короче исходный код скрипта уже парепан/причесан и, вродек как, теперь дает ожидаемый результат, какой он был до этого, уже, блин :о) не вспомню ... (позже выяснилось, что это наследие прежнего слакбилда)
но если наткнусь на "собачью порытость", то сделаю выкус с кодом :о)

спасибо

зы
косячных слакбилдов не нашел, все уже парепаны, оставлены только нормальные пакеты... нашел записи в "журнале", очевидность косяка на лицо

Код
код slackBuild
#
# Link the shared libraries
#
mkdir -p $PKG${TDE}/lib${x}; cd $PKG${TDE}/lib${x}
for FILE in BLAH_BLAH/lib$x/*.so* ; do
ln -sf lib$x$(basename $FILE) .

формирует doinst.sh/АВТООЧИСКУ вообще всего каталога /opt/trinity/lib64/*

( cd opt/trinity/lib64 ; rm -rf *.so* )
( cd opt/trinity/lib64 ; ln -sf tqt3-R14.0.4/lib/*.so* *.so* )


спасибо за помощь


--------------------
если я ошибаюсь, то поправьте а не критикуйте :о)
Go to the top of the page
 
+Quote Post
bormant
bookmark
gyfbbdvkffmrljmmmwd
Jan 11 2017, в 20:49
Сообщение #8


Свой человек
Иконка группы

Сообщений: 1022

Вставить имя   :   Цитата

Группа: Участники

sunjob
вы смогли поставить в тупик. Нет, не сутью вопроса, с сутью-то как раз все понятно.
Просто вопрос задан на пачке форумов. Отвечать на всех одним и тем же -- хм, фигня какая-то.

Из того, что мне известно на момент написания этого сообщения, могу сказать следующее.

1) "тема" к "проблеме" отношения не имеет.
Общий посыл: иногда нужно поставить одни пакеты раньше других.
Решение: README. Пример: см. UPGRADE.TXT от 7 до 14.2 -- везде одно и то же, человеческим по фоновому написано:
сначала обновите/поставьте вот эти 5 пакетов, потом все остальное:
Код
1.  Upgrade your glibc shared libraries.  This is important, or things
    might go haywire during the next part of the upgrade:

    upgradepkg /root/slackware/a/glibc-solibs-*.txz

2.  Upgrade your package utilities and related tools:

    upgradepkg /root/slackware/a/pkgtools-*.txz
    upgradepkg /root/slackware/a/tar-*.txz
    upgradepkg /root/slackware/a/xz-*.txz
    upgradepkg /root/slackware/a/findutils-*.txz


3.  Upgrade everything else (and install new packages):

    upgradepkg --install-new /root/slackware/*/*.t?z

2) "проблема" в кривых как турецкая сабля пакетах
Дело в следующем:

2.1) пакеты Slackware несут в себе сценарий install/doinst.sh, который исполняется пакетным менеджером после распаковки пакета в ФС;

2.2) сценарии doinst.sh в примере сделаны криво
суть:
-- есть незащищенный фрагмент, который должен сделать симлинки на библиотеки из одного места в другое
-- в источнике библиотек не оказалось по той или иной причине
-- в источнике библиотек не оказалось, и "for FILE in blah/*.so.*; do" дает создать симлинк, содержащий целью дикую карту
-- makepkg проходит по симлинкам и пишет в "inslall/doinst.sh" код создания симлинка по перечню симлинков -- получить цель, записать
Код
( cd LIB ; rm -rf *.so*             )
( cd LIB ; ln -sf lib$x/*.so* *.so* )

Естественно, там, откуда это формируется, никакие маски недопустимы.
Естественно, в том, что сформировано, никакие маски недопустимы.
Естественно, обсуждаем мы внутреннюю разработку и способы исправления ошибки потенциального разработчика пакета (потенциального мейнтейнера пакета) Slackware.

Естественно, что контролировать это должен автор SlackBuild-а, но у ТС пока не получается.

2.3) предпринята попытка полечить следствия (порядок установки), а не причину (кривое локальное дерево пакета)

2.4) самая мякотка будет при удалении пакета с таким doinst.sh

Еще раз, суть темы -- это не использование Slackware, это попытка стать сопровождающим своих пакетов.
Пока что неудачная (есть желание, не хватает знаний, нет понимания, навыков -- но это всё преходяще).
По сути проблемы ответы даны на одном из профильных форумов: slackware.ru. Копировать это всюду -- нет ни сил ни желания.


Спасибо сказали:
Go to the top of the page
 
+Quote Post
sunjob
bookmark
gyfbbdvkffmrljmmmwd
Jan 12 2017, в 01:27
Сообщение #9


Интересующийся новичок
Иконка группы

Сообщений: 91

Вставить имя   :   Цитата

Группа: Участники

Автор темы
уважаемый бормант!

Цитата
вы смогли поставить в тупик

- а то!!! надеюсь это не запрещено задавать детские вопросы и получать на них взрослые ответы!

1. изначально меня интересовало именно то, что было заявлено в теме, были заданы именно соотве. вопросы итд. итп
2. да, по ходу суть разговора была смещена, а что в этом такого плохого? уточняющие вопросы - уточняющие ответы, кот. помогли проблему рассмотреть более глубоко и правильно!
3. да, я публикую свои вопросы на нескольких форумах! даже для ребенка - очевидно, что так ответЯт и бОльше и бЫстрее и бОлее полно итд итп (добавить по вкусу)
форумы для этого и существуют...
4.
Цитата
Копировать это всюду
это то зачем? можно - вставить ссылку! (это, надеюсь, не криминал)
5.
Цитата
стать сопровождающим своих пакетов.
- не своих а чужих, своими они становятся после полного переписывания!!! :о)

сразу вспомнил КВН...
- капитан козлов...
- не козлов, а игроков


спасибо форуму за помощь
мой низкий поклон...


--------------------
если я ошибаюсь, то поправьте а не критикуйте :о)
Go to the top of the page
 
+Quote Post

 Reply to this topic Start new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 21st January 2017 - в 01:01




Rating@Mail.ru