Toon posts:

[RedHat] RPMs bouwen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo hallo,

ik heb hier al eens gezocht, maar niet veel gevonden, en op google vind ik wel wat, en ik DENK dat ik nu een beetje een idee heb maar ik weet het nog niet zeker....

Ik wil dus RPMs gaan bouwen.... Stel dat het volgende de commando's zijn voor als ik deze software handmatig (via shell) will installeren)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mkdir /home/raqtweak
mv portsentry-1.1.tar.gz /home/raqtweak
cd /home/raqtweak
tar xvzf portsentry-1.1.tar.gz 
 
cd portsentry-1.1
make linux
make install
 
----Met een "grep" laten checken of de volgende regels in rc.local zitten, zoniet? -> Toevoegen----

echo "### Added by PortsEntry ###" >> /etc/rc.d/rc.local
echo "/usr/local/psionic/portsentry/portsentry -atcp" >> /etc/rc.d/local.d
echo "/usr/local/psionic/portsentry/portsentry -udp" >> /etc/rc.d/local.d

Dit is dus voor de .specs file of zoiets...
Maar zou iemand een voorbeeldje kunnen maken? Dan zie ik het misschien eens eindelijk in! |:(

Also, die file (portsentry-1.1.tar.gz) ... Hoe pak ik die mee in in de RPM? Ik bedoel... want een RPM met alleen maar commando's in zich hebben we natuurlijk ook niets aan heh....

Super thanks!

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • albiez
  • Registratie: September 2000
  • Laatst online: 16-05 16:44
Of kijk anders een in de tutorial van freshrmps:
http://freshrpms.net/docs/fight.html

Verwijderd

Topicstarter
Ik heb hier al eens naar gekeken hoor...
Maar het is me vooral onlogisch hoe een file in de package wordt betrokken... Omdat bij source altijd een URL staat......

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Op zaterdag 22 juni 2002 14:55 schreef hypernatic het volgende:
Maar het is me vooral onlogisch hoe een file in de package wordt betrokken... Omdat bij source altijd een URL staat......
Huh ? Wat bedoel je nou precies :?

Geef eens een voorbeeld SPEC-file ofzo :)

God, root, what is difference? | Talga Vassternich | IBM zuigt


Verwijderd

Topicstarter
ja precies...
ken iemand (dat wat ik boven heb geschreven) eens een spec file van maken?

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Op zaterdag 22 juni 2002 15:26 schreef hypernatic het volgende:
ken iemand (dat wat ik boven heb geschreven) eens een spec file van maken?
Mjah, doe het eens zelf ? Lees die HOWTO eens ? Probeer eens wat ? En als je vastloopt met je probleem, kom dan eens terug en vertel het hier. Dit is niet de juiste instelling vrees ik..

God, root, what is difference? | Talga Vassternich | IBM zuigt


Verwijderd

Op zaterdag 22 juni 2002 14:55 schreef hypernatic het volgende:
Maar het is me vooral onlogisch hoe een file in de package wordt betrokken... Omdat bij source altijd een URL staat......
De files staan in het %files gedeelte.
Dat zijn de files die uiteindelijk in de rpm terechtkomen.
De tag Source: bepaalt de naam van de tar.gz of tar.bz2.
Daar zet je dus de naam van je oorspronkelijke source package.

De rpmhowto is wel goed om te lezen.
Als je een specfile voor portsentry zoekt, die zullen er heus wel zijn. Kijk eens op rpmfind.net, bij de src.rpms.
Goede specfiles zijn hier ook te vinden:
http://cvs.mandrakesoft.com/cgi-bin/cvsweb.cgi/
http://cvs.pld.org.pl/SPECS/

Oh ja, wat ook handig is...
Je kunt het beste even je .rpmmacros en .rpmrc opzetten als user.
Vaak gaat het met rpms mis met de %makeinstall.
Hij moet een make install doen in een %_tmpdir of %_tmppath, maar Makefiles zijn niet altijd zo recht-toe-recht-aan, en ze willen dus wel eens in /usr of /usr/local installeren. Als user merk je dat wel. Als je het als root doet heb je na een tijdje je systeem vol met bagger zitten, dat is dus niet handig.

Wil je weten wat de %macros voor stellen, kijk dan in /usr/lib/rpm/macros, daar staan ze in opgesteld.

