Linux посмотреть версию файла

unixforum.org

Общий порядок компиляции + как узнать версию библиотеки

Общий порядок компиляции + как узнать версию библиотеки

Сообщение bdimych » 11.02.2007 23:40

MOPSLinux 5 = Slackware 11

Я начинающий но уже продвинутый. Не могу сообразить принципы стандартной сборки приложения linux.

Вопросы возникли при попытках сборки vlc player. Это здоровенный можно сказать мультимедийный фрэймворк. Чтобы его собрать нужно ~30 других пакетов которые и между собой тоже связаны. Там есть автоматизация сборки всех нужных пакетов, но с первого раза не получилось. Процесс несколько раз стопорился и в каждом случае приходилось вручную разбираться с несобирающимся пакетом. И когда он наконец таки собрался, заработал тоже не сразу. Пришлось пересобирать несколько раз а на каждую пересборку не меньше 40 минут уходило. Я злился!

Не могу сообразить порядок вообще т.е.
1. autotools делают файлы Makefile и configure
2. gcc и g++ собирает файлы «o» из файлов c/cpp + h/hpp
3. . собирает из нескольких «o» файл «a»
4. . из «a» делает файл «so»

Статическая сборка — это включение кусков кода из одного «o» в другой ?

Где определяется что программа будет не статической а использовать «so» и какие ? Т.е. например пакет ffmpeg у меня уже есть в /usr/local. Сборочный скрипт vlc качает ffmpeg в свой подкаталог и как быть уверенным что при сборке будет использоваться именно скаченная версия

Что делает ldconfig? Т.е. не может ли он тоже повлиять на то какая версия ffmpeg будет использоваться. Ведь ldconfig при каждой загрузке запускается и что то связывает.

Как узнать версию файла «a» или «so» и вообще понятие версия библиотеки в линуксе что означает. Я виндузятник поэтому о версии представление такое — «правой кнопкой — свойства файла». Пробовал readelf но он выдает нечто большое которое явно не совпадает просто с цифрой в имени файла после «so». Эта цифра как я понимаю и есть версия? Но внутри файла версии нет что ли ? А у файлов «a» где тогда версия ?

Читайте также:  Linux list folder contents

я примерно знаю что надо читать: elf + libtool + ld + ldconfig + флаги -L -I -l но как говорил Киса Воробьянинов хочется чтобы побыстрее Если не трудно объясните пожалуйста в двух словах.

Источник

узнать версию программы

Как узнать версию программы, находящейся в репозитории Debian, без помощи пакетных менеджеров?

Посмотреть на packages.debian.org?

Посмотреть на сайте Debian’а [pokerface.png]

Буду рад услышать от ылиты более Ъ-методы. Подписался.

дело в том, что у тс не debian

wget http://packages.debian.org/search?keywords=package&searchon=names&suite=all§ion=all 

Точнее проcurlить. Я даже однострочник наваял на коленке:

curl http://mirror.yandex.ru/debian/pool/main/c/coreutils/ |grep coreutils|sed -e "s///g;s/

Извращенец?
aptitude versions package
Решает

спс, а чем так wine не угодил?

потому что пиво дороже выходит при таком же количестве эффекта, а коньяк мне жинка запретила временно. Да, а вообще я против вина и за коньяк

minakov ★★★★★ ( 14.02.13 20:58:44 MSK )
Последнее исправление: minakov 14.02.13 20:59:03 MSK (всего исправлений: 1)

Я думаю в этом твоя и проблема, что у тебя не debian.
А по теме думаю или packages качать, либо на packages.debian.org смотреть. Надо учитывать, что несколько веток (stable, testing, sid, experimental, backports) и то что пакет может немного называться по-другому в отличие от твоего дистра.

и не дебиан, и не сходить в интернет? Тогда только через libastral.

А это здесь причем? В любом случае без интернета никак не узнать. Зачем тогда эти извращения - «без браузера» не понимаю. Правильный ответ прозвучал еще в первом комментарии, а способы как оттуда извлечь информацию уже зависит от фантазии.

apt-cache show package-name

без помощи пакетных менеджеров

А имя пакета с программой и расположение его в зеркале телепатия подскажет.

Давай переформулируем вопрос. Как хоть в каком-нибудь дистрибутиве узнать версию программы без пакетного менеджера и без браузера?

Посему оговорку про коленку и написал. Сложный и правильный пример пусть пишут те, у кого неарч

Дубль два показывает версии исходников со странички(поправьте регекспы, мне лень):

