Russian Qt Forum

Qt => Вопросы новичков => Тема начата: virtual_root от Сентябрь 24, 2012, 09:39



Название: linux список установленных программ
Отправлено: virtual_root от Сентябрь 24, 2012, 09:39
Добрый день ребята. Подскажите пожалуйста, как узнать установлена в Linux та или иная программа? Или получить список установленых программ? Я что-то ищу-ищу по интернету ни ничего не могу найти..хоть бы какие функции использовать знать..


Название: Re: linux список установленных программ
Отправлено: Пантер от Сентябрь 24, 2012, 09:43
Это зависит от конкретного менеджера пакетов. Ты дистрибутив скажи.


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 24, 2012, 09:48
linux CentOS-6.2
А нет какой-нибудь api функции с помощью которой можно получить сведения об установленных программах?
Я что-то ищу ищу но пока ничего именно об этом не нашла..


Название: Re: linux список установленных программ
Отправлено: kuzulis от Сентябрь 24, 2012, 09:51
Цитировать
linux CentOS-6.2
см. в сторону RPM, если не изменяет память

Цитировать
А нет какой-нибудь api функции с помощью которой можно получить сведения об установленных программах?
Нету


Название: Re: linux список установленных программ
Отправлено: Пантер от Сентябрь 24, 2012, 09:51
Нет, такого нет. Это Линкс. :)
Вот пакетный медеджер в центосе http://ru.wikipedia.org/wiki/Yellow_dog_Updater,_Modified


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 24, 2012, 09:57
спасибо ребята)


Название: Re: linux список установленных программ
Отправлено: Hellraiser от Сентябрь 24, 2012, 10:11
Для CentOS надо парсить вывод команды
Код
Bash
yum list installed


Название: Re: linux список установленных программ
Отправлено: GreatSnake от Сентябрь 24, 2012, 11:12
либо
Код
Bash
rpm -qa


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 24, 2012, 13:03
спасибо, именно последней командой и воспользовалась. Ну всё-таки хотелось узнать, может можно как-то получить информацию о том уставлен ли тот или иной пакет в системе, кроме как исполнять команду и парсить её вывод? Мне нужно узнать установлен ли у пользователя на машине Postgress...
в windows можно по ветке в реестре пройтись и перебрать все установленные программы, неужели в линуксе ничего подобного нет?


Название: Re: linux список установленных программ
Отправлено: Пантер от Сентябрь 24, 2012, 13:06
Можно демон проверить, можно на порт постучать дефолтный...


Название: Re: linux список установленных программ
Отправлено: GreatSnake от Сентябрь 24, 2012, 13:17
Можно демон проверить, можно на порт постучать дефолтный...
Имхо, скорее-всего проверять нужно не наличие сервера, а клиента)


Название: Re: linux список установленных программ
Отправлено: Hellraiser от Сентябрь 24, 2012, 14:44
Для конкретного пакета можно указать его имя, например
Код
Bash
rpm -q postgresql
или
Код
Bash
yum list installed postgresql
Но может лучше указать это в зависимостях для своего пакета?


Название: Re: linux список установленных программ
Отправлено: Пантер от Сентябрь 24, 2012, 14:52
Но может лучше указать это в зависимостях для своего пакета?
+100500.
В Линуксе принято так делать. А дальше пусть разбирается пакетный менеджер.


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 24, 2012, 14:53
А как так сделать не подскажите?


Название: Re: linux список установленных программ
Отправлено: Hellraiser от Сентябрь 24, 2012, 15:08
Посмотри здесь (http://www.lexpr.ru/node/11)  и здесь (http://www.opennet.ru/base/sys/rpm_create.txt.html). Гугл рулит  :)


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 24, 2012, 15:33
Ребята, а у меня появилась идея. Можно ли написать скрипт который qmake который будет разворачивать мне мою систему? Слышала что на cmake такое можно сделать. Но правда никогда не занималась подобным. Кто-нибудь уже делал что-то подобное? Может что-то ценное подскажет) Мне нужно с помощью qmake сформировать файл настроек, проверить наличие необходимых пакетов и выдать предупреждающие сообщения.


Название: Re: linux список установленных программ
Отправлено: Пантер от Сентябрь 24, 2012, 15:41
qmake не для этого. Читай про формат пакета rpm. Так же, почитай про checkinstall.


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 24, 2012, 15:44
ага, спасибо)


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 26, 2012, 14:18
делаю rpm пакет. И у меня возни вопрос при стадии изучения ряда статей о том как создать такой пакет. Получается что rpm пакет должен создаваться из исходников? т.е. мои исходные файлы проекта должны компилироваться без ошибок и я должна их упаковать в архив, затем положить в папку /RPM/SOURCES/
А можно ли сделать этот пакет не из исходников, а из бинарника и рядом лежащих с ним dll для его запуска и работы ?


Название: Re: linux список установленных программ
Отправлено: Пантер от Сентябрь 26, 2012, 14:22
Плохо читаешь. В rpm помещаются бинарники.


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 26, 2012, 14:24
а куда их нужно поместить? Я что-то не могу никак найти...


