Ламерский вопрос

Статус: Offline
Реєстрація: 20.02.2009
Повідом.: 3686
Ламерский вопрос

Здравствуйте, имеется на компутере Дебиан. Установливал его по сети, все нужное добивал ручками. Щас возникла необходимость собрать одну програмку из исходников. ./configure грит - что нет такой команды, на make тоже самое. Я так понял, что надо доустановить какие-то пакеты, а вот какие не нашел. Вопрос- что мне надо ставить? И второй вопрос - что-бы Линух увидел мою звуковую - мне обязательно пересобирать ядро? alsa поставил alsaconfigure не запускаетсо.
 
Readme в папке исходников почитать не судьба? далеко не все собирается с помощью ./configure && make && make install. есть еще cmake, scons, и еще куча вариантов сборки. Не рекомендую собирать, посмотри в репе. и вообще, как пакет называется?
 
Ponyprog программа для прошивки чипов и контроллеров.
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
В ридми только история версий. В репе не найдеш..
 
И второй вопрос - что-бы Линух увидел мою звуковую - мне обязательно пересобирать ядро? alsa поставил alsaconfigure не запускаетсо.
Ты абсолютно уверен, что любой пользователь ХФ точно знает какая у тебя звуковуха? У меня звуковую на всех компьютерах любой линукс всегда правильно определял сам.
 
Мандрива, кнопикс и т.д. определяли сами. А дебиан мой АС97 видит, но звука нет.. Но звук это так, буду еще гуглить. Мож набокоприл где-то, а вот PonyProg надо поставить..
 
а вот PonyProg надо поставить..

А почему ты
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
не читаешь?
Там же есть
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
:
With RedHat Linux 6.2/7.0 login as root and execute the command
# tar xvfzP ponyprog-X.XXX.tar.gz
# chmod +s /usr/local/bin/ponyprog2000 (optional)
Кстати, там есть файл Config.mk - с него похоже надо начинать сборку. Пробовал команду ./Config.mk ?
 
Здравствуйте, имеется на компутере Дебиан. Установливал его по сети, все нужное добивал ручками. Щас возникла необходимость собрать одну програмку из исходников. ./configure грит - что нет такой команды, на make тоже самое. Я так понял, что надо доустановить какие-то пакеты, а вот какие не нашел.

#aptitude install build-essential


что-бы Линух увидел мою звуковую - мне обязательно пересобирать ядро? alsa поставил alsaconfigure не запускаетсо.

alsaconfigure нет такой команды. Есть alsaconf
 
./Config.mk Отказано в доступе - (Делал из под рута)
# chmod +s /usr/local/bin/ponyprog2000 - вроде прошло, и где его искать, теперь?
 
Ты хоть примерно понимаешь значение команд которые вводишь?
 
Тогда в чём вопрос сопсна? Компилятор поставил? Архив распаковал? Сорцы скомпилил?
 
Вопрос временно снимается с повестки дня, Энегергетики позаботились о безвременной смерти Линуксового раздела. Попытки оживить привели к полному краху. На выходных переставлю, и буду опять его терзать. Спасибо всем отклинушимся.
 
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
вроде как нашел ответ, Как вы думаете под мою систему подойдет.
 
бред какой-то. ты в репозитории искал?
 
Ponyprog программа для прошивки чипов и контроллеров.
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
В ридми только история версий. В репе не найдеш..

1. там есть makefile. но по make не соберется
2. там чего-то не хватает, нужно гуглить
3. почему версия 1.17? там есть более новые
4. версия 2.07a есть в гентушных репах, могу собрать
 
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
вроде как нашел ответ, Как вы думаете под мою систему подойдет.

Тільки зареєстровані користувачі бачать весь контент у цьому розділі


вот жеж...

Здесь доступно много материала на эту тему
Тільки зареєстровані користувачі бачать весь контент у цьому розділі


Попробую поделиться своим опытом в создании пакетов.

Вступление:
Отличие дистрибутивов основанных на Debian это не только отличная система управления пакетами apt-get (aptitude)
которая сама разрешает зависимости, но есть ещё и удобные инструменты для создания пакетов и своих репозиториев.