Wat ik ook een aardige link vind, maar wat Mandrake specifiek:
http://www.mandrakelinux.com/en/cookerfaq.php3
Hierin staat geloof ik beschreven hoe je het als user opzet.

Verwijderd

Topicstarter
Op zaterdag 22 juni 2002 16:13 schreef moto-moi het volgende:

[..]

Mjah, doe het eens zelf ? Lees die HOWTO eens ? Probeer eens wat ? En als je vastloopt met je probleem, kom dan eens terug en vertel het hier. Dit is niet de juiste instelling vrees ik..
lees jij niet of zo?
ik zeg toch duidelijk dat ik gezocht heb, mijn best gedaan heb en er nog niet helemaal uitkom

LEES jij eerst eens voor je dit soort posts maakt, want dit is niet de juiste instelling vrees ik!!!

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Op zaterdag 22 juni 2002 16:22 schreef hypernatic het volgende:
lees jij niet of zo?
ik zeg toch duidelijk dat ik gezocht heb, mijn best gedaan heb en er nog niet helemaal uitkom
Waar kom je dan niet helemaal uit ? Laat eens je spec file zien, i.p.v. aan ons vragen om zo'n ding van scratch voor je te maken :?
LEES jij eerst eens voor je dit soort posts maakt, want dit is niet de juiste instelling vrees ik!!!
Flamen zal je niet helpen hoor :)

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • Jordi
  • Registratie: Januari 2000
  • Niet online

Jordi

#1#1

[Duyvis mode]
Heeeren! Heeeren!
;)

moto-moi heeft gewoon gelijk, laat eens zien waar je dan precies niet uit komt...

Het zal wel niet, maar het zou maar wel.


Verwijderd

Ik heb al een aantal keer RPMs moeten maken, is vrij makkelijk. Post eens wat je tot nu toe hebt, dan wil ik evt. wel helpen afmaken.

Die regels hierboven waarmee je /etc/rc.d/rc.local aanpast moeten in de %post-install gedeelte, de rest kan standaard met RPM commando's (%make, %install, etc.). De url waarnaar je verwijst mag een local disk url zijn, maar is voer het algemeen de download locatie van de file, zodat je (als je de spec file hebt) de source RPM kunt bouwen. In de source/binary RPM zit dit bestand al ingebakken, dus daar hoef je je geen zorgen om te maken. ;).

Verwijderd

Topicstarter
nou ja... ik heb zo wat losse dingetjes...

maar het belangrijkste snap ik niet..

ik heb dus op mijn harddisk een file staan, die tar.gz ... Wat ik dus wil is dat die file op de een of andere manier wordt opgenomen in de RPM zodat als jullie de RPM downloaden ie dat ding untarred...

1) HOE krijg ik dat ding IN de RPM? (Wat moet ik dan in de specs zetten
2) HOE untar ik hem dan? Kan ik dan gewoon tar xvzf *.tar.gz doen?

Verwijderd

Op zaterdag 22 juni 2002 22:01 schreef hypernatic het volgende:
1) HOE krijg ik dat ding IN de RPM? (Wat moet ik dan in de specs zetten
Dat doet RPM automatisch. Als ie er niet is geeft ie vanzelf een error tijdens het maken van de source RPM.
2) HOE untar ik hem dan? Kan ik dan gewoon tar xvzf *.tar.gz doen?
In %setup. Dit staat overigens ook beschreven in de RPM Howto...

Verwijderd

Topicstarter
Op zaterdag 22 juni 2002 22:27 schreef beelzebubu het volgende:
Dat doet RPM automatisch. Als ie er niet is geeft ie vanzelf een error tijdens het maken van de source RPM.
[..]
Ja ok... MAar ehm, moet ik niet aangeven WELKE files ie moet meenemen... en WAAR doe ik dat??

Als ik DAT weet kom ik volgens mij een heel eind :D

Verwijderd

Ik verveelde me... |:(. :P.

http://ronald.bitfreak.net/download/portsentry.spec. :{.

Untested en unsupported. Als ie niet werkt mag jij em werkend krijgen. >:). Source RPM bouwen met "rpm -bs portsentry.spec" (zorg dat portsentry-1.1.tar.gz in /usr/src/redhat/SOURCES staat), binary RPM met "rpm --rebuild portsentry-1.1-1.src.rpm". de source RPM wordt in /usr/src/redhat/SRPMS geplaatst.

Suc6! :Y).

Verwijderd

