Автор Тема: как писать приложения под linux  (Прочитано 7954 раз)

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: как писать приложения под linux
« Ответ #15 : 30.04.2010 08:46:49 »
Цитировать
1. Пишите spec
2. Собираете src.rpm
rpm -bs ИМЯ_SPEC_ФАЙЛА
3. Читаете http://www.altlinux.org/Краткое_руководство_по_hasher
Так вот в этом вся хохма! Я читал всякие руководства на www.altlinux.org и так и не смог понять как создать src.rpm из tar.bz2 или просто из исходников. Есть проги с исходниками в tar.bz2. Они компилируются командой make! Но как из них сделать src.rpm я не понимаю. Решил, чтобы разобраться, написать hello world и сделать из него rpm, но пока не получается.
[me@Linux ~]$ cd /home/me/RPM/hello
[me@Linux hello]$ ls -l
итого 32
-rwxr-xr-x 1 me me 8132 Апр 29 16:15 hello
-rw-r--r-- 1 me me 1621 Апр 28 11:03 hello.cpp
-rw-r--r-- 1 me me 1992 Апр 29 16:15 hello.o
-rw-r--r-- 1 me me  394 Апр 29 16:17 hello.spec
-rw-r--r-- 1 me me 4737 Апр 29 17:48 hello.tar.bz2
-rw-r--r-- 1 me me   86 Апр 29 16:14 Makefile
[me@Linux hello]$ rpm -bs hello.spec
ошибка: Файл /home/me/RPM/SOURCES/hello-1.0.src.rpm: Нет такого файла или каталога
Команду rpm -bs hello.spec я уже делал...
Цитировать
ошибка: Файл /home/me/RPM/SOURCES/hello-1.0.src.rpm: Нет такого файла или каталога
Так и его не может там быть - он создасться по идее должен!!!
Пошёл читать пока...

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 258
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: как писать приложения под linux
« Ответ #16 : 30.04.2010 08:59:12 »
В /home/me/RPM/SOURCES/ кладёте hello.tar.bz2, в  /home/me/RPM/SPECS - ваш спек.
cd  /home/me/RPM/SPECS
rpm -bs hello.spec
После сборки - в  /home/me/RPM/SRPMS создаётся файл hello-1.0.src.rpm
cd /home/me/RPM/SRPMS

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: как писать приложения под linux
« Ответ #17 : 30.04.2010 11:02:35 »
kostyalamer
Спасибо за ссылочку!!!
Цитировать
а вот здесь почти про Ваш пакет : http://www.linuxcenter.ru/lib/articles/system/rpm_guide.phtml
ruslandh
Тоже спасибо!!!
Начинаю разбираться!!!
[me@Linux SPECS]$ cd /home/me/RPM
[me@Linux RPM]$ ls -l
итого 32
drwxr-xr-x 3 me me 4096 Апр 30 12:05 BUILD
drwxr-xr-x 3 me me 4096 Апр 30 10:52 hello
drwxr-xr-x 2 me me 4096 Апр 29 15:32 log
drwxr-xr-x 3 me me 4096 Апр 30 12:06 RPMS
drwxr-xr-x 2 me me 4096 Апр 30 10:52 SOURCES
drwxr-xr-x 3 me me 4096 Апр 29 15:52 SPEC
drwxr-xr-x 2 me me 4096 Апр 30 12:05 SPECS
drwxr-xr-x 2 me me 4096 Апр 30 12:06 SRPMS
[me@Linux RPM]$ cd /home/me/RPM/SOURCES
[me@Linux SOURCES]$ ls -l
итого 4
-rw-r--r-- 1 me me 883 Апр 30 10:51 hello.tar.bz2
[me@Linux SOURCES]$ cd /home/me/RPM/SPECS
[me@Linux SPECS]$ ls -l
итого 12
-rw-r--r-- 1 me me 395 Апр 30 10:55 hello2.spec
-rw-r--r-- 1 me me 388 Апр 30 12:05 hello.spec
-rw-r--r-- 1 me me 365 Апр 30 12:03 hello.spec~
[me@Linux SPECS]$ cd /home/me/RPM/SRPMS
[me@Linux SRPMS]$ ls -l
итого 4
-rw-r--r-- 1 me me 2696 Апр 30 12:06 hello-1.0-alt1.src.rpm
[me@Linux SRPMS]$ cd /home/me/RPM/RPMS/pentium4
[me@Linux pentium4]$ ls -l
итого 4
-rw-r--r-- 1 me me 3500 Апр 30 12:06 hello-1.0-alt1.pentium4.rpm
Вот какой .spec у меня:
Name: hello
Version: 1.0
Release: alt1