Если уж вы решились собрать программу из исходников, то советую ещё изучить как дебианизировать исходники.
Это отнимет чуть больше времени чем стандартное ./configure && make && make install
но за то позволит сохранить систему в чистоте. Удалить программы установленные командой make install можно только командой make uninstall, но не все исходники это поддерживают, а что ещё чаще исходники удаляют после установки, тогда удалить программу можно только вручную. Но чтобы это сделать нужно точно знать что и куда установилось :) А это уж точно никто не знает кроме самих разработчиков программы (ну или тех кто более менее разбирался в исходниках программы).

Цитировать

Ну и что? Главное работает!
- apt-get не знает ничего об программах установленных вручную соответственно могут быть конфликты или просто непонятные глюки.
- очень часто исходники по умолчанию "рассчитаны" на определённый дистрибутив или наоборот рассчитаны только на установку из исходников, при этом выполняются разного рода "удобные" настройки в конфигурационных файлах. Так например очень любят прописывать mime типы. Но проблема в том что переводы разные бывают и в наутилусе может выскачить ошибка "Имя файла <тут имя> показывает, что файл является типом файла <Документ1>. Содержимое файла показывает, что файл является файлом типа <Документ2>" и документ не будет открываться.
Таких "недочётов" может быть очень много. А теперь если представить что это удалить нельзя поскольку пользователь не запоминал что и куда поставилось, наступает паника и как результат переустановка :)

Цитировать

Но как быть если программу хочется поставить, а версия в deb пакете устарела, или такой вообще нет?

Есть два выхода использовать программу checkinstall. Она собирает всё в один пакет.
К сожалению она позволяет решить только вопрос с удалением программы.
И даже если apt-get будет знать, что программа установлена, он в лучшем случае сообщит, что конфликт файлов, файл /some/path/to/some/file уже есть в пакете "имя пакета собранного с помощью checkinstall"
Чаще всего такие случаи очень корректно разрешаются путём удаления конфликтного пакета. Но времени на разбор ситуации это у вас займёт.

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

Вижу вам всё ещё интересно :) Это радует.
И так дано:
некий исходник gcoolprog-0.5.3.tar.bz2
Нужно собрать пакет.

Решение.
Ниже идёт вариант как я обычно поступаю в таком случае.

Первым делом смотрю нет ли deb пакета той же версии но допустим под Debian.
Если есть делаю так см. "Есть нужная версия пакета в репозитории debian или в будующем релизе убунты"

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

ну и самый страшный случай нигде никаких deb пакетов нет только tar.gz и rpm :(
Не отчаиваться! И ни в коем случае не использовать rpm!!!

Нам понадобятся как минимум программы Код:

Код:
sudo apt-get install  autoconf automake libtool autotools-dev dpkg-buildpackage fakeroot
можно так же autobook это документация по утилитам "GNU Autoconf, Automake, и Libtool"

Ну и конечно то что требуют сами исходные коды, для корректной сборки.

А так же не помешает завести ключик которым мы будем подписывать пакеты.
Данный шаг не обязателен его можно пропустить.

Для этого зайдите в Приложения-> Стандартные-> Пароли и ключи шифрования
В открывшемся окне в меню ключь->новый ключь
выбираем ключь pgp
Заполняем поля полное имя и электронный адрес.
В мире свободного программного обеспечения, для предотвращения "краж" или "подделок" принято подписывать свои "ценные" вещи электронным ключём, открытая часть которого хранится на обще доступных серверах и позволяет другим пользователям легко выяснить поддлинность и целостность той или иной вещи. Поэтому отнеситесь к созданию ключа очень ответственно. Никто вас не заставляет вписывать сюда раельные имя и фамилию, или ещё какие нибудь личные данные, но если вас не разыскивает интерпол думаю указать фамилию и имя будет верным решением, хотя можно и просто свой ник :)
В общем решайте сами. А вот почтовый адрес укажите реальный, и который вы не поменяете. Можно использовать адреса крупных доменов таких как gmail.com или *******.ru (т.е. у вас там должен быть свой ящик) Это позволит в будующем легко связаться с вами, человеку который вас не знает но по той или иной причине встретил "вешь" подписанную вами.
Далее вас спросят ввести пароль. Как дополнительную защиту. Он может быть полезен если вы будете использовать закрытый ключь на машинах которым вы не можете 100% доверять. Обратная сторона, вам придётся вводить пароль каждый раз как только вы будете что то подписывать. Хотя последняя версия программы seahorse имеет демон который автоматически запускается в сеансе гнома, и умеет "запоминать пароль" на время сеанса, но пока не все программы умеют с ней работать.
И так вы создали ключь теперь его можно будет использовать при создании пакетов.
Для этого в файл ~/.bashrc или в другой стартовый скрипт вашего любимого шелла (для zsh ~/.zshrc) нужно вписать переменные
Код:

Код:
export DEBEMAIL=ваш@емэил

на основании емаил будет искаться ключь в пгп при подписи. пакета.
Нужно перелогиниться чтобы изменения вступили в силу.
Помните что если вы бэкпортируете пакет дебианизированный не вами обязательно нужно изменить версию.
Командой dch -i для того чтобы в изменениях вписался ваш email .
А для того чтобы ваш открытый ключ попал на сервер, в настройках seahorse ("Пароли и ключи шифрования")
нужно настроить соединение с сервером публичных ключей. Для этого нужно в меню правка->параметры
на закладке "Публикация ключей" поставить галку "Публиковать ключи..."
теперь можно выбрать ключ и в меню по правой кнопке выбрать "Синхронизировать и опубликовать ключи"


И так ...

Начну с самого страшного :)) поскольку остальные случаи это частные решения самого страшного.


И так у нас есть только gcoolprog-0.5.3.tar.bz2
Обычно я выполняю следующие действия
Код:

Код:
$ mkdir ~/src/gcoolprog
$ mkdir ~/src/gcoolprog/0.5.3
$ cd ~/src/gcoolprog/0.5.3
$ wget "https://<путь до файла>"
(можно конечно и просто через браузер скачать но обычно так быстрее)

получаем файл gcoolprog-0.5.3.tar.bz2

Немного забегая в перёд переархивируем файл программой gzip
Код:

Код:
$ bunzip2  gcoolprog-0.5.3.tar.bz2
$ gzip gcoolprog-0.5.3.tar
получим gcoolprog-0.5.3.tar.gz
и переименуем
Код:
$ mv gcoolprog-0.5.3.tar.gz gcoolprog_0.5.3.orig.tar.gz

(т.е. разделили имя и версию подчёркиванием и после версии добавили слово orig)

теперь распаковываем его (но не в коем случае не удаляем!)
Код:

Код:
$ tar zxvf ./gcoolprog_0.5.3.orig.tar.gz
$ cd gcoolprog-0.5.3

(замечание для корректной сборки нужно чтобы корневая директория содержала не только название но и версию!)
ниже будем считать директорию ~/src/gcoolprog/0.5.3/gcoolprog-0.5.3 корневой директорией исходников.

далее выполняем "черновую" сборку. Т.е. делаем как обычно ./configure --prefix=/usr && make (но не устанавливаем!)
если конфигурируется со всеми нужными опциями и собирается в бинарный файл, значит осталось только дебианизировать.

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

Код:

Код:
$ dh_make

Type of package: single binary, multiple binary, library, kernel module or cdbs?
 [s/m/l/k/b] s

Maintainer name : denis
Email-Address   : [email]Ubuntu_user@******[/email]
Date            : Mon, 13 Aug 2007 12:40:33 +0400
Package Name    : gcoolprog
Version         : 0.5.3
License         : blank
Type of Package : Single
Hit <enter> to confirm:

ты мы сказали сформировать пекет для одиночного бинарного файла.

Если бы мы не переименовали архив то получили бы следующее сообщение
Код:

Код:
Could not find gcoolprog_0.5.3.orig.tar.gz
Either specify an alternate file to use with -f,
or add --createorig to create one.
в таком случае советую прервать dh_make (ctrl+c) и переименовать архив как описано выше.