Topicstarter
welk stukje van de SPEC gebruik je voor de uninstall? ik bedoel... als je de RPM met een -e eraf wilt gooien....

  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

Verwijderd schreef op 02 augustus 2002 @ 18:58:
welk stukje van de SPEC gebruik je voor de uninstall? ik bedoel... als je de RPM met een -e eraf wilt gooien....
Er is geen 'uninstall' gedeelt in een RPM. Alles wat in de filelist word gewoonweg weer weggegooid, op de %config zaken na als ik het goed heb.

Eventuele post / pre uninstall zaken worden ook nog uitgevoerd.

Verwijderd

Topicstarter
vraagje...

"Source" in de header van de SPEC

MOET dat een URL zijn? of mag het ook een local file zijn?

Verwijderd

Met Source geef je aan wat de naam van de tar.gz is.
Met %files geef je aan welke files er uiteindelijk in de rpm terechtkomen. Het is handig om hiervoor de files te gebruiken die met %makeinstall in je %tmpdir of %tmppath terechtgekomen zijn.

Source kan dus een file zijn, zoals portsentry-2.4.1.tar.gz.
Het kan ook een url zijn, zoals http://portsentry.org/portsentry-2.4.1.tar.gz en dan zal hij alleen het laatste deel lezen, dus de filename.

Verwijderd

Topicstarter
ik maakte dus RPMs... compilen ging prima... alleen mijn source file (tarball) deed ie niet includen... dus dat werkte niet...

als ik een verwijzing daarna in %files zet moet ie het dus doen?

Verwijderd

Volgens mij begrijpen we elkaar niet.
Je kunt met een tar.gz en een specfile 2 rpms bouwen.
De gewone rpm met de binary files (%files) die je gecompileert hebt, en geinstalleerd in een tijdelijke directory (%tmppath of %tmpdir).
Je kunt ook een src.rpm bouwen als je dat wilt. Deze bevat de specfile en de tar.gz.
Je zal dus nooit een rpm kunnen bouwen die en de binary files, en de Sourcefile bevat.

Het bouwen van de rpm en src.rpm staat ook in de manpage beschreven.
Dus bijv. rpm -ba portsentry.spec

code:
1
2
3
4
 -ba    Build  binary  and source packages (after doing the
              %prep, %build, and %install stages).
       -bb    Build a binary  package  (after  doing  the  %prep,
              %build, and %install stages).

Verwijderd

Topicstarter
ik wil dus een RPM bouwen die mijn tar file van mySQL include...

hoe doe ik dat dan? of gaat dat niet?

Verwijderd

Ja, dat kan wel, en dat kan op duizend-en-een manieren.
Maar waarom zou je dat willen?
En waar wil je hem precies voor gebruiken?
En wat wil je met de binaries doen die je compileert bij het maken van die rpm?

Verwijderd

Topicstarter
dit is wat ik nu heb (tis voor mySQL)

help eens... wat zou jij doen dan?
ik wil dus een RPM maken die ik met -i of -U kan installen....

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Summary: A SQL database
Name: mysql
Version: 3.23.51
Release: 1
Copyright: GPL
Group: Development
Source: mysql-3.23.51.tar.gz
URL: http://www.mysql.com/
Distribution: RaQTweak Cobalt Linux
Vendor: RaQTweak
Packager: RaQTweak <sales@raqtweak.com>

%description
MySQL is the world's most popular Open Source Database, designed for speed, power and precision in
mission critical, heavy load use.

%prep
rm -rf $RPM_BUILD_DIR/%{name}-%{version}
tar xvzf $RPM_SOURCE_DIR/%{name}-%{version}.tar.gz
%setup
/usr/sbin/groupadd -r mysql 2>/dev/null || :
/usr/sbin/useradd -M -g mysql mysql 2>/dev/null || :

%build
./configure --prefix=/usr/local/mysql --with-unix-socket-path=/tmp/mysql.sock --with-mysqld-user=mysql --with-$
make

%install
make install

%post
chown mysql.mysql /usr/local/mysql
scripts/mysql_install_db
chown -R mysql.mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql
mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
rm -f /usr/bin/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
chmod 755 /usr/local/mysql/var
/usr/local/mysql/bin/safe_mysqld &
/usr/local/mysql/bin/mysqladmin -u root password 'raqtweak-mysql'
cp support-files/mysql.server /etc/rc.d/init.d/mysql
chmod 755 /etc/rc.d/init.d/mysql
chkconfig --level 3 mysql on
chkconfig --level 0 mysql off

