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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<META HTTP-EQUIV="content-type" content="text/html; charset=iso-8859-2">
<TITLE>Menader Pakietw RedHat-a (RPM) - Jak To Zrobi</TITLE>
</HEAD>
<BODY>
<H1>Menader Pakietw RedHat-a (RPM) - Jak To Zrobi<BR></H1>
<H2>Autor: Donnie Barnes <BR>
<A HREF="mailto:djb@redhat.com">djb@redhat.com</A><BR>
V2.0, 8 Kwietnia 1997<BR>
<B>Wersja polska: Jacek Pliszka
<A HREF="mailto:pliszka@fuw.edu.pl">pliszka@fuw.edu.pl</A><BR> </B> </H2>
<P><HR>
<EM>Niniejszy dokument jest tumaczeniem RPM-HOWTO
i w skrcie opisuje jak co zrobi uywajc rpm-a
czyli Menadera Pakietw RedHat-a (<B>R</B>edHat <B>P</B>ackage <B>M</B>anager).
Dokument ten zosta napisany w standardzie ISO-8859-2.
Orygina tumaczenia tego dokumentu znajduje si pod adresem
<A HREF="http://www.jtz.org.pl">http://www.jtz.org.pl</A>.
http://www.jtz.org.pl a take na
<A HREF="ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/">ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/</A>.</EM>
<HR>
<H2><A NAME="s1">1. Wprowadzenie</A></H2>
<P>Skrt RPM pochodzi od ang.
<B>R</B>ed Hat <B>P</B>ackage <B>M</B>anager co oznacza
w wolnym tumaczeniu menader pakietw RedHat-a.
Jednak pomimo tego, e w nazwie znajduje si Red Hat,
to w zamierzeniu jest on systemem otwartym,
dostpnym dla kadego. Umoliwia on spakowanie
zarwno kodu rdowego jak i programw binarnych
do zwartej postaci zawierajcej dodatkowo
informacje istotne przy zarzdzaniu oprogramowaniem.
Umoliwia to atw instalacj, odwieanie oraz
usuwanie oprogramowania. Informacja o zainstalowanym
oprogramowaniu jest atwo dostpna jako e
RPM tworzy baz danych o wszystkich pakietach
zainstalowanych w naszym systemie.
Pozwala to na szybkie sprawdzenie czy dany pakiet
jest zainstalowany, a jeli tak to co zawiera,
jaka jest jego wersja, jakie pliki zostay przez niego
w systemie zainstalowane oraz jakich innych pakietw wymaga.
Pozwala te sprawdzi do jakiego pakietu naley dany plik.
<P>Przyp. tum. rpm jest obecnie uywany zarwno
do plikw w postaci rdowej jak i binarnej. W oryginale
autor odwouj si gwnie do tej pierwszej. Jednak poniewa
obecnie czciej uywa si pakietw w postaci binarnej
to pliki z ktrych powsta rpm a ktre maj by zainstalowane
rwnie bd nazywa plikami rdowymi za proces instalacji
bd kompilacji - instalacj.
<P>
<P>Firma Red Hat Software zachca inne firmy i grupy tworzce
oprogramowanie do bliszego zapoznania si z RPM
i wykorzystania go przy tworzeniu wasnych pakietw.
Bdc do elastycznym i atwym w uyciu, RPM
pozwala budowa nawet bardzo obszerne zbiory pakietw.
Pomimo tego, e jest to system cakowicie otwarty i dostpny,
jego autorzy chtnie wysuchaj informacji
o bdach i ewentualnych poprawkach.
(Jednak przed zgoszeniem ``bdu'' naley, tak jak zawsze,
najpierw sprawdzi czy ma si najnowsz stabiln wersj,
przejrze dokumentacj oraz przeszuka archiwa
USENET i jeli i tam nie bdzie odpowiedzi - spyta
na odpowiedniej grupie dyskusyjnej np. pl.comp.os.linux
-przyp. tum.)
Uywanie i rozpowszechnianie RPM jest wolne od opat
i regulowane Publiczn Licencj GNU - GPL
(ang. GNU Public Licence).
<P>
<P>Bardziej szczegowa dokumentacja dotyczca RPM
jest zawarta w ksice Eda Bailey'a, <EM>Maximum RPM</EM>,
ktra mona cign bd zakupi
w
<A HREF="http://www.redhat.com">www.redhat.com</A>.
<P>
<H2><A NAME="s2">2. Do czego suy RPM?</A></H2>
<P>Na pocztku warto powiedzie co nieco o ``filozofii'' RPM.
Celem jego projektantw byo umoliwienie uycia
pierwotnych kodw rdowych. Zanim powsta RPM,
jego autorzy uywali RPP (przy czym podkrelaj,
e RPM <EM>nie</EM> nie jest na nim oparty ), w ktrym udostpniano
poprawione kody rdowe, konkretnie te, ktre byy
uywane do instalacji.
Teoretycznie mogoby to wystarczy, bo mona
byo zainstalowa pakiet rdowy RPP i skompilowa
go (poleceniem <CODE>make</CODE>) bez wikszych problemw.
Jednake nie byy to oryginalne rda i trudno
byo na pierwszy rzut oka powiedzie co w nich zostao zmienione.
Niezbdnym byo cignicie rwnie oryginalnych
rde.
RPM za zawiera oryginalne rda wraz z poprawkami
ktrych dokonano. W opinii autorw rozwizanie
to jest znacznie lepsze. Dlaczego?
<P>Z paru powodw. Po pierwsze, jeli pojawi si nowa
wersja programu to nie zaczynamy od zera. Niektre
poprawki, ktre byy dobre dla poprzedniej wersji,
mog by waciwe, najwyej po minimalnych zmianach
i dla obecnej. By si o tym przekona,
wystarczy do nich zajrze.
Poza tym wszystkie domylne opcje potrzebne
do instalacji s w ten sposb atwo dostpne.
<P>
<P>
<P>Poza tym RPM zaprojektowano tak, aby umoliwi
sprawdzanie wielu istotnych informacji dotyczcych
zarwno pojedyczego, konkretnego pakietu jak
i ich zestawu
bd te wszystkich pakietw zainstalowanych w danym systemie.
Przykadem takiej informacji jest lista pakietw, ktrych
dany pakiet wymaga wraz z numerami wersji.
Moliwe jest rwnie sprawdzenie z jakiego pakietu
pochodzi konkretny plik oraz gdzie mona znale
jego wersj rdow.
Pliki RPM s ju wewntrznie spakowane, ale sprawdzanie
informacji dotyczcych konkretnego pakietu jest
proste i <EM>szybkie</EM> dziki specjalnemu binarnemu nagwkowi
ktry zawiera praktycznie wszystkie niezbdne informacje
o pakiecie.
<P>
<P>Innym atutem RPM jest umiejtno weryfikacji pakietw.
Jeli boisz si, e skasowae jaki wany plik,
to moesz to po prostu sprawdzi. RPM poinformuje Ci
o wykrytych nieprawidowociach. Jeli zajdzie
potrzeba, to moesz atwo odnowi zainstalowany pakiet
przy czym Twoje pliki konfiguracyjne zostan zachowane.
Oczywicie moesz te zainstalowa je od nowa.
<P>
<P>
<P>Autorzy chc podzikowa grupie ludzi od dystrybucji BOGUS
za wiele ich idei i pomysw ktre wykorzystano w RPM.
Gdy o ile RPM zosta napisany w caoci przez Red Hat Software,
to zasady jego dziaania s oparte na kodzie stworzonym
przez BOGUS (PM oraz PMS).
<P>
<H2><A NAME="s3">3. Informacje oglne</A></H2>
<P>
<H2>3.1 Skd wzi RPM?</H2>
<P>Najprostszym sposobem jest instalacja Linux-a Red Hat.
Jeli kto nie chce tego robi to moe uywa RPM
bez tego. W Polsce RPM jest dostpny np. pod adresem:
<A HREF="ftp://ftp.icm.edu.pl/pub/redhat/code/rpm">ftp.icm.edu.pl</A> - polskim mirrorze ftp.redhat.com.
<P>
<H2>3.2 Wymagania RPM </H2>
<P>Podstawowym wymaganiem RPM-a jest cpio o numerze wersji 2.4.2
lub wyszym. Mimo e RPM jest pomylany do pracy
pod Linux-em to rwnie moe by przeniesiony na
inne systemy Unix. W rzeczywistoci udao si go ju
uruchomi pod SunOS, Solaris, AIX, Irix, AmigaOS
i wieloma innymi systemami.
Jednak naley pamita, e pakiety binarne stworzone
na rnych Unix-ach mog nie by ze sob zgodne.
<P>
<P>S to minimalne wymagania by zainstalowa RPM-y.
By tworzy RPM-y z kodu rdowego potrzebne
jest rwnie wszystko to co normalnie jest
wymagane przy tworzeniu pakietu np.
<CODE>gcc</CODE>, <CODE>make</CODE>, itd.
<P>
<H2><A NAME="s4">4. Uywanie RPM</A></H2>
<P>Najprostszym wykorzystaniem RPM jest instalacja
nowego pakietu:
<BLOCKQUOTE><CODE>
<PRE>
rpm -i foobar-1.0-1.i386.rpm
</PRE>
</CODE></BLOCKQUOTE>
Rwnie proste jest jego odinstalowanie:
<BLOCKQUOTE><CODE>
<PRE>
rpm -e foobar
</PRE>
</CODE></BLOCKQUOTE>
<P>Przykadem bardziej zoonego, ale <EM> bardzo</EM>
uytecznego polecenia jest instalacja pakietw
poprzez FTP. Jeli jeste podczony do sieci
i chcesz zainstalowa nowy pakiet, to wszystko
co musisz zrobi to poda nazw pliku jako poprawny URL, np.:
<BLOCKQUOTE><CODE>
<PRE>
rpm -i ftp://ftp.pht.com/pub/linux/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm
</PRE>
</CODE></BLOCKQUOTE>
<P>Chciabym podkreli, e w tym przypadku RPM
sprawdzi bd zainstaluje pakiet poprzez FTP.
<P>Byy to w miar proste polecenia, lecz rpm moe by
uyty na wiele wicej sposobw jak mona si atwo
przekona piszc w linii komend
<BLOCKQUOTE><CODE>
<PRE>
rpm
</PRE>
</CODE></BLOCKQUOTE>
i naciskajc Enter:
<BLOCKQUOTE><CODE>
<PRE>
RPM version 2.3.9
Copyright (C) 1997 - Red Hat Software
This may be freely redistributed under na warunkach
of the
GNU Public License
usage: rpm {--help}
rpm {--version}
rpm {--initdb} [--dbpath <dir>]
rpm {--install -i} [-v] [--hash -h] [--percent] [--force] [--test]
[--replacepkgs] [--replacefiles] [--root <dir>]
[--excludedocs] [--includedocs] [--noscripts]
[--rcfile <file>] [--ignorearch] [--dbpath <dir>]
[--prefix <dir>] [--ignoreos] [--nodeps]
[--ftpproxy <host>] [--ftpport <port>]
file1.rpm ... fileN.rpm
rpm {--upgrade -U} [-v] [--hash -h] [--percent] [--force] [--test]
[--oldpackage] [--root <dir>] [--noscripts]
[--excludedocs] [--includedocs] [--rcfile <file>]
[--ignorearch] [--dbpath <dir>] [--prefix <dir>]
[--ftpproxy <host>] [--ftpport <port>]
[--ignoreos] [--nodeps] file1.rpm ... fileN.rpm
rpm {--query -q} [-afpg] [-i] [-l] [-s] [-d] [-c] [-v] [-R]
[--scripts] [--root <dir>] [--rcfile <file>]
[--whatprovides] [--whatrequires] [--requires]
[--ftpuseport] [--ftpproxy <host>] [--ftpport <port>]
[--provides] [--dump] [--dbpath <dir>] [targets]
rpm {--verify -V -y} [-afpg] [--root <dir>] [--rcfile <file>]
[--dbpath <dir>] [--nodeps] [--nofiles] [--noscripts]
[--nomd5] [targets]
rpm {--setperms} [-afpg] [target]
rpm {--setugids} [-afpg] [target]
rpm {--erase -e} [--root <dir>] [--noscripts] [--rcfile <file>]
[--dbpath <dir>] [--nodeps] [--allmatches]
package1 ... packageN
rpm {-b|t}[plciba] [-v] [--short-circuit] [--clean] [--rcfile <file>]
[--sign] [--test] [--timecheck <s>] specfile
rpm {--rebuild} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm
rpm {--recompile} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm
rpm {--resign} [--rcfile <file>] package1 package2 ... packageN
rpm {--addsign} [--rcfile <file>] package1 package2 ... packageN
rpm {--checksig -K} [--nopgp] [--nomd5] [--rcfile <file>]
package1 ... packageN
rpm {--rebuilddb} [--rcfile <file>] [--dbpath <dir>]
rpm {--querytags}
</PRE>
</CODE></BLOCKQUOTE>
<P>Wszystkie te opcje s opisane
w podrczniku systemowym "man" dotyczcym RPM.
<P>
<H2><A NAME="s5">5. A co tak <EM>naprawd</EM> mona zrobi z RPM?</A></H2>
<P>RPM jest bardzo wygodnym narzdziem i
jak mona byo si przekona, ma sporo opcji.
Najlepsz metod zapoznania si z nimi s przykady.
<P>Pokazaem ju najprostsz instalacj i usuwanie pakietw,
czas na troch ciekawsze przykady:
<UL>
<LI> W praktyce instalujc pakiet
chce si usunc jego star wersj (opcja -U od ang. upgrade). Czsto chcemy
rwnie widzie postp instalacji (-h od ang. hash) oraz
dosta poszerzone komunikaty o bdach (-v od ang. verbose),
tak wic praktycznie najczciej pakiety instaluje si
poprzez:
<BLOCKQUOTE><CODE>
<PRE>
rpm -Uhv foobar-1.0-1.i386.rpm
</PRE>
</CODE></BLOCKQUOTE>
</LI>
<LI>Powiedzmy, e skasowae przypadkiem jakie pliki,
niestety, nie znasz nawet ich nazw.
Jeli wic chcesz zweryfikowa cay system i
sprawdzi czego moe brakowa, zrb tak:
<BLOCKQUOTE><CODE>
<PRE>
rpm -Va
</PRE>
</CODE></BLOCKQUOTE>
(od ang. Verify all)</LI>
<LI>Powiedzmy, e natkne si na plik, ktrego nie znasz.
eby sprawdzi do jakiego pakietu naley, zrb:
<BLOCKQUOTE><CODE>
<PRE>
rpm -qf /usr/X11R6/bin/xjewel
</PRE>
</CODE></BLOCKQUOTE>
(od ang. query file).
W wyniku otrzymasz nazw pakietu:
<BLOCKQUOTE><CODE>
<PRE>
xjewel-1.6-1
</PRE>
</CODE></BLOCKQUOTE>
</LI>
<LI>Natkne si na jaki plik RPM i chciaby sprawdzi
co jest w rodku. Zrb tak:
<BLOCKQUOTE><CODE>
<PRE>
rpm -qpi koules-1.2-2.i386.rpm
</PRE>
</CODE></BLOCKQUOTE>
Wywietli Ci si co takiego:
<BLOCKQUOTE><CODE>
<PRE>
Name : koules Distribution: Red Hat Linux Colgate
Version : 1.2 Vendor: Red Hat Software
Release : 2 Build Date: Mon Sep 02 11:59:12 1996
Install date: (none) Build Host: porky.redhat.com
Group : Games Source RPM: koules-1.2-2.src.rpm
Size : 614939
Summary : SVGAlib action game with multiplayer, network, and sound support
Description :
This arcade-style game is novel in conception and excellent in execution.
No shooting, no blood, no guts, no gore. The play is simple, but you
still must develop skill to play. This version uses SVGAlib to
run on a graphics console.
</PRE>
</CODE></BLOCKQUOTE>
(od ang. query package info).</LI>
<LI>A teraz chciaby sprawdzi jakie pliki wchodz w skad
tego pakietu:
<BLOCKQUOTE><CODE>
<PRE>
rpm -qpl koules-1.2-2.i386.rpm
</PRE>
</CODE></BLOCKQUOTE>
W wyniku otrzymasz ich list:
<BLOCKQUOTE><CODE>
<PRE>
/usr/doc/koules
/usr/doc/koules/ANNOUNCE
/usr/doc/koules/BUGS
/usr/doc/koules/COMPILE.OS2
/usr/doc/koules/COPYING
/usr/doc/koules/Card
/usr/doc/koules/ChangeLog
/usr/doc/koules/INSTALLATION
/usr/doc/koules/Icon.xpm
/usr/doc/koules/Icon2.xpm
/usr/doc/koules/Koules.FAQ
/usr/doc/koules/Koules.xpm
/usr/doc/koules/README
/usr/doc/koules/TODO
/usr/games/koules
/usr/games/koules.svga
/usr/games/koules.tcl
/usr/man/man6/koules.svga.6
</PRE>
</CODE></BLOCKQUOTE>
(od ang. query package list)</LI>
<LI> Chcesz wywietli list pakietw zainstalowanych
w Twoim systemie? Nic prostszego:
<BLOCKQUOTE><CODE>
<PRE>
rpm -qa
</PRE>
</CODE></BLOCKQUOTE>
(od ang. query all).</LI>
<LI> Chcesz sprawdzi czy pakiet jest kompletny,
nie przekamany i mam poprawny podpis PGP?
<BLOCKQUOTE><CODE>
<PRE>
rpm -K -vv pakiet.rpm
</PRE>
</CODE></BLOCKQUOTE>
</LI>
</UL>
<P>To byo tylko par przykadw, wicej znajdziesz np. w man-ie.
Na pewno wpadniesz na ciekawsze w miar jak bdziesz lepiej
poznawa RPM.
<P>
<H2><A NAME="s6">6. Tworzenie rpm-w.</A></H2>
<P>Tworzenie rpm-w jest do proste,
szczeglnie jeli oprogramowanie ktre chcesz
w nie woy poprawnie si instaluje.
<P>Procedura tworzenia RPM-w wyglda tak:
<UL>
<LI>Upewnij si, e plik <CODE>/etc/rpmrc</CODE>
jest obecny i poprawnie skonfigurowany w Twoim systemie.</LI>
<LI>Doprowad to tego, e pliki rdowe dla ktrych
tworzysz rpm poprawnie si instaluj.</LI>
<LI>Przygotuj list poprawek jakich musiae
dokona by kod kompilowa si poprawnie.</LI>
<LI>Przygotuj plik specyfikujcy (.spec) dla Twojego pakietu.</LI>
<LI>Upewnij si, e wszystko jest na swoim miejscu.</LI>
<LI>Zbuduj pakiet uywajc rpm.</LI>
</UL>
<P>Zazwyczaj RPM tworzy zarwno pakiety binarne jak i rdowe.
<P>
<H2>6.1 Plik rpmrc </H2>
<P>W chwili obecnej, jedyny sposb konfiguracji RPM-a
jest dostpny poprzez plik <CODE>/etc/rpmrc</CODE>.
Przykadowy plik wyglda tak:
<BLOCKQUOTE><CODE>
<PRE>
require_vendor: 1
distribution: Moja wasna dystrybucja!
require_distribution: 1
topdir: /usr/src/me
vendor: Kubusoft
packager: Pakujcy RPM w Kubusoft <pakiety@kubusoft.com.pl>
optflags: i386 -O2 -m486 -fno-strength-reduce
optflags: alpha -O2
optflags: sparc -O2
signature: pgp
pgp_name: Pakujcy RPM w Kubusoft
pgp_path: /home/pakiety/.pgp
tmppath: /usr/tmp
</PRE>
</CODE></BLOCKQUOTE>
<P>Wiersz <CODE>require_vendor</CODE> zmusza RPM-a do szukania
wiersza z nazw producenta pakietw (vendor).
Ta moe pochodzi z pliku <CODE>/etc/rpmrc</CODE>
lub z nagwka pliku .spec.
By wyczy t opcj, zmie liczb na <CODE>0</CODE>.
Analogicznie jest w przypadku wierszy
<CODE>require_distribution</CODE> oraz
<CODE>require_group</CODE>.
<P>Nastpnym wiersz zawiera <CODE>distribution</CODE>
i okrela nazw dystrybucji.
Moesz j zdefiniowa tutaj, bd pniej,
w nagwku pliku specyfikujcego.
Tworzc pakiet dla konkretnej dystrybucji warto zadba
by wiersz ten zawiera poprawn informacj,
nawet pomimo tego, e nie jest wymagany.
Tyczy si to rwnie wiersza <CODE>vendor</CODE> (producent),
cho nazwa moe by zupenie dowolna
(np. Joe's Software, Rock Music Emporium).
<P>RPM pozwala rwnie tworzy pakiety dla rnych platform
sprztowych.
Plik <CODE>rpmrc</CODE> moe zawiera zmienn ``optflags''
wykorzystywan przy building budowaniu tych elementw pakietu,
ktre wymagaj opcji zalenych od platformy.
Dokadniejszy opis tej zmiennej pojawi si w jednym
z nastpnych rodziaw.
<P>Nie s to oczywicie wszystkie etykiety/makra.
Jest ich wicej. By si im przyjrze sprbuj komendy:
<BLOCKQUOTE><CODE>
<PRE>
rpm --showrc
</PRE>
</CODE></BLOCKQUOTE>
ktra powinna wypisa wszystkie moliwe etykiety
wraz z ich wartociami (o ile s ustawione).
<P>
<H2>6.2 Plik specyfikujcy .spec</H2>
<P>Niniejszy rozdzia zawiera opis pliku specyfikujcego dla
pakietu. Plik taki s niezbdne by stworzy pakiet.
Zawiera on opis oprogramowania wraz z instrukcjami
instalacyjnymi oraz list wszystkich plikw binarnych
przez niego instalowanych.
<P>Plik specyfikujcy warto jest nazwa zgodnie z konwencj.
Powinno to wyglda mniej wicej tak:
nazwa pakietu-kreska-numer wersji-kreska-numer modyfikacji-kropka-spec.
<P>A tak wyglda przykadowy plik specyfikujcy (eject-3.0-1.spec):
<BLOCKQUOTE><CODE>
<PRE>
Summary: ejects ejectable media and controls auto ejection
Name: eject
Version: 1.4
Release: 3
Copyright: GPL
Group: Utilities/System
Source: sunsite.unc.edu:/pub/Linux/utils/disk-management/eject-1.4.tar.gz
Patch: eject-1.4-make.patch
Patch1: eject-1.4-jaz.patch
%description
This program allows the user to eject media that is autoejecting like
CD-ROMs, Jaz and Zip drives, and floppy drives on SPARC machines.
%prep
%setup
%patch -p1
%patch1 -p1
%build
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
%install
install -s -m 755 -o 0 -g 0 eject /usr/bin/eject
install -m 644 -o 0 -g 0 eject.1 /usr/man/man1
%files
%doc README COPYING ChangeLog
/usr/bin/eject
/usr/man/man1/eject.1
</PRE>
</CODE></BLOCKQUOTE>
<P>
<H2>6.3 Nagwek</H2>
<P>Nagwek pliku .spec zawiera kilka standardowych pl ktre powinny by wypenione. Oto znaczenie poszczeglnych pl:
<P>
<UL>
<LI><CODE>Summary:</CODE> Jest to jednowierszowy,
skrcony opis pakietu. </LI>
<LI><CODE>Name:</CODE> To pole zawiera nazw pliku rpm.
cile jest to string bdcy t czci nazwy pliku
rpm ktra odpowiada nazwie pakietu.</LI>
<LI><CODE>Version:</CODE> To pole zawiera wersj pliku rpm.
cile jest to string bdcy t czci nazwy pliku
rpm ktra odpowiada wersji pakietu.</LI>
<LI><CODE>Release:</CODE> To pole zawiera numer modyfikacji
pliku rpm. Jest to liczba mwica z ktr
modyfikacj (podwersj) obecnej wersji pakietu
mamy do czynienia (tzn. jeli dokonany w pakiecie
tylko minimalnych poprawek bdw to wypuszczamy
pakiet w tej samej wersji ale z numerem modyfikacji
wikszym o jeden).</LI>
<LI><CODE>Icon:</CODE> To pole zawiera nazw pliku z ikon
przeznaczon do wykorzystania przez narzdzia
instalacyjne wyszego poziomu
(np. ``glint'' RedHat-a). Plik ten powinien by
zapisany w formacie GIF i znajdowa si w
katalogu SOURCES.</LI>
<LI><CODE>Source:</CODE> This wiersz zawiera nazw
pliku rdowego z ktrego jest budowany dany rpm.
Jest to pomocne w sytuacji gdy chce si kiedy
zajrze do odpowiednich kodw rdowych lub
sprawdzi
czy nie ma ich nowszej wersji.
Uwaga: Nazwa pliku w tym wierszu MUSI
odpowiada nazwie pliku obecnego w Twoim systemie.
(tzn. nie zmieniaj nazw plikw rdowych po
ich cigniciu). Mona poda wicej ni jeden
plik rdowy piszc w poniszy sposb:
<BLOCKQUOTE><CODE>
<PRE>
Source0: blah-0.tar.gz
Source1: blah-1.tar.gz
Source2: fooblah.tar.gz
</PRE>
</CODE></BLOCKQUOTE>
Te pliki powinny si znale w katalogu <CODE>SOURCES</CODE>.
(Struktura tego katalogu jest opisana w rozdziale
"Katalogi z plikami rdowymi".)</LI>
<LI><CODE>Patch:</CODE> To pole zawiera miejsce w ktrym
bdzie mona znale poprawki(patch) jeli
zainstnieje potrzeba ich ponownego cignicia.
Uwaga: Nazwa tego pliku musi odpowiada nazwie pliku
jaki jest uyty do naniesienia Twoich poprawek.
Mona te poda wiele plikw z poprawkami analogicznie
do wielu plikw rdowych:
<BLOCKQUOTE><CODE>
<PRE>
Patch0: blah-0.patch
Patch1: blah-1.patch
Patch2: fooblah.patch
</PRE>
</CODE></BLOCKQUOTE>
Te pliki powinny si znale w katalogu <CODE>SOURCES</CODE>.</LI>
<LI><CODE>Copyright:</CODE> Ten wiersz opisuje do jakiej
kategorii ze wzgldu na prawo autorskie naley
dane oprogramowanie. Najlepiej
wykorzysta jedn z dobrze zdefiniowanych kategorii:
GPL, BSD, MIT, public domain, distributable,
lub commercial.</LI>
<LI><CODE>BuildRoot:</CODE> Ten wiersz pozwala zdefiniowa
gwny katalog (``root'') dla tworzenia i instalacji pakietu.
Mona to wykorzysta np. do testowania instalacji pakietu
zanim si go zainstaluje w docelowym miejscu.</LI>
<LI><CODE>Group:</CODE> Ten wiersz suy do tego, by
programy instalacyjne wyszego poziomu (wspomniany
``glint'') wiedziay w jakim miejscu ich hierarchicznej
struktury grup pakietw umieci dany pakiet.
W chwili obecnej drzewo grup pakietw wyglda
mniej wicej tak:
<BLOCKQUOTE><CODE>
<PRE>
Applications
Communications
Editors
Emacs
Engineering
Spreadsheets
Databases
Graphics
Networking
Mail
Math
News
Publishing
TeX
Base
Kernel
Utilities
Archiving
Console
File
System
Terminal
Text
Daemons
Documentation
X11
XFree86
Servers
Applications
Graphics
Networking
Games
Strategy
Video
Amusements
Utilities
Libraries
Window Managers
Libraries
Networking
Admin
Daemons
News
Utilities
Development
Debuggers
Libraries
Libc
Languages
Fortran
Tcl
Building
Version Control
Tools
Shells
Games
</PRE>
</CODE></BLOCKQUOTE>
</LI>
<LI><CODE>%description</CODE> Nie jest to element nagwka
w cisym tego sowa znaczeniu ale jego opis powinien si znale
wraz z opisem nagwka. Dla kadego pakietu lub subpakietu
potrzebne jest jedno takie pole zawierajce przejrzysty
i zrozumiay opis pakietu.
</LI>
</UL>
<P>
<H2>6.4 Sekcja Prep</H2>
<P>Jest to druga cz pliku specyfikujcego.
Uywa si jej do przygotowania rde do kompilacji/instalacji.
W niej powinny znajdowa si wszystkie czynnoci
niezbdne by nanie poprawki do rde i doprowadzi
je do stanu w ktrym bdzie mona wyda komend <CODE>make</CODE>.
<P>Jedn rzecz naley podkreli:
Kada z tych czci jest tak naprawd tylko miejscem
do umieszczenia odpowiednich skryptw.
Moesz po prostu napisa skrypt w <CODE>sh</CODE>
a nastpnie umieci go po znaczniku <CODE>%prep</CODE>
by rozpakowa i wprowadzi poprawki do swoich programw.
By to uatwi powstay specjalne makra.
<P>Pierwszym z nich jest makro <CODE>%setup</CODE>.
W swojej najprostszej formie
(bez dodatkowych opcji w linii polece),
rozpakowywuje ona rda i zmienia biecy katalog
na katalog zawierajcy rda.
Poza tym ma jednak dodatkowe opcje:
<UL>
<LI><CODE>-n name</CODE> ustawi nazw roboczego katalogu na <CODE>name</CODE>.
Domylnie jest to <CODE>$NAZWA-$WERSJA</CODE>.
Do innych moliwoci nale <CODE>$NAZWA</CODE>,
<CODE>${NAZWA}${WERSJA}</CODE>,
czy jakakolwiek inna uywana przez gwny plik tar.
(Prosz zauway, e zmienne ``$'' <EM>nie</EM>
s faktycznymi zmiennymi dostpnymi wewntrz pliku
specyfikujcego. W rzeczywistoci s one tutaj uyte
w miejsce przykadowej nazwy. W pakiecie naley uy
rzeczywistej nazwy i wersji, a nie zmiennej.)</LI>
<LI><CODE>-c</CODE> utworzy i wejdzie do
wymienionego katalogu <EM>zanim</EM> zacznie si rozpakowywanie
poprzez untar.</LI>
<LI><CODE>-b #</CODE> wykona untar (rozpakuje) Source# <EM>zanim</EM> wejdzie do katalogu roboczego
(nie ma sensu czenie tej opcji z <CODE>-c</CODE>, a wic si tego nie robi).
Jest to przydatne w przypadku wielu plikw
rdowych.</LI>
<LI><CODE>-a #</CODE> wykona untar (rozpakuje) Source# <EM>po</EM> wejciu do katalogu.</LI>
<LI><CODE>-T</CODE> Ta opcja zmienia domyln procedur
rozpakowywania (untar) rde i wymaga <CODE>-b 0</CODE> lub
<CODE>-a 0</CODE> by gwny plik rdowy zosta rozpakowany (untar).
Komenda ta jest potrzebna gdy uywany jest wicej ni jeden
komplet plikw rdowych.</LI>
<LI><CODE>-D</CODE> <EM>Nie</EM> usuwaj katalogu przed
rozpakowaniem.
Jest ona przydatna tylko wtedy, gdy ma si wicej ni
jedno makro konfiguracyjne.
Powinna by uywana <EM>wycznie</EM> w makrach konfiguracyjnych
wycznie <EM>po</EM> wykonaniu pierwszego z nich
(ale nigdy wwntrz pierwszego z nich).</LI>
</UL>
<P>Nastpne dostpne makra znajduj si w makrze <CODE>%patch</CODE>.
Makro te pomaga zautomatyzowa proces nanoszenie poprawek
do rde.
Moliwe s liczne opcje opisane poniej:
<UL>
<LI><CODE>#</CODE> zastosuje Patch#
jako plik z poprawkami.</LI>
<LI><CODE>-p #</CODE> podaje liczb katalogw
do odrzucenia z nazwy przed wykorzystaniem polecenia patch(1)</LI>
<LI><CODE>-P</CODE> Domylnie stosowana jest
<CODE>Patch</CODE> (lub
<CODE>Patch0</CODE>). Ta flaga wycza to zachowanie a wic wymaga
dodatkowo <CODE>0</CODE> by gwne pliki rdowe zostay
rozpakowane. Opcja ta
jest przydatna w drugim (bd dalszym) makrze
<CODE>%patch</CODE> ktre wymaga innego ni pierwsze makro
numeru poprawki.</LI>
<LI> Mona te napisa <CODE>%patch#</CODE>
zamiast : <CODE>%patch # -P</CODE></LI>
</UL>
<P>To s wszystkie makra jakich potrzebujesz. Po ich poprawnym
napisaniu mona wykona dowolne inne komendy konfiguracyjne
poprzez stworzenie odpowiednich fragmentw skryptw w <CODE>sh</CODE>.
Wszystko co zostanie umieszczone a do makra <CODE>%build</CODE>
(omawianego w nastpnym rozdziale) bdzie wykonane przez <CODE>sh</CODE>.
Przykady powyej mog sugerowa rzeczy jakie chciaby
tam umieci.
<P>
<H2>6.5 Sekcja Build</H2>
<P>Dla tej sekcji nie ma jakich specjalnych makr.
Powinno si w niej umieszcza dowolne polecenia
potrzebne do stworzenia pakietu po rozpakowaniu
rde, naniesieniu poprawek i przejciu do katalogu
roboczego. Jest to po prostu nastpny zbir polece
przekazany do <CODE>sh</CODE>, wic mona tu uywa
dowolnych poprawnych polece <CODE>sh</CODE> (wcznie z komentarzami).
<B>Katalog roboczy na pocztku kadej z sekcji jest
ustawiany na katalog gwny z plikami rdowymi</B>,
o czym trzeba pamita i w razie potrzeby przechodzi
do odpowiednich podkatalogw.
<P>
<H2>6.6 Sekcja Install</H2>
<P>Tu rwnie nie ma jakich specjalnych makr. Sekcja
ta powinna zawiera list polece potrzebnych
do instalacji pakietu. Jeli wykonujesz
<CODE>make install</CODE> by zainstalowa pakiet, umie to tu.
Moesz rwnie nanie poprawki do makefile'a zanim
wykonasz <CODE>make install</CODE>. Jeli nie to umie tu sekwencj
polece <CODE>sh</CODE> jakich potrzebujesz. Katalog roboczy,
identycznie jak w poprzednim przypadku, jest ustawiany
przed wykonaniem tych polece na gwny katalog z plikami
rdowymi.
<P>
<H2>6.7 Opcjonalne sekcje pre i post dla sekcji Install/Uninstall</H2>
<P>Moesz tu umieci skrypty do wykonania przed i po
instalacji/deinstalacji (tzn. sekcjami Install/Uninstall).
Gwny powd to np. potrzeba wykonania komendy <CODE>ldconfig</CODE>
po instalacji bd usuwaniu pakietw zawierajcych biblioteki
dzielone. Makra s zdefiniowane jak poniej:
<UL>
<LI><CODE>%pre</CODE>
makro z poleceniami wykonywanymi przed sekcj Install.</LI>
<LI><CODE>%post</CODE>
makro z poleceniami wykonywanymi po sekcji Install.</LI>
<LI><CODE>%preun</CODE>
makro z poleceniami wykonywanymi przed sekcj Uninstall.</LI>
<LI><CODE>%postun</CODE>
makro z poleceniami wykonywanymi po sekcji Uninstall.</LI>
</UL>
<P>Sekcje te mog zawiera dowolne poprawne polecenia <CODE>sh</CODE>
( <EM>nie</EM> potrzebujesz wstawia <CODE>#!/bin/sh</CODE>
na pocztku).
<P>
<H2>6.8 Sekcja Files</H2>
<P>W sekcji tej <EM>musisz</EM> wypisa pliki jakie wchodz
w skad pakietu. RPM nie potrafi okreli jakie pliki
zostaj zainstalowan na skutek np. <CODE>make install</CODE>.
Tego si po prostu <EM>NIE DA</EM> rozsdnie zrobi.
Owszem, bya propozycja wykonywania polecenia <CODE>find</CODE>
przed i po instalacji pakietu. Jednak w systemach
wielouytkownikowych nie jest to zbyt sensowne gdy
w tym samym czasie mogo powsta wiele innych plikw nie
majcych najmniejszego zwizku z instalowanym pakietem.
<P>W tej sekcji dostpne jest pare specjalnych makr.
S one opisane poniej:
<UL>
<LI><CODE>%doc</CODE> suy do zaznaczenia ktre pliki
pakietu s jego dokumentacj. Dokumentacja ta zostanie
umieszczona w katalogu:
<CODE>/usr/doc/$NAZWA-$WERSJA-$MODYFIKACJA</CODE>.
Mona zarwno poda nazwy kilku plikw w linii zawierajcej
to makro jak i poda te nazwy oddzielnie uywajc makra
dla kadej z nich.</LI>
<LI><CODE>%config</CODE> suy do zaznaczenia plikw
konfiguracyjnych w obrbie pakietu. Chodzi tu o pliki typu:
sendmail.cf, passwd, etc. W trakcie deinstalacji pliki
te s usuwane o ile nie byy zmieniane. Jeli byy,
to ich nazwa zostaje zmieniona poprzez dodanie kocwki
<CODE>.rpmsave</CODE>.
Analogicznie jak dla plikw z dokumentacj jedno makro
moe suy do zdefiniowania kilku takich plikw.</LI>
<LI><CODE>%dir</CODE> zaznacza dany katalog jako
nalecy do pakietu. Domylnie, jeli pojawi si
nazwa katalogu <EM>BEZ</EM> makra <CODE>%dir</CODE>, <EM>WSZYSTKO</EM>
w tym katalogu jest wczane w liste plikw i nastpnie instalowane jako cz pakietu. To makro pozwala tego unikn.</LI>
<LI><CODE>%files -f <filename></CODE> pozwala
na wczenie listy plikw znajdujcej si w jakim
pliku w obrbie katalogu z plikami rdowymi.
Jest to wygodne gdy procedura instalacji buduje
wasn list plikw ktr nastpnie mona wczy jedn komend
bez podawania nazw tych plikw.</LI>
</UL>
<P> Najwiksz trudnoci w licie plikw jest podawanie
katalagw. Jeli np. podasz przez pomyk
<CODE>/usr/bin</CODE>, to Twj pakiet rpm bdzie zawiera
<EM>wszystkie</EM> pliki w katalogu <CODE>/usr/bin</CODE>
w Twoim komputerze.
<P>
<H2>6.9 Tworzenie pakietu</H2>
<P>
<H3>Katalogi z plikami rdowymi</H3>
<P>Jedn z podstawowych rzeczy jest poprawnie skonfigurowane
katalogw w ktrych RPM bdzie budowa pakiet.
Robi si to poprzez plik <CODE>/etc/rpmrc</CODE>.
Wikszo osb uywa po prostu <CODE>/usr/src</CODE>.
<P>Moliwe, e bdziesz potrzebowa utworzy ponisze katalogi:
<UL>
<LI><CODE>BUILD</CODE> jest katalogiem w ktrym RPM buduje pakiet.
Prbne tworzenie pakietu moesz wykona w jakimkolwiek
katalogu ktry tu podasz.</LI>
<LI><CODE>SOURCES</CODE> jest katalogiem w ktrym powiniene umieci
oryginalne pliki rdowe i pliki z poprawkami. Jest to miejsce
do ktrego RPM bdzie zaglda domylnie.</LI>
<LI><CODE>SPECS</CODE> jest katalogiem w ktrym powinny si znale
wszystkie pliki specyfikujce (spec).</LI>
<LI><CODE>RPMS</CODE> RPM umieci tu binarme pliki RPM
po ich zbudowaniu.</LI>
<LI><CODE>SRPMS</CODE> RPM umieci to pliki RPM z plikami rdowymi.</LI>
</UL>
<P>
<H3>Prbne tworzenie pakietu</H3>
<P>Pierwsz rzecz do zroienia jest doprowadzenie plikw rdowych
do takiego stanu by kompiloway i/lub instaloway si
bez pomocy RPM-a. By to osign, rozpakuj rda
i zmie nazw katalogu na $NAZWA.orig.
Nastpnie ponownie rozpakuj rda i pracuj na nich.
Wejd do ich katalogu i postpuj zgodnie z instrukcjia
ich instalacji/kompilacji. Jeli bdzie konieczna edycja
jakich plikw to konieczne bdzie wygenerowanie
pliku z poprawkami (patch).
Jeli doprowadzisz rda do stanu w ktrym bd si
poprawnie instalowa/kompilowa - wyczy katalog rdowy.
Upewnij si, e wszystkie pliki stworzone w skrypcie
konfiguracyjnym (<CODE>configure</CODE>) zostay usunite.
Nastpnie wyjd z katalogu rdowego i wykonaj co
takiego:
<BLOCKQUOTE><CODE>
<PRE>
diff -uNr dirname.orig dirname > ../SOURCES/dirname-linux.patch
</PRE>
</CODE></BLOCKQUOTE>
(dirname w tym przykadzie to to samo co $NAZWA
par linii powyej).
Polecenie to stworzy plik z poprawkami jaki bdzie
mg by wykorzystany w pliku specyfikujcy.
Zauwa, e ``linux'' w nazwie pliku z poprawkami
jest jakim wybranym identyfikatorem.
Zamiast tego mona uy czego bardziej precyzyjnego
jak np. ``config'' lub ``bugs'' (bdy) by opisa <EM>dlaczego</EM>
poprawki byy potrzebne.
Przed uyciem pliku z poprawkami warto do niego zajrze
by si upewni, e przypadkiem nie znalazo si w nim co
niewaciwego jak np. pliki binarne.
<P>
<H3>Tworzenie listy plikw</H3>
<P>Teraz, gdy rda si kompiluj i instaluj i wiadomo
jak to robi to zrb to, skompiluj i zainstaluj.
Przyjrzyj si wynikowi instalacji i stwrz w ten
sposb list plikw do uycia w pliku specyfikujcym.
Zazwyczaj plik specyfikujcy powstaje rwnoczenie
z opisywanymi tu krokami.
Po prostu tworzy si go na pocztku wstawiajc to co jest znane
i potem w miar postpu prac uzypenia si go o brakujce
kawaki.
<P>
<H3>Tworzenie pakietu RPM</H3>
<P>Gdy plik specyfikujcy jest gotowy, mona ju
prbowa tworzy nowy pakiet. Najwygodniej jest
to zrobi poniszym poleceniem:
<P>
<BLOCKQUOTE><CODE>
<PRE>
rpm -ba foobar-1.0.spec
</PRE>
</CODE></BLOCKQUOTE>
<P>Opcja <CODE>-b</CODE> ma par interesujcyh podopcji:
<UL>
<LI><CODE>p</CODE> oznacza wykonanie sekcji <CODE>prep</CODE> pliku
specyfikujcego. </LI>
<LI><CODE>l</CODE> wykona par rnych testw na plikach
<CODE>%files</CODE>. </LI>
<LI><CODE>c</CODE> wykonaj sekcj <CODE>prep</CODE> i kompiluj.
Jest to przydatne gdy jest si niepewnym czy rda
w ogle bd si kompilowa/instalowa. Owszem,
na pierwszy rzut oka moe to wyglda na zbdne
gdy mona dotd pracowa ze rdami a bd si
kompilowa jednak gdy przyzwyczaisz si
do wykorzystania RPM-a to spotkasz si z sytuacjami w
ktrach ta opcja okae si przydatna.</LI>
<LI><CODE>i</CODE> wykonaj prep, kompiluj i instaluj.</LI>
<LI><CODE>b</CODE> prep, kompiluj, instaluj, i buduj jedynie
pakiet binarny. </LI>
<LI><CODE>a</CODE> zbuduj wszystko - zarwno pakiet rdowy jak i binarny.</LI>
</UL>
Jest te par dodatkowych podopcji do
opcji <CODE>-b</CODE>:
<UL>
<LI><CODE>--short-circuit</CODE> przejdzie prosto do
okrelonego etapu (moe by uyte wycznie z c oraz i)</LI>
<LI><CODE>--clean</CODE> usuwa katalog ze rdami stworzony
w czasie budowania pakietu.</LI>
<LI><CODE>--keep-temps</CODE> zachowa wszystkie pliki
temporalne i skrypty ktre zostay umieszczone
w /tmp. Jakie s to pliki mona si dowiedzie
wykorzystujc opcj <CODE>-v</CODE>.</LI>
<LI><CODE>--test</CODE> nie wykonuje adnych rzeczywistych
etapw cho wykonuje keep-temps.</LI>
</UL>
<P>
<H2>6.10 Testowanie pakietu</H2>
<P>Po stworzeniu pakietu rpm rdowego i binarnego naley je
przetestowa. Najprociej i najlepiej jest wykorzysta
do tego zupenie inny komputer ni ten na ktrym
pakiet by tworzony. W kocu przy tworzeniu pakietu
by on do czsto instalowany i na komputerze na ktrym
powstawa powinno by to zrobione do dobrze.
<P>Mona te prbowa <CODE>rpm -u nazwapakietu.rpm</CODE>
na testowanym pakiecie ale moe by to zdradliwe w sytuacji
w ktrej jakie pliki zostay pominite w licie plikw
i nie zostan wtedy usunite.
Wtedy zainstalowany program bdzie kompletny mimo tego,
e rpm bdzie bdny. Pamitaj, e poniewa Ty ju
zrobie <CODE>rpm -ba package</CODE>, to zdecydowana wikszo
osb instalujcych Twj pakiet wykona jedynie
<CODE>rpm -i package</CODE>. Upewnij si, e nie wykonujesz
w sekcjach <CODE>build</CODE> lub <CODE>install</CODE>
czego co powinno by zrobione gdy instalowany
jest wycznie pakiet binarny.
<P>
<P>
<H2>6.11 Co robi z Twoimi nowymi RPM-ami ?</H2>
<P>Gdy ju stworzye swj wasny pakiet RPM (zakadajc,
e nie ma ju takiego pakietu dostpnego pod postaci
RPM) moesz udostpni wynik swojej pracy innym
(zakadajc e to czego pakiet stworzye moe by
tak udostpniane).
By udostpni, umie to na
<A HREF="ftp://ftp.redhat.com">ftp.redhat.com</A>.
<P>
<H2>6.12 Co teraz?</H2>
<P>Prosimy sprawdzi si, e nic nie zostao pominite jeszcze
raz czytajc rozdziay o "Testowaniu"
i "Co robi z nowymi RPM-ami".
Chcemy mie jako RPM wszystko co si da ale chcemy,
eby byy to dobre RPM-y.
Prosimy wic powici troch czasu na ich dokadne
przetestowanie i prosimy te o umieszczenie ich
w archiwum ftp tak, by kady mg z nich skorzysta.
A take, <EM>prosimy</EM> upewni si, e umieszczasz jedynie
<EM>bezpatne</EM> oprogramowanie.
Oprogramowanie komercyjne i shareware <EM>nie</EM>
powinno by umieszczane w archiwum o ile nie zawieraj
klauzuli w ich prawach autorskich to dopuszczajcej.
Dotyczy to np. Netscape, ssh, pgp, etc.
<P>
<H2><A NAME="s7">7. Tworzenie RPM-w na wiele platform.</A></H2>
<P>RPM moe by wykorzystywany do tworzenia pakietw
dla Intel i386, Digital Alpha pracujcych pod Linux,
oraz Sparc. S te doniesienia o jego wykorzystaniu
na platformach SGI i HP.
RPM ma par cech ktre czyni tworzenie pakietw na
wiele platform prostszymi.
Pierwsz z nich jest dyrektywa ``optflags''
w pliku <CODE>/etc/rpmrc</CODE>.
Moe ona by wykorzystana do ustawienia odpowiednich
opcji i flag, specyficznych dla architektury,
potrzebnych do kompilacji bd instalacji.
Nastpn cech uatwiajc tworzenie pakietw na wiele
platform s makra ``arch'' w pliku specyfikujcym.
Mog one by wykorzystane do wykonania rnych
rzeczy zalenych od architektury na ktrej pakiet
jest instalowany. Nastpn tak cech jest
dyrektywa ``Exclude'' w nagwku.
<P>
<H2>7.1 Przykadowy plik specyfikujcy .spec</H2>
<P>Poniej zamieszczona jest cz pliku specyfikujcego
dla pakietu ``fileutils''.
Jest on przygotowany do instalacji na dwch
platformach: Alfach i Intelu.
<BLOCKQUOTE><CODE>
<PRE>
Summary: GNU File Utilities
Name: fileutils
Version: 3.16
Release: 1
Copyright: GPL
Group: Utilities/File
Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz
Source1: DIR_COLORS
Patch: fileutils-3.16-mktime.patch
%description
These are the GNU file management utilities. It includes
programs
to copy, move, list, etc, files.
The ls program in this package now incorporates color ls!
%prep
%setup
%ifarch alpha
%patch -p1
autoconf
%endif
%build
configure --prefix=/usr --exec-prefix=/
make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s
%install
rm -f /usr/info/fileutils*
make install
gzip -9nf /usr/info/fileutils*
.
.
.
</PRE>
</CODE></BLOCKQUOTE>
<P>
<H2>7.2 Dyrektywa optflags</H2>
<P>W powyszym przykadzie przedstawione zostao uycie
dyrektywy ``optflags'' z <CODE>/etc/rpmrc</CODE>.
<CODE>RPM_OPT_FLAGS</CODE> przyjmuj odpowiedni warto
w zalenoci od tego na jakiej platformie instalowany
jest pakiet. Do pliku Makefile uytego w pakiecie
naley nanie poprawki by korzysta z tej zmiennej
zamiast standardowych opcji (np. <CODE>-m486</CODE> lub <CODE>-O2</CODE>).
Moesz si zorientowa co powinno by zrobione
poprzez zainstalowanie pakietu rdowego,
jego rozpakowanie i przyjrzenie si plikowi Makefile.
Nastpnie naley zajrze do plikw z poprawkami
dla pliku Makefile i sprawdzi jakie zmiany powinny by
wprowadzone.
<P>
<H2>7.3 Makra</H2>
<P>Makro <CODE>%ifarch</CODE> jest bardzo istotne dla tworzenia
pakietw na wiele architektur.
W wikszoci przypadkw potrzebujesz nanie jedn
lub dwie poprawki specyficzne tylko dla jednej, konkretnej
architektury. W takiej sytacji RPM pozwala na
naniesienie poprawki wycznie dla niej.
<P>
<P>W powyszym przypadku, pakiet fileutils ma poprawk
dla maszyn 64-bitowych.
To naturalnie w chwili obecnej stosuje si tylko do Alf.
Tak wic dodajemy makro <CODE>%ifarch</CODE>
nanoszce odpowiedni poprawk:
<BLOCKQUOTE><CODE>
<PRE>
%ifarch axp
%patch1 -p1
%endif
</PRE>
</CODE></BLOCKQUOTE>
To zapewni, e poprawka nie bdzie naniesiona
na adnej innej architekturze a wycznie na alfach.
<P>
<H2>7.4 Wyczanie pewnych platform w pakietach</H2>
<P>Mona opiekowa si rdowymi RPM-ami w jednym
katalogu dla wszystkich platform. Uzyskuje si to poprzez
``wyczenie'' (ang. exclude) pewnych pakietw
z tworzenia ich dla pewnych architektur, tak, e cigle
moliwym jest:
<BLOCKQUOTE><CODE>
<PRE>
rpm --rebuild /usr/src/SRPMS/*.rpm
</PRE>
</CODE></BLOCKQUOTE>
dajce w wyniku poprawne pakiety. Jeli aplikacja nie zostaa
jeszcze do tej pory przeniesiona na dan platform to wystarczy
doda wiersz wygladajcy mniej wicej tak:
<BLOCKQUOTE><CODE>
<PRE>
ExcludeArch: axp
</PRE>
</CODE></BLOCKQUOTE>
do nagwka pliku specyfikujcego pakiet rdowy.
Nastpnie przebuduj pakiet na platform na ktrej
ju pracuje. W ten sposb uzyskuje si pakiet,
ktry kompiluje si/tworzy si np. na Intel-u
podczas gdy moe by atwo opuszczony na Alfie.
<P>
<H2>7.5 Ostatnie poprawki</H2>
<P>Wykorzystanie RPM to tworzenia pakietw przeznaczonych
na wiele platform jest zazwyczaj prostsze ni doprowadzenie
pakietu do stanu w ktrym daj si on na nich zainstalowa.
Jednake w miar jak powstaje wicej i wicej pakietw w
postaci binarnej staje si to coraz prostsze.
Jeli przy tworzeniu pakietu zabrniesz w lep uliczk
to jak zwykle, rozwizaniem moe by zajrzenie
do kodu rdowego podobnego pakietu.
<P>
<H2><A NAME="s8">8. Uwaga o prawach autorskich</A></H2>
<P>Poniszy dokument i jego zawarto s chronione prawem autorskim.
Rozpowszechnianie go i jego zawartoci jest dozwolone
tak dugo jak dugo jego pozostaj one nie zmienione.
Innymi sowy mona go wycznie przeformatowywa, drukowa
i rozpowszechnia.
<P>
</BODY>
</HTML>
|