Summary: hello
License: GPL
Group: Network

Url: www.URL.ru
#Source: %name-%version-%release.src.rpm
Source: %name.tar.bz2
Packager: Me <me@email.ru>

%description
Hello World!

%prep
%setup -c hello

%build
g++ -o hello hello.cpp

%install
mkdir -p $RPM_BUILD_ROOT/usr/local/bin
cp hello $RPM_BUILD_ROOT/usr/local/bin

%files
/usr/local/bin/hello
Вот что у меня получилось:
[me@Linux SPECS]$ rpm -bs hello.spec
Записан: /home/me/RPM/SRPMS/hello-1.0-alt1.src.rpm
[me@Linux SPECS]$ rpm -ba hello.spec
Выполняется(%prep): /bin/sh -e /home/me/tmp/rpm-tmp.37731
+ umask 022
+ /bin/mkdir -p /home/me/RPM/BUILD
+ cd /home/me/RPM/BUILD
+ cd /home/me/RPM/BUILD
+ rm -rf hello-1.0
+ /bin/mkdir -p hello-1.0
+ cd hello-1.0
+ echo 'Source #0 (hello.tar.bz2):'
Source #0 (hello.tar.bz2):
+ /bin/bzip2 -dc /home/me/RPM/SOURCES/hello.tar.bz2
+ /bin/tar -xf -
+ /bin/chmod -c -Rf u+rwX,go-w .
+ exit 0
Выполняется(%build): /bin/sh -e /home/me/tmp/rpm-tmp.37731
+ umask 022
+ /bin/mkdir -p /home/me/RPM/BUILD
+ cd /home/me/RPM/BUILD
+ cd hello-1.0
+ g++ -o hello hello.cpp
+ exit 0
Выполняется(%install): /bin/sh -e /home/me/tmp/rpm-tmp.16752
+ umask 022
+ /bin/mkdir -p /home/me/RPM/BUILD
+ cd /home/me/RPM/BUILD
+ /bin/chmod -Rf u+rwX -- /home/me/tmp/hello-buildroot
+ :
+ /bin/rm -rf -- /home/me/tmp/hello-buildroot
+ cd hello-1.0
+ mkdir -p /home/me/tmp/hello-buildroot/usr/local/bin
+ cp hello /home/me/tmp/hello-buildroot/usr/local/bin
+ /usr/lib/rpm/brp-alt
Cleaning files in /home/me/tmp/hello-buildroot (auto)
Verifying and fixing files in /home/me/tmp/hello-buildroot (binconfig,pkgconfig,libtool)
Compressing files in /home/me/tmp/hello-buildroot (auto)
Verifying ELF objects in /home/me/tmp/hello-buildroot (arch=normal,fhs=normal,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
Stripping binaries in /home/me/tmp/hello-buildroot (executable,shared)
Обрабатываются файлы: hello-1.0-alt1
Поиск Provides (используя /usr/lib/rpm/find-provides)
Выполняется(Provides): /bin/sh -e /home/me/tmp/rpm-tmp.88837
+ umask 022
+ /bin/mkdir -p /home/me/RPM/BUILD
+ cd /home/me/RPM/BUILD
+ /usr/lib/rpm/find-provides
find-provides: running scripts (alternatives,lib,pam,perl,pkgconfig,python,shell)
+ exit 0
Поиск Requires (используя /usr/lib/rpm/find-requires)
Выполняется(Requires): /bin/sh -e /home/me/tmp/rpm-tmp.33257
+ umask 022
+ /bin/mkdir -p /home/me/RPM/BUILD
+ cd /home/me/RPM/BUILD
+ /usr/lib/rpm/find-requires
find-requires: running scripts (files,lib,pam,perl,pkgconfig,pkgconfiglib,python,rpmlib,shebang,shell,static,symlinks)
+ exit 0
Requires: /lib/ld-linux.so.2, libc.so.6(GLIBC_2.0), libc.so.6(GLIBC_2.1.3), libstdc++.so.6(CXXABI_1.3), libstdc++.so.6(GLIBCXX_3.4), rtld(GNU_HASH)
Поиск unpackaged files (используя /usr/lib/rpm/check-files)
Выполняется(check-files): /bin/sh -e /home/me/tmp/rpm-tmp.37830
+ umask 022
+ /bin/mkdir -p /home/me/RPM/BUILD
+ cd /home/me/RPM/BUILD
+ /usr/lib/rpm/check-files
+ exit 0
Записан: /home/me/RPM/SRPMS/hello-1.0-alt1.src.rpm
Записан: /home/me/RPM/RPMS/pentium4/hello-1.0-alt1.pentium4.rpm
Установил:
[me@Linux pentium4]$ /usr/local/bin/hello
Hello, world!
Hello, world!
[me@Linux pentium4]$
Всё классно!!!
 :) :) :) :) :)