%files
%dir /usr/local/mysql
/$RPM_SOURCE_DIR/%{name}-%{version}.tar.gz

Verwijderd

Verwijderd schreef op 03 augustus 2002 @ 22:06:
help eens... wat zou jij doen dan?
ik wil dus een RPM maken die ik met -i of -U kan installen....
Ja... maar ik vind het nog niet duidelijk wat je wilt.
Is het zo dat je uiteindelijk een rpm wilt hebben, waarin alleen een tar.gz met de mysql source zit? Dan doe je wel erg veel moeite om een sourcepackage beschikbaar te maken. Ik kan me niet voorstellen dat dat is wat je wilt.
Voo de duidelijkheid, je kunt een rpm bouwen op welke machine je maar wilt, en die dan installeren op een andere machine. Dus wat je op de build-machine doet is specifiek om de rpm gecompileerd te krijgen. In de %post en %pre gedeeltes zet je de dingen die bij het installeren van de binaries moeten gebeuren.
Distribution: RaQTweak Cobalt Linux
Vendor: RaQTweak
Packager: RaQTweak <sales@raqtweak.com>
Heu, dit ben jij?
%prep
rm -rf $RPM_BUILD_DIR/%{name}-%{version}
tar xvzf $RPM_SOURCE_DIR/%{name}-%{version}.tar.gz
%setup
/usr/sbin/groupadd -r mysql 2>/dev/null || :
/usr/sbin/useradd -M -g mysql mysql 2>/dev/null || :
Volgens mij doet %prep al een rm -rf en een tar xvzf.
Onder mandrake tenminste wel. Hij wordt hier nu 2x uitgepakt :)
En het groupadd en useradd is niet handig bij de %setup. Als je hem bouwt als user heb je geen rechten om users toe te voegen.
Sowieso wil je dat niet. Als je nu een dedicated build-machine hebt komt die op het laatst vol met bagger te staan.
Dat useradd en groupadd past veel beter in %pre, waar het dan toegepast wordt voordat de mysql binaries geinstalleerd worden op het uiteindelijke systeem.
%build
./configure --prefix=/usr/local/mysql --with-unix-socket-path=/tmp/mysql.sock --with-mysqld-user=mysql --with-$
make
%install
make install
Ik zou als --prefix /usr of /usr/mysql gebruiken. Rpm's komen volgens de LSB in /usr, terwijl /usr/local voor de systeembeheerder is waar hij zijn tarballs kan installeren.
%files
%dir /usr/local/mysql
/$RPM_SOURCE_DIR/%{name}-%{version}.tar.gz
Tja, ik weet niet hoe ik het nog duidelijker moet zeggen. In de %files list zet je de binaries, dus /usr/local/mysql en alles wat daar onder hangt. Waarschijnlijk is het met make install in een %tmpdir gekomen (toch hopelijk niet al in /usr/local/mysql?), en zal hij de files daaruit plukken, en daar een rpm van samenstellen.

Als je dan "rpm -ba mysql.spec" doet, zal hij die binary rpm bouwen, en en src.rpm waar je Source bestanden en de specfile inzit.
Wil je echt de tar,gz in je binary rpm hebben (Arghh, waarom!?) dan kun je bij de %install vast wel een cp doen van je originele Source bestand naar je %tmpdir (waar dus make install naar toe schrijft), en die dan weer in je %files zetten, als /usr/local/mysql/%{name}-%{version}.tar.gz.
Nog even voor de duidelijkheid, als de rpm samengesteld wordt haalt hij de bestanden niet uit /usr/local/mysql, maar uit %tmpdir/usr/local/mysql, waar de make install hem heen geinstalleerd zou moeten hebben.

Wanneer je de binary rpm installeert zal hij de hele zwik wel naar /usr/local/mysql gooien. (liever dus /usr/mysql).
Als je een src.rpm installeert zal hij de tar.gz installeren naar de Source dir van de betreffende user, en de specfile naar de SPEC dir.

En ehm, is het zo een beetje duidelijk geworden?

Verwijderd

Topicstarter
hmm ok...

maar ... als ik dus in files die directory zet, dan neemt ie DAT dus mee?
want als ik dus die tar niet meeneemt dan probeert ie dus iets te installen wat niet werkt...