Название: Re: linux список установленных программ
Отправлено: Пантер от Сентябрь 26, 2012, 14:30
Гугл в помощь же.
http://www.opennet.ru/base/sys/rpm_create.txt.html


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 26, 2012, 17:14
я справилась с задачей наполовину) пакет у меня успешно создается, только вот при установке мне не выдается почему-то что я должна сначала установить postrgesql. Может я что-то не так в spec файле указала? Подскажите, пожалуйста!
Код:
Name: node
Version: 1.0
Release: 99
Summary: A sample package, saying node
Group: Applications/Productivity
License: GPL
Requires: PostgreSQL
%description
This package basically does nothing, but it potentially could
do something useful.
%files
/node
/node.1
/README.txt


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 27, 2012, 10:18
Ребята, подскажите как сделать так чтобы rpm пакет собрался без зависимостей от qt-шных библиотек? Я их в спец. файле прописала и рядом положила и все равно при сборке вижу такой вывод:
Код:
rpmbuild --target i386  -bb node.spec
Платформы для сборки: i386
Сборка для платформы i386
Processing files: node-1.0-99.i386
unknown, 0: Warning: using regular magic file `/etc/magic'
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libQtCore.so.4()(64bit) libQtGui.so.4()(64bit) libQtNetwork.so.4()(64bit) libQtSql.so.4()(64bit) libQtXml.so.4()(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.4)(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) liblog4cplus-1.0.so.4()(64bit) libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libstdc++.so.6(GLIBCXX_3.4)(64bit) libstdc++.so.6(GLIBCXX_3.4.9)(64bit) rtld(GNU_HASH)
Проверка на неупакованный(е) файл(ы): /usr/lib/rpm/check-files /home/urivskay/RPM/buildroot/node-root
Записан: /home/urivskay/RPM/RPMS/i386/node-1.0-99.i386.rpm
Выполняется(%clean): /bin/sh -e /var/tmp/rpm-tmp.pTXcfN
+ umask 022
+ cd /home/urivskay/RPM/BUILD
+ /bin/rm -rf /home/urivskay/RPM/buildroot/node-root
+ exit 0
вот мой спец. файл:
Код:
Name: node
Version: 1.0
Release: 99
Summary: A sample package, saying node
License: GPL
Requires: postgresql-server-dev-9.1
%description
This package basically does nothing, but it potentially could
do something useful.
%files
/node
/node.1
/README.txt
/libQtGui.so.4
/libQtCore.so.4


Название: Re: linux список установленных программ
Отправлено: Пантер от Сентябрь 27, 2012, 10:35
Нельзя их класть рядом. Пропиши зависимости.


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 27, 2012, 11:40
прописала, но теперь пакет даже не собирается.. говорит неудовлетворенная зависимость...
Код:
Name: node
Version: 1.0
Release: 99
Summary: A sample package, saying node
License: GPL
Requires(post): postgresql-server-dev-9.1
BuildRequires: libQtCore.so.4
%description
This package basically does nothing, but it potentially could
do something useful.
%files
/node
/node.1
/README.txt
%{_libdir}/libQtGui.so.4
%{_libdir}/libQtCore.so.4
и меня смущает путь по которому он ищет %{_libdir}/libQtGui.so.4. Я не понимаю откуда он его берет???
Код:
rpmbuild --target i386  -bb node.spec
Платформы для сборки: i386
Сборка для платформы i386
Processing files: node-1.0-99.i386
ошибка: Файл не найден: /home/urivskay/RPM/buildroot/node-root/usr/lib/libQtGui.so.4
ошибка: Файл не найден: /home/urivskay/RPM/buildroot/node-root/usr/lib/libQtCore.so.4


Ошибки сборки пакетов:
    Файл не найден: /home/urivskay/RPM/buildroot/node-root/usr/lib/libQtGui.so.4
    Файл не найден: /home/urivskay/RPM/buildroot/node-root/usr/lib/libQtCore.so.4
почему он дописывает всё время этот путь  /home/urivskay/RPM/buildroot/node-root/ ??? ?


Название: Re: linux список установленных программ
Отправлено: Пантер от Сентябрь 27, 2012, 11:44
Это не BuildRequires, а Requires(post)


Название: Re: linux список установленных программ
Отправлено: virtual_root от Сентябрь 27, 2012, 14:58
я сделала так, но всё равно не могу избавиться от зависимости библиотек... Подскажите, пожалуйста, как мне сделать так чтобы на пустой машине моя программа легко устанавливалась и не требовала этих библиотек от меня, мне нужно чтобы они были вшиты в неё или вместе с ней поставлялись...
Код:
Name: nodeServer
Version: 1.0
Release: 99
Summary: A sample package, saying node
License: GPL
BuildRoot: /home/urivskay/beta
Requires(post): postgresql-server-dev-9.1
Requires: libQtGui.so.4
%description
This package basically does nothing, but it potentially could
do something useful.
%files
/node
/node.1
/README.txt


Название: Re: linux список установленных программ
Отправлено: Пантер от Сентябрь 27, 2012, 15:00
Возьми готовую rpm и изучай. Допустим, от smplayer, который тоже зависит от Кьюта.