#!/bin/bash # search.sh version 0.01 site="http://packages.debian.org/" repo1="squeeze" repo2="wheezy" repo3="sid" echo "squeeze:" curl -s $site$repo1\/$1 |grep "tar.gz" |sed -e 's///g;s/<\/.*$//g' echo "Wheezy:" curl -s $site$repo2\/$1 |grep "tar.gz" |sed -e 's///g;s/<\/.*$//g' echo "sid:" curl -s $site$repo3\/$1 |grep "tar.gz" |sed -e 's///g;s/ 
[elemashine@laptop ~]$ sh search.sh coreutils squeeze: [coreutils_8.5.orig.tar.gz] Wheezy: [coreutils_8.13.orig.tar.gz] sid: [coreutils_8.20.orig.tar.gz] 

minakov ★★★★★ ( 14.02.13 22:44:40 MSK )
Последнее исправление: minakov 14.02.13 22:48:21 MSK (всего исправлений: 1)

В том-то и дело, что зная название пакета дёрнуть версию нетрудно. Тут ты всё правильно делаешь.

Но ведь в условии стоит «узнать версию программы». Т.е. пакет неизвестен. Вот я и пытаюсь узнать у ТС, как он без пакетного менеджера будет искать версию программы в консоли для любого дистра.

ааа. То есть ты распарсил как «узнать версию того же echo из coreutils без всего»?

А разве не это имелось ввиду? 🙂

непонятно, зачем такое может быть нужно ТС. Если только не монетизировать по пути дистровотча. !а ведь он тоже парсит пакетики

dpkg -s program_name | grep Version

Зачем знать версию программы в разных дистрах как раз вопрос простой. Мало ли там, статистику собрать захотелось. Или автоматическое сравнение дистрибутивов какое.

А вот как раз, зачем знать версию пакета из одного дистра в другом, мне придумать сложнее. Вот, к примеру, хочу я определить, какая версия у апача в дебиане из-под генты. У меня это пакет www-servers/apache, а в дебиане это - apache2. И, без браузера(читай, не зная, как пакет называется) придётся либо писать бота, который пройдётся по packages.debian.org, либо писать аналог дебиановской apt-file, выхлоп которой парсить и скармливать скрипту наподобие твоего. Или с самого начала составлять базу соответствий утилит и пакетов, в которых они лежат.

Источник

Как узнать версию программы в Linux

book24 не заставляйте меня думать

sed (GNU sed) 4.7 Packaged by Debian Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Jay Fenlason, Tom Lord, Ken Pizzini, Paolo Bonzini, Jim Meyering, and Assaf Gordon. GNU sed home page: . General help using GNU software: . E-mail bug reports to: .

В Debian , Ubuntu и других производных Debian можно выполнить команду

Например, чтобы узнать версию sed нужно выполнить

Package: sed Essential: yes Priority: required Section: utils Installed-Size: 336 Origin: Ubuntu Maintainer: Ubuntu Developers Bugs: https://bugs.launchpad.net/ubuntu/+filebug Architecture: amd64 Multi-Arch: foreign Version: 4.7-1 Pre-Depends: libacl1 (>= 2.2.51-8), libc6 (>= 2.14), libselinux1 (>= 1.32) Filename: pool/main/s/sed/sed_4.7-1_amd64.deb Size: 189668 MD5sum: 2e2c9a0370c20a2a1921572f250db43e Description: GNU stream editor for filtering/transforming text Original-Maintainer: Clint Adams SHA1: a8106de20fa00fc7f97a45d18ec411512cc64293 SHA256: a5428ddec609149eb6086cec20bf14a0300972a191eb0cc010e7f1c7f17186f4 Homepage: https://www.gnu.org/software/sed/ Task: minimal Description-md5: 2ed71305ee7a49ce4438c58140980d2f

Команда dpkg -p, впрочем как и флаги --version, -V работает не со всеми программами

Например, если вы выполните

Скорее всего получите сообщение

dpkg-query: package 'virtualbox' is not available

Команда virtualbox --version просто запустит Virtualbox

Чтобы определить версию Virtualbox выполните

Oracle VM VirtualBox VM Selector v6.1.10_Ubuntu (C) 2005-2020 Oracle Corporation All rights reserved. No special options. If you are looking for --startvm and related options, you need to use VirtualBoxVM.

  • Поиск по сайту
  • aofeed - Telegram канал чтобы следить за выходом новых статей
  • aofeedchat - задать вопрос в Телеграм-группе

Источник

Оцените статью
Adblock
detector