als ik dus bij files die tar file zet... neemt ie die dan mee zodat %install hem untarred en zo en compiled? haha sorry voor de domme vragen

Verwijderd

Ok, ik gaf je nog het voordeel van te twijfel, maar volgens mij weet je het verschil niet tussen een src.rpm en een rpm (bijv. i386.rpm) >:)
Ik heb je dat wel verteld, en ik wil dat wel even van je terug horen in je eigen woorden.
Het is nogal een essentieel verschil.

Verwijderd

Topicstarter
Heb je misschien ICQ of MSN of zo? gaat wat sneller....

Een source RPM lukt me aardig... maar die RPM zelf niet...
ICQ/MSN zou handig zijn maybe :P

Verwijderd

Ik heb geen icq of msn.
Ik zit nu wel op irc.
Ik kan wel inloggen op irc.tweakers.net in #linux.
Is dat ok voor je?

Verwijderd

Topicstarter
hmm... lukt aardig... alleen bij %files dan zegt ie steedsop het eind: can not find file (en dan wat dar is aangegeven bij %files)

anyone?
ik heb me lam gelezen, maar het lukt me maar niet :(

Verwijderd

post je .spec file eens?

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Summary: MySQL is the world's most popular Open Source Database, designed for speed, power and precision in mission critical, heavy load use.
Name: mysql
Version: 3.23.51
Release: 1
Copyright: GPL
Group: Databases
Source: mysql-3.23.51.tar.gz
URL: http://www.mysql.com/
Vendor: Raqtweak.com
Packager: Raqtweak.com &lt;sales@raqtweak.com&gt;
BuildRoot: /var/tmp/mysql
Prereq: /bin/sh

%description
MySQL is the world's most popular Open Source Database, designed for speed, power and precision in mission critical, heavy load use. 

%prep
rm -rf %{buildroot}
%setup -q
/usr/sbin/groupadd -r mysql 2&gt;/dev/null || :
/usr/sbin/useradd -s /bin/false -M -r -g mysql mysql 2&gt;/dev/null || :

%build
./configure --prefix=/home/mysql --with-unix-socket-path=/tmp/mysql.sock --with-mysqld-user=mysql --with-low-memory --disable-assembler --disable-shared --with-mysqld-ldflags=&quot;-all-static&quot; --with-client-ldflags=&quot;-all-static&quot;
make

%install
make install

%post
chown mysql.mysql /home/mysql
scripts/mysql_install_db
chown -R mysql.mysql /home/mysql/var
mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
rm -f /usr/sbin/mysql
ln -s /home/mysql/bin/mysql /usr/sbin/mysql
chmod 755 /home/mysql/var/
/home/mysql/bin/mysqladmin -u root password 'raqtweak-mysql' 
cp support-files/mysql.server /etc/rc.d/init.d/mysql
chmod 755 /etc/rc.d/init.d/mysql
echo &quot;/etc/rc.d/init.d/mysql start&quot;&gt;&gt;/etc/rc.d/rc.sysinit

/etc/rc.d/init.d/mysql start

%clean
rm -rf %{buildroot}

%files
%attr(-, root, root) %doc /usr/doc/MySQL-%{mysql_version}/

%attr(755, root, root) /usr/bin/isamchk
%attr(755, root, root) /usr/bin/isamlog
%attr(755, root, root) /usr/bin/pack_isam
%attr(755, root, root) /usr/bin/myisamchk
%attr(755, root, root) /usr/bin/myisamlog
%attr(755, root, root) /usr/bin/myisampack
%attr(755, root, root) /usr/bin/mysql_fix_privilege_tables
%attr(755, root, root) /usr/bin/mysql_convert_table_format
%attr(755, root, root) /usr/bin/mysql_install_db
%attr(755, root, root) /usr/bin/mysql_setpermission
%attr(755, root, root) /usr/bin/mysql_zap
%attr(755, root, root) /usr/bin/mysqlbug
%attr(755, root, root) /usr/bin/mysqltest
%attr(755, root, root) /usr/bin/mysqlhotcopy
%attr(755, root, root) /usr/bin/perror
%attr(755, root, root) /usr/bin/replace
%attr(755, root, root) /usr/bin/resolveip
%attr(755, root, root) /usr/bin/resolve_stack_dump
%attr(755, root, root) /usr/bin/safe_mysqld
%attr(755, root, root) /usr/bin/mysqld_multi
%attr(755, root, root) /usr/bin/my_print_defaults

%attr(644, root, root) /usr/info/mysql.info*

%attr(755, root, root) /usr/sbin/mysqld
%attr(644, root, root) /usr/lib/mysql/mysqld.sym

%attr(644, root, root) /etc/logrotate.d/mysql
%attr(755, root, root) /etc/rc.d/init.d/mysql

%attr(755, root, root) /usr/share/mysql/

%attr(755, root, root) /usr/bin/msql2mysql
%attr(755, root, root) /usr/bin/mysql
%attr(755, root, root) /usr/bin/mysqlaccess
%attr(755, root, root) /usr/bin/mysqladmin
%attr(755, root, root) /usr/bin/mysqlcheck
%attr(755, root, root) /usr/bin/mysql_find_rows
%attr(755, root, root) /usr/bin/mysqldump
%attr(755, root, root) /usr/bin/mysqlimport
%attr(755, root, root) /usr/bin/mysqlshow
%attr(755, root, root) /usr/bin/mysqlbinlog

%attr(644, root, man) %doc /usr/man/man1/mysql.1*
%attr(644, root, man) %doc /usr/man/man1/isamchk.1*
%attr(644, root, man) %doc /usr/man/man1/isamlog.1*
%attr(644, root, man) %doc /usr/man/man1/mysql_zap.1*
%attr(644, root, man) %doc /usr/man/man1/mysqlaccess.1*
%attr(644, root, man) %doc /usr/man/man1/mysqladmin.1*
%attr(644, root, man) %doc /usr/man/man1/mysqld.1*
%attr(644, root, man) %doc /usr/man/man1/mysqld_multi.1*
%attr(644, root, man) %doc /usr/man/man1/mysqldump.1*
%attr(644, root, man) %doc /usr/man/man1/mysqlshow.1*
%attr(644, root, man) %doc /usr/man/man1/perror.1*
%attr(644, root, man) %doc /usr/man/man1/replace.1*
%attr(644, root, man) %doc /usr/man/man1/safe_mysqld.1*


Dat %files gedeelte heb ik van de ORIGINELE (mysql) .spec gehaald...
maar /usr veranderen in /home/mysql (zie ./configure prefix!) werkt ook niet!!!

Verwijderd

Verwijderd schreef op 09 augustus 2002 @ 21:55:
code:
1
%attr(755, root, root) /usr/bin/mysqlbinlog
Maak daar eens %{_bindir}/mysqlbinlog van?

En van die man pages locaties mag je %{prefix}/man/... maken.

Verwijderd

Die "make install" en die "mkdir" en "rm" commando's geef je zo op, zonder %{_bindir} or %{RPM_BUILD_ROOT} ?
Dan doet hij dat dus gewoon op je / filesystem. Dat is niet echt lekker lijkt me. Je compileert dus als root, anders zou je als user tegen foutmeldingen oplopen.
Ik vind dat je erg enge dingen loopt te doen. Je zou beter als user je rpms kunnen bouwen.

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Processing files: mysql
File not found: /var/tmp/mysql/usr/doc/MySQL-%mysql_version
File not found: /var/tmp/mysql/%_bindir/isamchk
File not found: /var/tmp/mysql/%_bindir/isamlog
File not found: /var/tmp/mysql/%_bindir/pack_isam
File not found: /var/tmp/mysql/%_bindir/myisamchk
File not found: /var/tmp/mysql/%_bindir/myisamlog
File not found: /var/tmp/mysql/%_bindir/myisampack
File not found: /var/tmp/mysql/%_bindir/mysql_fix_privilege_tables
File not found: /var/tmp/mysql/%_bindir/mysql_convert_table_format
File not found: /var/tmp/mysql/%_bindir/mysql_install_db
File not found: /var/tmp/mysql/%_bindir/mysql_setpermission
File not found: /var/tmp/mysql/%_bindir/mysql_zap
File not found: /var/tmp/mysql/%_bindir/mysqlbug
File not found: /var/tmp/mysql/%_bindir/mysqltest
File not found: /var/tmp/mysql/%_bindir/mysqlhotcopy
File not found: /var/tmp/mysql/%_bindir/perror
File not found: /var/tmp/mysql/%_bindir/replace
File not found: /var/tmp/mysql/%_bindir/resolveip
File not found: /var/tmp/mysql/%_bindir/resolve_stack_dump
File not found: /var/tmp/mysql/%_bindir/safe_mysqld
File not found: /var/tmp/mysql/%_bindir/mysqld_multi
File not found: /var/tmp/mysql/%_bindir/my_print_defaults
File not found: /var/tmp/mysql/usr/info/mysql.info*
File not found: /var/tmp/mysql/usr/sbin/mysqld
File not found: /var/tmp/mysql/usr/lib/mysql/mysqld.sym
File not found: /var/tmp/mysql/etc/logrotate.d/mysql
File not found: /var/tmp/mysql/etc/rc.d/init.d/mysql
File not found: /var/tmp/mysql/usr/share/mysql
File not found: /var/tmp/mysql/%_bindir/msql2mysql
File not found: /var/tmp/mysql/%_bindir/mysql
File not found: /var/tmp/mysql/%_bindir/mysqlaccess
File not found: /var/tmp/mysql/%_bindir/mysqladmin
File not found: /var/tmp/mysql/%_bindir/mysqlcheck
File not found: /var/tmp/mysql/%_bindir/mysql_find_rows
File not found: /var/tmp/mysql/%_bindir/mysqldump
File not found: /var/tmp/mysql/%_bindir/mysqlimport
File not found: /var/tmp/mysql/%_bindir/mysqlshow
File not found: /var/tmp/mysql/%_bindir/mysqlbinlog
File not found: /var/tmp/mysql/%_prefix/man/man1/mysql.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/isamchk.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/isamlog.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/mysql_zap.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/mysqlaccess.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/mysqladmin.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/mysqld.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/mysqld_multi.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/mysqldump.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/mysqlshow.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/perror.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/replace.1*
File not found: /var/tmp/mysql/%_prefix/man/man1/safe_mysqld.1*
Prereqs: /bin/sh


dat krijg ik.....

  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

Verwijderd schreef op 10 augustus 2002 @ 19:20:
code:
1
2
Processing files: mysql
File not found: /var/tmp/mysql/usr/doc/MySQL-%mysql_version


dat krijg ik.....
De %makeinstall gaat niet goed.
Kijken wat er mis gaat :

rpm -bi --short-circuit mysql.spec >log 2>&1

Vaak gooit install (make) de zaken in de verkeerde dir, met die log kun je kijken waar ie het neergooit.

Verwijderd

Topicstarter
volgens mij pleurt ie het dus gewoon in /home/mysql

Verwijderd

Gebruik ipv %_bindir etc. eens %{_bindir}. Het lijkt alsof hij die macros niet goed oppikt. Ik zou verwachten dat de %{_bindir} macros wel goed werken.

En volgens jou gooit hij het in /home/mysql, dat weet je zeker?
Tja, dan gaat er dus iets fout. Maar ik heb niet veel Makefiles gezien waarbij je een "make install" kunt geven, en dat hij het dan in een tijdelijke dir installeert.
Alternatieven om te proberen ipv "make install":
%makeinstall
make --prefix=$RPM_BUILD_ROOT/%{_prefix} install
make DESTDIR=$RPM_BUILD_ROOT/%{_prefix} install


Maar verder....
Blijkbaar heb je weinig ervaring met rpm, en helemaal met src.rpm's. Is het niet verstandiger eerst eens wat te vogelen prefab src.rpm's? Dat je dus een src.rpm download, en de specfile daarvan wat aanpast aan je eigen wensen, kijkt wat er goed of fout gaat na die veranderingen, en er zo wat ervaring in krijgt.
Volgens mij maak je het jezelf nu wat te moeilijk.

Verwijderd

Topicstarter
ik heb al wat gekloot met SRPMS... dat lukt opzich redelijk...

maar als ik --prefix=$RPM_BUILD_ROOT/%{_prefix} install doe
gaat ie dan bij de rpm -i niet fout?
of installed ie dan goed?

Verwijderd

Als het goed is zal hij bij het samenstellen van de rpm kijken naar de fiules in %files, en die zal hij zoeken in $RPM_BUILD_ROOT. Dat is dus waar je make install heen moet installeren.
Blijkbaar is dat ingesteld als /var/tmp/mysql. Hij kijkt in de %files sectie, wil een bestand in de rpm zetten, en vindt hem niet. Dan krijg je de foutmelding "file not found". Als de "make install" goed gegaan was zou hij hem dus in /var/tmp/mysql installeren, en van daaruit de rpm samenstellen.

Verwijderd

Topicstarter
hmm.,... effe kijken of ik dit goed begrijp

1) make install is een compilatie van de grond af aan van broncodes (zoals bij windows zeg maar een install met registry input)
2) %files is een VERZAMELING LOSSE FILES die bij elkaar geplukt wordt (net zoals een win-proggie op diskette zetten (ZONDER REG!))

