Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Узнать менеджер пакетов для ОС


Автор: tishaishii 25.5.2012, 07:28
Идея: программа-установщик, которая доустанавливает требуемые программы.
Как узнать где находится программа-менеджер пакетов для данной ОС?

Автор: ChihPih 25.5.2012, 10:24
Раз у каждой ОС,и свой, то как вариант сделать базу, в которой будет хранится имя (а может путь или еще че) менеджера для каждой ОС.

Автор: ZeeLax 25.5.2012, 12:41
Узнать дистрибутив и версию ОС, оттуда уже плясать.

Автор: rsm 26.5.2012, 03:02
Цитата(ZeeLax @  25.5.2012,  14:41 Найти цитируемый пост)
Узнать дистрибутив и версию ОС, оттуда уже плясать

Подключив http://sourceforge.net/projects/libastral? Эта информация есть далеко не во всех дистрах smile

Я бы поставил вопрос иначе - зачем узнавать, какой менеджер пакетов? Ибо моя libastral рапортует, что ТС замышляет сделать что-то или крайне противоестественное, или даже злокозненное.

Автор: tishaishii 26.5.2012, 17:06
Вобщем, это отдельная программа получается. Перечислить возможные ОС, версии и сопоставить им свойственные им способы загрузки пакетов.
Тема же на поверхности. Наверное уж разработчики ПО для разного *nix этим вопросом занимались. Снова нужно быть изобретателем колеса. Нешто нет ничего?

Автор: Фантом 26.5.2012, 18:36
Цитата(tishaishii @  26.5.2012,  18:06 Найти цитируемый пост)
Вобщем, это отдельная программа получается. Перечислить возможные ОС, версии и сопоставить им свойственные им способы загрузки пакетов. Тема же на поверхности. Наверное уж разработчики ПО для разного *nix этим вопросом занимались. Снова нужно быть изобретателем колеса. Нешто нет ничего?


Эта идея для *nix несколько противоестественна. Соответственно, никому подобное просто не нужно.


Автор: tishaishii 28.5.2012, 09:22
Не понятно.
Ну вот я разрабатываю ПО для *nix. Противоестественно, что его нужно установить?

Автор: krypt3r 28.5.2012, 12:31
Цитата
Ну вот я разрабатываю ПО для *nix.

Разрабатывайте, далее создаете бинарные пакеты (RPM & DEB) под разные архитектуры (возможно, вместе с репозиториями), раздаете страждущим вместе с описанием, как ставится на конкретном дистре. Или создаете свой инсталлятор (типа дров от nvidia)

Автор: Фантом 28.5.2012, 12:57
Цитата(tishaishii @  28.5.2012,  10:22 Найти цитируемый пост)

Ну вот я разрабатываю ПО для *nix. Противоестественно, что его нужно установить? 

Нет, но установка бывает не только "как в Windows". Естественных вариантов два:
1) Выкладываете исходники вместе с инструкциями по сборке;
2) Сами собираете из этих исходников бинарные пакеты под некоторый набор дистрибутивов (как правило, наиболее популярных) и выкладываете уже их.

Второе собственно разработчиками делается редко, за Вас это сделают майнтейнеры дистрибутивов, если ПО окажется достаточно удачным.

Автор: rsm 28.5.2012, 16:19
Цитата(krypt3r @  28.5.2012,  14:31 Найти цитируемый пост)
Или создаете свой инсталлятор (типа дров от nvidia)

/* здесь по замыслу режиссёра должен раздаться неистовый вопль "NOOOOO!!! WHY WOULD YOU DO THAT?!! */

Лучше уж просто исходники, чем такой исталлятор smile

Автор: bilbobagginz 28.5.2012, 21:24
Цитата(tishaishii @  25.5.2012,  06:28 Найти цитируемый пост)
Идея: программа-установщик, которая доустанавливает требуемые программы.

это называется "пакет ПО". в каждом дистрибутиве это решается по-своему.
поэтому, практически все уважающие себя поставщики создают "родные" пакеты - под rpm, dpkg, pkgtool, и т.д.
в этом есть еще и элемент тестирования: если у тебя "генерный" установщик, а пакет будет бежать на 1й платформе, то ты его протестить можешь только на 1й платформе. И тогда, какого хрена его обзывать "генерным" ? несерьезно. и в добавок YAGNI.


Автор: Sholy 30.5.2012, 23:17
Код

check_system_type() {
    if [ ! "$ro_SYS_TYPE" = "" ]; then
        return 0
    elif [ -f /etc/debian_version ]; then
        ro_SYS_TYPE=debian
        ro_INIT_TYPE=sysv
    elif [ -f /etc/gentoo-release ]; then
        ro_SYS_TYPE=gentoo
        ro_INIT_TYPE=sysv
    elif [ -x /sbin/chkconfig ]; then
        ro_SYS_TYPE=redhat
        ro_INIT_TYPE=sysv
    elif [ -x /sbin/insserv ]; then
        ro_SYS_TYPE=suse
        ro_INIT_TYPE=sysv
    elif [ -f /etc/lfs-release -a -d /etc/rc.d/init.d ]; then
        ro_SYS_TYPE=lfs
        ro_INIT_TYPE=lfs
    elif [ -f /etc/pardus-release ]; then
        ro_SYS_TYPE=pardus
        ro_INIT_TYPE=pardus
    elif [ -f /etc/rc.d/rc.local ]; then
        ro_SYS_TYPE=unknown
        ro_INIT_TYPE=bsd
        ro_RC_LOCAL=/etc/rc.d/rc.local
    elif [ -f /etc/rc.local ]; then
        ro_SYS_TYPE=unknown
        ro_INIT_TYPE=bsd
        ro_RC_LOCAL=/etc/rc.local
    elif [ -d /etc/init.d ]; then
        ro_SYS_TYPE=unknown
        ro_INIT_TYPE=sysv
    else  # Perhaps we can determine what we need to know anyway though?
        echo 1>&2 "Unable to determine your Linux distribution"
        log "Unable to determine the Linux distribution"
        return 1
    fi
    return 0
}


source : VBoxLinuxAdditions.run 

Автор: rsm 31.5.2012, 03:22
У меня будет: "Unable to determine your Linux distribution" smile

Автор: tishaishii 31.5.2012, 05:52
Ну собственные сборки сейчас не очень интересны.
ПО для админов, а на работе эксперименты, обычно, не нужны. Так что вариант вполне подходящий.

Автор: Sholy 31.5.2012, 06:27
Цитата(rsm @ 31.5.2012,  03:22)
У меня будет: "Unable to determine your Linux distribution" smile

у меня так же на exherbo, pure systemd они не поддерживают даже если косить под что-то :(

Но принцип понятен   smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)