Но мы с вами молодцы и всё у нас прошло без ошибок появился каталог debian в корне исходников
посмотрев его содержимое увидите кучу файлов (расширение .ex) с примерами на все случаи жизни.
будем считать что программа у нас простая обычно ни один из этих файлов не нужен.

Первым делом нужно добавить описание программы в файле debian/control

Код:

Код:
Description: <insert up to 60 chars description>                                                                                        
 <insert long description, indented with spaces>

В место <insert up to 60 chars description> и <insert long description, indented with spaces> (без угловых кавычек) нужно вписать описание что это за программа. Именно эти сведения увидит пользователь когда посмотрит описание пакета в synaptic'е.

второй момент это поправить файл debian/rules
в секции binary-arch:
нужно раскомментировать
Код:

Код:
dh_install
(т.е. убрать # в начале строки)
без этого мы получим пустой пакет.

Обычно этих настроек достаточно для сборки пакета с одной программой которая не содержит разделяемых библиотек т.е. только бинарник в /usr/bin и данные в /usr/share

Теперь если выполнить в корне с исходниками

Код:

Код:
$ dpkg-buildpackage -rfakeroot

мы получим файлы

Код:

Код:
$ cd .. (в директорию выше т.е. в ~/src/gcoolprog/0.5.3)
$ ls -1
gcoolprog_0.5.3-1.diff.gz
gcoolprog_0.5.3-1_i386.changes
gcoolprog_0.5.3-1_i386.deb
gcoolprog_0.5.3.orig.tar.gz

вот теперь мы можем установить пакет

Код:

Код:
$ dpkg -i *.deb

Теперь вариант в репозитории есть пакет предыдущей версии.

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

Код:

Код:
$ mkdir ~/src/gcoolprog
$ mkdir ~/src/gcoolprog/0.5.3
$ cd ~/src/gcoolprog/0.5.3
$ wget "https://<путь до файла>"

получаем файл gcoolprog-0.5.3.tar.bz2

Код:

Код:
$ bunzip2  gcoolprog-0.5.3.tar.bz2
$ gzip gcoolprog-0.5.3.tar
$ mv gcoolprog-0.5.3.tar.gz gcoolprog_0.5.3.orig.tar.gz


теперь распаковываем его
Код:
tar zxvf ./gcoolprog_0.5.3.orig.tar.gz

скачиваем с
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
файл gcoolprog_0.5.1.diff.gz (в самом низу в секции More Information on gcoolprog)
Код:

Код:
$ wget "https://archive.ubuntu.com/ubuntu/pool/universe/g/gcoolprog/gcoolprog_0.5.1.diff.gz"
$ gunzip gcoolprog_0.5.1.diff.gz
$ patch -p0 <./gcoolprog_0.5.1.diff

получаем директорию
~/src/gcoolprog/0.5.3/gcoolprog-0.5.1/debian

копируем каталог debian в директорию
~/src/gcoolprog/0.5.3/gcoolprog-0.5.3

дальше нам нужно изменить версию командой
Код:

Код:
$ dch -i
этой командой изменяется файл debian/changelog

например увидим

Код:

Код:
gcoolprog (0.5.1-1ubuntu2) feisty; urgency=low

  *

 -- denis <ubuntu_user@******>  Mon, 13 Aug 2007 14:13:27 +0400


но поскольку у нас версия 0.5.3 то нужно изменить значения на

Код:

Код:
gcoolprog (0.5.3-1ubuntu1) feisty; urgency=low

  * New upstream release.

 -- denis <ubuntu_user@******>  Mon, 13 Aug 2007 14:13:27 +0400

сохранить изменения

теперь можно выполнить команду сборки в пакет

Код:

Код:
$ dpkg-buildpackage -rfakeroot
получим файлы
Код:

Код:
$ cd ..
$ ls -1
gcoolprog_0.5.3-1.diff.gz
gcoolprog_0.5.3-1_i386.changes
gcoolprog_0.5.3-1_i386.deb
gcoolprog_0.5.3.orig.tar.gz

$ dpkg -i *.deb
 
Назад
Зверху Знизу