zoiets zeg maar? even zodat ik de picture get zeg maar..

Verwijderd

Sorry, maar ik denk toch echt dat je wat basiskennis mist, en dat je zo niet echt verder gaat komen. Ik heb het idee dat ik op al je vragen driedubbel antwoord geef, en nog heb ik het idee dat het niet overkomt.
Software installeren vanaf source.tar.gz houdt meestal 3 stappen in: ./configure; make; make install.
Met een rpm maken doe je in principe hetzelfde, alleen wil je de make install in een tijdelijke dir doen, de $RPM_BUILD_ROOT of %buildroot of wat er maar werkt op jouw systeem. Van daaruit laat je rpm de feitelijke rpm bouwen met behulp van de %files sectie.
Dit zou intussen echt duidelijk moeten zijn, en ik kan je dan ook niet verder helpen.
Hier zijn wat links naar rpm documentatie:
http://www.linux-mandrake.com/howtos/mdk-rpm/
http://www-106.ibm.com/de...l?Open&t=grl,l=335,p=RPM3
http://www.tldp.org/HOWTO/RPM-HOWTO/index.html
Succes verder.

Verwijderd

Verwijderd schreef op 11 augustus 2002 @ 20:57:
make DESTDIR=$RPM_BUILD_ROOT/%{_prefix} install
die moet je hebben, afaik, maar dan %{prefix} ipv %{_prefix}