« Последнее редактирование: 30.04.2010 11:04:25 от Meatcoins »

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: как писать приложения под linux
« Ответ #18 : 30.04.2010 11:14:28 »
Изменил .spec вот так:
Name: hello
Version: 1.0
Release: alt1

Summary: hello
License: GPL
Group: Network

Url: www.URL.ru
#Source: %name-%version-%release.src.rpm
Source: %name.tar.bz2
Packager: Me <me@email.ru>

%description
Hello World!

%prep
%setup -c hello

%build
g++ -o hello hello.cpp

%install
mkdir -p $RPM_BUILD_ROOT/usr/bin
cp hello $RPM_BUILD_ROOT/usr/bin

%files
/usr/bin/hello
Теперь заускается после установки вот так:
[me@Linux ~]$ hello
Hello, world!
Hello, world!
:) :) :) :) :)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 258
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: как писать приложения под linux
« Ответ #19 : 30.04.2010 12:11:57 »
Для подстановки правильных макросов и убирания ненужных опций удобно пользоваться:

rpmcs ПУТЬ_ДО_СПЕКА
и
cleanup_spec ПУТЬ_ДО_СПЕКА

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: как писать приложения под linux
« Ответ #20 : 30.04.2010 14:16:58 »
То есть собирается пакет с помощью команды rpm.
А зачем нужет hasher? Просто для отладки в изолированной среде и отслеживания зависимостей?
Чтобы собрать пакет hasher не нужен.
Также не очень понимаю зачем нужны git и gear и в чём разница между ними.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 258
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: как писать приложения под linux
« Ответ #21 : 30.04.2010 15:45:30 »
hasher нужен для того, что-бы не ставить в живую систему пакеты, необходимые для сборки пакетов. git и gear - это для возможности отслеживания изменений в пакетах.

Оффлайн djoner

  • Начинающий
  • *
  • Сообщений: 1
Re: как писать приложения под linux
« Ответ #22 : 14.05.2010 16:07:45 »
на каком языке пишутся сетевые приложения для linux ?
Можно на PureBasic написать используя его кроссплатформенные функции.
Вот работа с сетью http://purebasic.com/documentation/network/index.html

PureBasic позволяет создавать проги для Windows, Linux, MacOS X.