Verwijderd

Verwijderd schreef op 12 augustus 2002 @ 15:30:
die moet je hebben, afaik, maar dan %{prefix} ipv %{_prefix}
Hmm, ja, dat zou kunnen. Ik vind het wel eens verwarrend wanneer er nou %{macro} en %{_macro} gebruikt wordt. Je ziet het vaak door elkaar, maar of het nou verschillend is...
Nou ja.
De DESTDIR hangt er trouwens van af of dat ook in de Makefile staat. Anders werkt --prefix wel eens. Of gewoon cp :-)

  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

BuildRooot: %{_tmppath}/%{name}-%{version}
%build
./configure --prefix=/home/mysql --with-unix-socket-path=/tmp/mysql.sock --with-mysqld-user=mysql --with-low-memory --disable-assembler --disable-shared --with-mysqld-ldflags="-all-static" --with-client-ldflags="-all-static"
%configure --with-unix-socket-path=/tmp/mysql.sock --with-mysqld-user=mysql --with-low-memory --disable-assembler --disable-shared --with-mysqld-ldflags="-all-static" --with-client-ldflags="-all-static"
%install
make install
make install DESTDIR=$RPM_BUILD_ROOT

[/quote]
%post
chown mysql.mysql /home/mysql
scripts/mysql_install_db
chown -R mysql.mysql /home/mysql/var
mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
rm -f /usr/sbin/mysql
ln -s /home/mysql/bin/mysql /usr/sbin/mysql
chmod 755 /home/mysql/var/
/home/mysql/bin/mysqladmin -u root password 'raqtweak-mysql'
cp support-files/mysql.server /etc/rc.d/init.d/mysql
chmod 755 /etc/rc.d/init.d/mysql
echo "/etc/rc.d/init.d/mysql start">>/etc/rc.d/rc.sysinit
[/quote]

Bah.. NOOIT geen permissies zetten in de post, die moeten netjes in %files

Verders in %files de %{_bindir}, %{_sbindir}, etc gebruiken.

Verwijderd

Topicstarter
Okay ik denk dat ik het snap... Wat ik dus DACHT is dat wanneer ik een make install zou doen in een temp dir is dat wanneer ik een rpm -i zou doen hij dat OOK dan in die temp dir zou zetten en NIET in /home/mysql .... snap je?

Verwijderd

Topicstarter
/edit
oeps

Verwijderd

Topicstarter
klopt dat nou wat ik daar loop te ijlen? :D

en trouwens... ik denk dat ik het een beetje begin te snappen... maar hoe weet ik nou welke files ik in %files moet zetten (die dus door make install gemaakt zijn)
Pagina: 1