rpm açıklaması RHEL - rpm'de paket yönetimi. Rpm, içe aktarılan tüm anahtarları görüntüleyin

  • 04.03.2020

RHEL, Fedora, Mandriva, AltLinux ve diğer bazı dağıtımlar, programları kurmak, kaldırmak ve güncellemek için paket yöneticisini kullanır. rpm. rpm paket yöneticisi, ilgili formattaki paketleri kurmanıza, kaldırmanıza, doğrulamanıza izin verir, ancak bağımlılıkları otomatik olarak çözme ve depolarda arama yapma araçlarına sahip değildir. Paketlerin kurulumunu otomatikleştirmek için programı kullanabilirsiniz. yum Paketler arasındaki bağımlılıkları otomatik olarak çözen ve gerekli dosyaları indiren (Yellowdog Update Manager). Kaynaktan programla bir paket oluşturmanız gerekiyorsa, kullanabilirsiniz. rpmbuild. Bunu yapmak için, programın kaynak kodunu ve oluşturma işlemini açıklayan bir .spec dosyasını içeren .src.rpm formatında bir paket hazırlamanız gerekir.

Paket Yapısı

Paketler aşağıdaki şemaya göre isimlendirilir: isim-versiyon-montaj. Paketler, adlarına .architecture.rpm eklenmiş dosyalar olarak dağıtılır. Örneğin, squid-2.5.STABLE8–1.FC3.1.i386.rpm şu anlama gelir: squid programı, sürüm 2.5.STABLE8 , yapı 1.FC3.1 , i386 mimarisi (i386 uyumlu işlemciler için optimize edilmemiş uygulama). Yapı numarası dağıtım adını içerebilir veya içermeyebilir (bu durumda FC3). Noarch mimarisi, işlemci mimarisinden bağımsız komut dosyaları anlamına gelir. .src.rpm dosyaları program kaynaklarını içerir ve özel bir şekilde kurulur.

Her paket, cpio arşivleyici ile paketlenmiş programlar, kitaplıklar, yapılandırma, belgeler vb. için dosyalar içerir. Paket ayrıca ek bölümler içerir:

  • SAĞLAMAK– sağlanan işlevsellik (örneğin “posta sunucusu”) artı paket dosyaları;
  • REQUIRENAME– doğru işlem için gerekli paketler, dosyalar vb. (içinde ne gerekli REQUIRENAME, içinde bulunmalıdır SAĞLAMAKönceden kurulmuş paketler);
  • eskimiş– kaldırılabilecek paketlerin listesi, çünkü işlevleri ve/veya dosyaları bu paketle değiştirilir;
  • PREIN, POSTIN– kurulumdan önce yürütülen komut dosyaları (örneğin, arka plan programının güncellenmesinin durdurulması) ve kurulumdan sonra yürütülen komut dosyaları (örneğin, belirli bir makine için yapılandırma dosyalarının düzenlenmesi);
  • PREUN, POSTUN– kaldırma sırasında yürütülen komut dosyaları;
  • ÖZET- paketin kısa bir açıklaması;
  • TANIM- Detaylı Açıklama.

Ayrıca, her paket İnternet, Yazılım Geliştirme, Eğlence vb. bazı gruplara aittir. rpm dosyası bölümlerini mc'de görüntüleyebilirsiniz.

Diğer açıklamalarda<пакет>i386.rpm içermeyen paket adı anlamına gelir (programın bir sürümü kuruluysa, sürüm ve derleme numarası da atlanabilir) ve<файл>dosya adı.rpm anlamına gelir. URL'sini bir dosya olarak belirtebilirsiniz, örneğin, http://download.fedora.redhat.com/pub/fedora/linux/core/updates/3/i386/yum-2.2.0-0.fc3.noarch. rpm

Programları yükleme, kaldırma, güncelleme

Yardımcı seçenekler: -v - mesajların ayrıntılı çıktısı, -h - kurulum ilerleme göstergesinin gösterimi.

rpm-ivh<файл>... - paket(ler)i kurun
rpm-Uvh<файл>... – paket(ler)i güncelleyin, kurulu değilse – kurun
rpm-Fvh<файл>... – önceden kurulmuş paket(ler)i güncelleyin
rpm -e<пакет>... - paketleri kaldır

Kurulu paketler veya rpm dosyaları hakkındaki bilgileri görüntüleyin

Yardımcı seçenekler: -a - kurulu tüm paketler, -p - rpm dosyası hakkında bilgi (örneklerde her yerde verilmeyecektir).

rpm -q<пакет>... - kurulu bir paketin ve sürümünün varlığını kontrol edin
rpm -qa - tüm paketleri listeler
rpm-qi<пакет>... - paket açıklaması
rpm-qip<файл>... - AÇIKLAMA dosyası
rpm-qR<пакет>... - Paket İHTİYAÇLARI
rpm-ql<пакет>... - paket dosyalarının listesi
rpm-qf<файл_в_файловой_системе>... – keyfi bir dosyanın kurulu paketlerden birine ait olduğunun belirlenmesi

Bir rpm paketinin bütünlüğünü kontrol etme

Bir rpm paketine yerleştirilen dosyalara, hesaplanmış bir sağlama toplamı eşlik eder ve genellikle paket oluşturucu tarafından dijital olarak imzalanır. Bir paket kurulduktan sonra, sağlama toplamları ve imzalar kurulu paketlerin veritabanında saklanır. Bu yardımcı veriler, birkaç kontrol gerçekleştirmenize izin verir; örneğin, paketin güvenilir bir yayıncı tarafından oluşturulup oluşturulmadığını ve kurulumdan sonra paket dosyalarının değiştirilmediğini kontrol edebilirsiniz.

İnternetten paket indirirken ilk kontrol çok önemlidir, ikincisi ise bilgisayarınızın saldırıya uğradığından şüpheleniyorsanız.

İmza doğrulaması için ortak anahtarlar, dağıtımdan kurulum sırasında otomatik olarak kurulur ve ayrıca yum depolarını bağlamak için rpm paketleri kurulurken yarı otomatik olarak eklenir. CentOS'taki anahtar dosyalar /etc/pki/rpm-gpg/ dizinine kurulur. Yerel bir dosyanın yolunu veya URL'sini belirterek anahtarı manuel olarak ekleyebilirsiniz. Anahtarın bulunduğu dosya "ASCII zırhlı" metin biçiminde olmalıdır.

Rpm --iport PUBKEY-dosyası

Kurulumdan sonra, kurulu paketlerle aynı komutlar anahtarlar için de geçerlidir.

rpm -qa gpg-pubkey* - tüm anahtarları listeler
rpm -qi gpg-pubkey-db42a60e - belirli bir anahtar hakkında bilgi (sahip adı dahil)
rpm -e gpg-pubkey-db42a60e - bir anahtarı silme

Paket dosyasını bütünlük açısından kontrol etme

Rpm --checksig<файл>

Kurulu bir paketin bütünlüğünü kontrol etme

Rpm --doğrula<пакет>

Bu komutu yürüttükten sonra, tam olarak neyin değiştiğini gösteren değiştirilen dosyaların bir listesi görüntülenecektir. Değişiklik türü bilgileri, aşağıdakileri içeren bir dizi kısaltmadan oluşur:

  • S– boyut (Boyut)
  • M– dosya türü veya erişim hakları (Mod)
  • 5 – sağlama toplamı (MD5)
  • D– büyük veya küçük cihaz cihazı (Cihaz)
  • L– sembolik bir bağlantının içeriği (Link)
  • sen– sahip (Kullanıcı)
  • G- grup
  • T– değişiklik süresi (mTime)
  • P- kapasite

rpm paket dosyalarının ayıklanması ve paketlenmesi

rpm2cpio programı, dosyaları bir RPM paketinden cpio arşiv formatında ayıklar. Dosyaları dizin yapısıyla birlikte açmak için, -i - unpack ve -d - dizin oluştur seçenekleriyle cpio komutunu kullanın:

rpm2cpio<файл.rpm>| işlemci -i -d

rpm yeniden inşa

Özel durumlar

Paket zaten kuruluysa ve yeniden yüklenmesi gerekiyorsa veya paketin eski sürüme geçirilmesi gerekiyorsa, yükleme veya yükseltme komutlarına --force seçeneğini ekleyebilirsiniz.

Bir paketin yüklenmesi veya kaldırılması resmi olarak bağımlılıkları bozuyorsa ancak iyi olduğu biliniyorsa, --nodeps seçeneği kullanılır.

Bir alıcı, bileşenlerden kendi başına bir bilgisayar toplamaya çalıştığında veya sadece bir PC için bir sabit disk seçtiğinde, genellikle "RPM" kavramıyla karşılaşır. Nedir ve önemli mi? RPM sadece önemli değil, aynı zamanda seçim yaparken her şeyden önce dikkate alınması gereken bir sabit sürücünün temel parametrelerinden biridir. Şimdi RPM'nin ne olduğuna daha yakından bakalım.

kavram

Kısaltma RPM (Dakika başına devir) kelimenin tam anlamıyla Rusça'ya "Dakikada devir" olarak çevrilir. Bu birim bir sabit sürücüyü ifade eder, ancak kavramın kendisi ortalama bir kullanıcıya hiçbir şey söylemez. Bir sabit sürücünün RPM'si sistem performansında rol oynar ve dönüş hızı ne kadar yüksek olursa, tüm sistem o kadar hızlı çalışır. Çoğu zaman, bu parametre sabit sürücünün özelliklerinde belirtilir ve iki sabit sürücü arasında daha yüksek RPM'ye sahip olanı seçmeniz önerilir.

Her bakımdan aynı, ancak farklı iş mili hızlarına sahip iki disk alırsanız, sistem performansında önemli bir farkı hemen fark edebilirsiniz.

iğ nedir?

Bir sabit sürücü, birbiri üzerine yığılmış ve bir ferromanyetik malzeme tabakasıyla kaplanmış birkaç kapalı yuvarlak plakadan oluşur. Muhafazada ayrıca bir okuma kafası vardır. Bu plakalar, çalışma sırasında bir mil kullanarak döner - özel bir döner mil. Bu şaft bir elektrik motoru tarafından tahrik edilir. Plakalar döndüğünde, okuma kafaları disklerin yüzeyine değmez, ancak onlara mümkün olduğunca yakın yerleştirilir. Sonuç olarak, kafaların yardımıyla katı ortam - disklerden bilgi yazmak ve okumak mümkündür.

Mil, binlerce saat boyunca plakaları muazzam bir hızla sabit bir şekilde döndürür, bu nedenle bu eleman güvenilir olmalıdır. Mil ve disk arasında doğrudan fiziksel temasın olmaması nedeniyle, disk üzerine bilgi yazılabilir ve silinebilir. Ortalama olarak bir diske 100 bin kez bilgi yazılabileceğine ve silinebileceğine inanılmaktadır.

Sabit disk iğleri böyle görünür. Tabii ki, cihaz modeline ve üreticisine bağlı olarak farklılık gösterebilirler.

Böylece bunun RPM olduğunu öğrendik. Parametre, normal çalışma sırasında plakaların hangi hızda dönebileceğini belirler. Buna karşılık, bu, bilgisayar sisteminin sabit diske erişirken sabit diskten ne kadar hızlı bilgi alabileceğini anlamanıza olanak tanır. Hız ne kadar yüksek olursa, sistem ile disk arasındaki veri alışverişi o kadar hızlı olur.

Nasıl çalışır?

Ne olduğunu daha kesin olarak anlamak için - RPM, cihazın çalışma prensibini anlamanız gerekir. Belirli bilgiler istendiğinde, ana ünite istenen parçaya atlar. Bu, arama yapmak için belirli bir süre gerektirir (Gecikme ara). Okuma kafaları istenilen sektöre hareket ettikten sonra istenilen alan okuma kafasının altında kalacak şekilde disklerin dönmesini beklemek gerekir. Bu süreye dönme gecikmesi denir. Milin dönüş hızına bağlı olan bu parametredir ve ne kadar yüksek olursa, dönüş gecikmesi o kadar düşük olur.

Her iki gecikme de (iş mili hareketi ve disk dönüşü için), verilere sistem erişiminin hızını belirler. Birçok kıyaslama programı bu parametreyi hesaplar ve "Veriye erişim süresi" satırlarının altında görüntüler. Bu, diskin gerçek hızını belirlemenizi sağlar. Bu parametre, tüm sistemin performansını doğrudan etkiler. Bugün, güçlü grafik kartları ve işlemciler, büyük miktarda RAM ile donatılmış birçok güçlü dizüstü bilgisayar var. Ancak aynı zamanda, iyi bir donanımla birlikte, 5400 rpm dönüş hızına sahip çok yavaş sabit diskler kullanılır. Sonuç olarak, tüm bu güçlü bileşenler, veri erişiminin yavaş hızı nedeniyle tam kapasitede çalışmaz. Bu nedenle, diskin RPM'si, işlemcinin frekansı ve video kartının veri yolu genişliği ile aynı düzeyde önemlidir.

RPM HDD'nin performans üzerindeki etkisi

Winchester'lar (sabit sürücüler genellikle denir) LFF ve SFF biçimlerinde olabilir. Basitçe söylemek gerekirse, bir tür diskin 2,5 inç biçimi, diğerinin 3,5 inç biçimi vardır. Birincisi genellikle dizüstü bilgisayarlarda ve sunucularda, ikincisi ise geleneksel sistem birimlerinde kullanılır. Çoğu zaman yüksek bir iş mili hızına sahip olan bu tür sabit disktir - 7200 rpm. Bu tür modellerde yarım dönüş süresi 4,2 ms ve ortalama arama süresi 8,5 ms'dir. Bu nedenle, veri erişim süresi 12.7 ms olacaktır.

Çoğu masaüstü bilgisayarın SATA sabit sürücüleri kullandığını unutmayın. 7200 RPM bu modeller için standart hızdır. Ayrıca 5400 RPM sürücüler vardır, ancak daha ucuz olmalarına rağmen modern sistemlerde kullanılması önerilmez. Ayrıca 10000 RPM diskleri vardır - bu tür modellerde arama ve döndürme gecikmeleri yaklaşık 3 ms'dir. Bu tür cihazlar en çok oyun bilgisayarlarında kullanılır, ancak modası geçmiş olarak bile adlandırılabilirler. Modern masaüstü bilgisayarlar ve dizüstü bilgisayarlar, tamamen farklı bir şekilde çalışan SSD sürücüleri giderek daha fazla kullanıyor. Bunun hakkında biraz sonra konuşacağız.

Standart olmayan RPM ayarı

Piyasada ayrıca 15.000 rpm iş mili hızına sahip modeller de bulunmaktadır. Tahmin edebileceğiniz gibi, gecikme süreleri orada daha da düşüktür - yaklaşık 2 ms ve ortalama arama süresi 3,8 ms'dir. Bu, verilere 5,8 ms'de erişim sağlamanıza olanak tanır. Bu nedenle, büyük bir RPM'ye sahip diskler, istenen bilgi için düşük bir arama süresine sahiptir, bu nedenle bilgi deposu ile sistem arasında hızlı bir alışverişi sağlar.

Ancak, büyük verilere erişirken, bilgi erişim gecikmeleri olmayacağından, yüksek ve düşük RPM parametrelerine sahip diskler arasındaki performans farkının önemli olmayacağını belirtmek önemlidir.

Mil hızı nasıl öğrenilir?

Bu parametreyi belirlemek, armutları soymak kadar kolaydır - her zaman cihazın kendi üzerindeki bir etikette belirtilir. Sistem ünitenizin kasasını açıp çıkartmaya bakmanız yeterlidir. Birçok belirsiz seçenek olabilir, ancak her zaman aşağıdaki satırlardan biri vardır:

  1. RPM HDD: 5400.
  2. devir: 7200
  3. devir: 10000

Sabit sürücü, açılması oldukça zor olan dizüstü bilgisayar kasasının altına gizlenmişse, özel bir donanım test programı kullanabilirsiniz.

Aşağıdakiler popülerdir:

  1. kristal işareti.
  2. Yardım64.
  3. Özel.

İnternetten ücretsiz olarak indirilebilirler. Bu programlardan birini çalıştırarak, depolama aygıtıyla ilgili bilgileri hızlı bir şekilde bulabilirsiniz. Sabit diskin parametreleri ayrıntılı olarak görüntülenecektir. Öncelikle "Döndürme Oranı" satırı ve onun karşısındaki değerle ilgileniyoruz. Aida64 programının Rusça versiyonunda, sol taraftaki "Veri depolama" - "Windows veri depolama" üzerine tıklamanız, ardından üst kısımdaki sabit sürücüyü seçmeniz gerekir, ardından bununla ilgili bilgiler aşağıda görünecektir. satır "Dönme hızı".

Yüksek hızın dezavantajları

Tabii ki, yüksek bir RPM ile sistemin bir bütün olarak performansı sağlanır, ancak dezavantajlar da vardır. Mil ne kadar hızlı dönerse, diskin kendisi o kadar fazla ısınır ve daha gürültülü çalışır. Ayrıca, bu tür sabit diskler daha fazla elektrik tüketir. Ancak modern teknoloji, devir hızını ayarlamayı ve iş mili hızını azaltarak güç tüketimini ve gürültüyü azaltmayı mümkün kılar. Bu durumda performans kayıpları özel bir veri önbelleğe alma algoritması ile telafi edilir.

Alternatif olarak SSD

Modern bilgisayar platformlarının geliştirilmesinde, plakalı ve iğli sabit disklerin kullanımı terk edilmiştir. Bugün, hiçbir hareketli parçanın bulunmadığı katı hal sürücüleri kullanılmaktadır. Bu sürücülerin "iç kısımları", kart üzerindeki mikro devrelerdir. Bu tür cihazlar sıradan flash sürücüler gibi çalışır, ancak içlerindeki performans ve veri erişim hızı çok yüksektir ve HDD standart disklerinin performansını çok aşar. Ayrıca gürültü yapmazlar, çok hafiftirler ve az enerji tüketirler. Tek dezavantajı yüksek fiyat. 1 TB'de 7200 RPM, 128 veya 256 GB SSD'den daha ucuza mal olur.

Bir benzetme yaparsak, SSD ile HDD arasındaki fark, normal bir DVD ile flash sürücü arasındaki farkla hemen hemen aynıdır. Zaten disklerden uzaklaştılar ve bugün yalnızca flash sürücüler çoğunlukla kullanılıyor.

Çözüm

İlk etapta bir sabit disk seçerken, ilk etapta iş mili hızının belirlediği performans parametresini dikkate almak önemlidir. Ne yazık ki, çoğu kullanıcı disk kapasitesine bakar, ancak bu en önemli şey değildir. RPM 5400 parametreli 1 TB sürücü seçmek yerine 500 GB kapasiteli ve 7200 rpm iş mili hızına sahip bir sabit sürücüyü tercih etmek daha iyidir.Genel olarak, bugün bu tür sistemleri kullanmaktan uzaklaşmamız gerekiyor, çünkü SSD sürücüler her şeyde eski HDD aygıtlarından üstündür.

Rosalab Wiki'den

Bu belge, ROSA Masaüstü dağıtımı için paketler yayınlamak isteyen kişilere yardımcı olmayı amaçlamaktadır. Özellikle, ROSA paketlerinin diğer RPM tabanlı dağıtımlar için yazılmış paketlerden nasıl farklı olduğunu vurgulamaktadır. Bu belge, ROSA geliştiricileri ve üçüncü taraf geliştiriciler için faydalı olabilir.

ROSA Desktop, ROSA şirketi tarafından çeşitli gönüllüler, testçiler ve çevirmenler tarafından üretilen ve yayınlanan GNU/Linux işletim sistemi için bir dağıtım kitidir.

Önsöz

Okuyucunun Linux kullanma deneyimi olduğu varsayılmaktadır. Temel komutları, dizin yapısını bilmeli ve en azından paketleri kurmak için rpm kullanması gerekiyordu.

Bu belge, okuyucunun ROSA Desktop'a iyi entegre olabilen bir rpm paketi elde etmesini adım adım sağlayacak şekilde yapılandırılmıştır.

İlk yaklaşım olarak, devirüç kavramı temsil eder:

  • paketleri kurmak veya oluşturmak için tasarlanmış bir program;
  • rpm tarafından oluşturulan paketlerde (ikili veya kaynak) kullanılan biçim;
  • ikili veya kaynak kodu ve bir bilgi başlığı içeren "paket" adı verilen bir dosya. Başlık, programı kurmak ve kaldırmak için talimatlar içerir.

rpm programı, kullanıcının bakış açısından, güçlü bir paket yöneticisidir. o rolü oynuyor aracı rpm paketlerinde gerçekleştirilen herhangi bir işlem için. Ayrıca şunları yapabilir:

  • bağımlılıklara bağlı olarak bir paketi kurun veya güncelleyin;
  • paket kurulumu sırasında kurulu programı kullanıma hazır hale getirmek için eylemler hazırlayın;
  • bir pakete ait yanlışlıkla silinen dosyaları geri yükleme;
  • verilen paketin zaten kurulu olduğu bilgisini göster;
  • belirli bir dosyanın ait olduğu paketi bulun;
  • önceden kurulmuş paketlerin bağımlılık gereksinimlerini karşılamak için mevcut kurulumu kontrol edin;

Bir programcının bakış açısından, bir rpm programı, bir programı belirli bir platforma kurmak için gereken tüm bilgileri tek bir rpm dosyasında saklayan bir paketleyicidir.

.src.rpm kaynak paketleri ile ikili paketleri (ikili kod içeren paketler) en baştan ayırt etmek önemlidir. .rpm

Yazılım yüklenmesi

Temel bilgiler

Başlangıçta Red Hat Linux dağıtımı için geliştirilmiş olsa da rpm, diğer rpm tabanlı dağıtımlarda da çalışır: OpenMandriva, Suse, Fedora, vb.; tüm bu sistemlerde rpm zaten kuruludur.

ROSA için oluşturacağınız ikili rpm paketi diğer dağıtımlarda çalışmayabilir.

ROSA Desktop için paketler oluşturma

Cooker (yani, ROSA Desktop'ın geliştirme sürümü) için paketler oluşturma, her zaman rpm tarafında yamalar ve diğer iyileştirmelerin uygulanmasıyla birlikte gelir. Derlemeye başlamadan önce, aşağıdaki paketlerin tümünün sisteminizde kurulu olduğundan emin olun:

$ sudo urpmi rpm rpm-build spec-helper libtool rpmlint

  • rpm - rpm'nin kendisi;
  • rpm-build - paketleri oluşturmak için kullanılan komut dosyalarını içerir;
  • spec-helper - bazı otomasyonlarla spec dosyalarını en aza indirmek için bir araç: ikili dosyaları ayrıştırma, kılavuz sayfalarını sıkıştırma;
  • libtool - bazı yapılandırma komut dosyaları tarafından paylaşılan kitaplıklar oluşturmak için kullanılır;
  • rpmlint - oluşturulan src.rpm dosyasını doğrulamak için kullanılır.

Ön görevler

Gerekli klasörleri oluşturun

İnşa etmeye başlamadan önce, "işyerinin" organizasyonuna dikkat etmeniz gerekir: rpm programı, "ev" dizininizde belirli bir dizin ağacına ihtiyaç duyar. Bu ağaç aşağıdaki komutla oluşturulabilir: mkdir -p ~/rpm/(BUILD,RPMS/$ARCH,RPMS/noarch,SOURCES,SRPMS,SPECS,tmp).

Yer değiştirmek $ARCH inşa etmeyi planladığınız mimarinin adına. Genellikle bu i586 veya x86_64, ama aynı zamanda olabilir kıvılcım, alfa veya ppc.

Not
Toplantı rpm-root olarak paketlemek tehlikeli olabilir çünkü ikili dosyalar paketlemeden önce sisteme yüklenir, bu nedenle sistemi yanlışlıkla tıkamak istemiyorsanız paketleri her zaman normal bir kullanıcı olarak oluşturmalısınız.

Dizin ağacı aşağıdaki yapıya sahip olmalıdır:

  • ~/rpm/BUILD : yerleşik kaynaklar için dizin.
  • ~/rpm/RPMS : yapıdan sonra ikili paketlerin yerleştirildiği, mimari başına bir dizin olacak şekilde dizinleri içerir.
  • ~/rpm/RPMS/i586 : işlemciler için rpm paketlerini depolamak için dizin i586.
  • ~/rpm/RPMS/x86_64 : işlemciler için rpm paketlerini depolamak için dizin x86_64.
  • ~/rpm/RPMS/noarch : Mimariden bağımsız rpm paketlerini depolamak için bir dizin.
  • ~/rpm/SOURCES : kaynak kod dosyaları (örn. mypackage.tar.bz2 ).
  • ~/rpm/SPECS : Oluşturmamız gereken özellik dosyaları.
  • ~/rpm/SRPMS : yerleşik kaynak.rpm-paketler.
  • ~/rpm/tmp : paketler oluşturulduğunda rpm programı tarafından oluşturulan geçici dosyalar için.

Not
program rpmçeşitli mimariler için gerekli dizinler ~/rpm/RPMS. Eksiklerse, bir hata mesajı alırsınız.

.rpmmacros dosyası oluşturmayın

RPM paketleri oluşturmaya yönelik bir dizi kılavuz, "home" dizininizde, paketin %packager, %vendor değerleri ve diğerleri gibi meta verilerine eklenecek kişisel bilgiler içeren bir .rpmmacros yapılandırma dosyası oluşturmanızı önerir. Böyle yapma. Tüm bu alanlar yapı sistemi tarafından otomatik olarak doldurulur. Ancak, /home/user/rpm dışında bir derleme dizini belirtmek istiyorsanız bu dosyayı yine de oluşturabilirsiniz. Bu durumda, yalnızca %_topdir ve %_tmppath makroları için değerler sağlayın. Diğer makrolar için değer belirtmeyin.

RPM'ler oluşturun

Mevcut RPM "kaynaklarından"

Paket zaten dağıtımın depolarındaysa, mevcut kaynakları kullanarak oluşturmak mümkündür.

En son rpm dosyası Cooker'dan indirilebilir. Ocak aynalarının bir listesi Ocak aynası sayfasındadır. Orada bulabilirsiniz:

SRPMS"Kaynaklar" ile rpm depolamak için dizin ( ana , katkıda bulunmak , Özgür olmayan, vb.) çeşitli işlemci mimarileri için ( i586, x86_64, …); medya/anaİkili rpm için ana ; medya/katkıİkili rpm için katkıda bulunmak ; medya/özgür olmayanİkili rpm için Özgür olmayan ;

* "medya/jpaket ikili rpm noarch için. (jpaket numarası)

ROSA Linux için kaynak rpm'yi değiştirmek için şu komutu girin: rpm -ivh paketim.src.rpm. Bu komut, tüm kaynak dosyaları oluşturduğunuz ~/rpm dizinine yükleyecektir.

Not
program urpmi"kaynakların" kendisini indirecek şekilde yapılandırılabilir.

Örneğin:

$ rpm -i /cooker/SRPMS/ktron-1.0.1-2mdv.src.rpm $ ls -R * SRPMS: ÖZELLİKLER: ktron.spec KAYNAKLAR: ktron-1.0.1.tar.bz2 RPMS: noarch/ i686/ i586 /i386/İNŞA:

Yukarıdaki örnekten, rpm programının ktron-1.0.1.tar.bz2 kaynak dosyasını ve spec dosyasını rpm ağacına kurduğunu görebilirsiniz. Nasıl derlendiğini görmek için paketin mevcut sürümünü yeniden oluşturmak faydalı olacaktır. Bunu yapmak için rpmbuild programını buildall seçeneği ile çalıştırarak kullanmanız gerekir:

$ cd ~/rpm/SPECS $ rpmbuild -ba ktron.spec $ ls -l ~/rpm/RPMS/i586/ktron-1.0.1-2mdv.i586.rpm $ ls -l ~/rpm/SRPMS/ktron-1.0 .1-2mdv.src.rpm

Derleme hatasız tamamlanırsa (bu arada, çekirdek gibi bazı karmaşık paketler oluşturulursa birkaç saat sürebilir), yerleşik paket ve kaynak paket ~/rpm/RPMS/i586 ve ~/ rpm/SRPMS/ sırasıyla. Yerleşik paketi kurmak için süper kullanıcı haklarına sahip olmanız gerekir. Bunu yapmak için terminalde su komutunu girin ve süper kullanıcı şifresini girin. Süper kullanıcı modundan çıkmak için "Ctrl + D" klavye kısayolunu kullanın veya çıkış komutunu yazın. "Kaynak" paketleri oluşturmak ve yeniden oluşturmak için süper kullanıcı ayrıcalıkları gerekli değildir.

Derleme günlüğü oldukça büyük olabilir ve daha sonra gözden geçirilmek üzere kaydedilebilir.

~/rpm/BUILD alt dizinleri genellikle yamalı "kaynaklara" (bir veya daha fazla yama ~/rpm/SOURCES içindeyse), ikili dosyalara, derlenmiş kitaplıklara, kılavuz sayfalarına vb. erişebilir. Özellik dosyası kaynak kodu ve yama dosyalarını açıklar, paket nasıl oluşturulur ve kurulur.

Şimdi, ktron'u düzeltmek için tek yapmanız gereken spec dosyasında değişiklikler yapmak ve ardından paketi yeniden oluşturmak.

Not
ROSA Desktop'ın oluşturduğu her paket, CVS sürüm kontrol sistemini kullanır. Bu, paketin her durumunun kaydedilmesine izin verir, yani geliştirici yapılan değişiklikleri görüntülemek için arşive başvurabilir. Yapılan değişiklikler herhangi bir nedenle istenmiyorsa, geliştirici bunları iptal edebilir.

Her özellik dosyası bir modülde saklanır ÖZELLİKLER/ veya katkıda bulunmak-TEKNİK ÖZELLİKLER/ . cvs.mandriva.com adresinden erişilebilir.

Kaynaktan inşa etmek

Diyelim ki Freshmeat web sitesinde veya 'da ilginç bir program buldunuz ve bu programın tüm ROSA Desktop kullanıcıları tarafından kullanılabilir olmasını istiyorsunuz.

Kaynak kod arşivini indirin ve SOURCES dizinine yerleştirin.

Ön kontroller

Lisans GPL lisansının yaygınlığına rağmen, hala GPL olmayan birçok lisans bulunmaktadır. Dağıtıma dahil edilip edilemeyeceğini bilmek için yazılımın tam lisansını belirlemek gerekir. Tescilli lisanslar kullanan yazılımları kabul etmiyoruz, ancak kulüp için birkaç istisna var. Ayrıca, bunları özgürce dağıtmamıza izin vermeyen programları kabul edemeyiz. Dağıtımda kullanılmasına izin verilen lisansların listesi Mandriva sayfasındadır. Tar arşivinin sıkıştırılması Orijinal tar arşivini herhangi bir değişiklik yapmadan kullanmanızı öneririz. Kaynaklar çeşitli sıkıştırma yöntemleri kullanılarak dağıtılıyorsa, genellikle .tar.bz2'yi tercih ederiz. Yamaları (diff ve benzeri programlar tarafından elde edilir) ve diğer metin dosyalarını (yapılandırma dosyaları, komut dosyaları vb.) sıkıştırmaktan kaçının çünkü bunlar genellikle çok az yer kaplar, aksi takdirde Subversion diff dosyalarındaki değişiklikleri görmek daha zor olacaktır (Subversion'ın kendisi kullanır bir tür sıkıştırma).

Not
Güvenlik açısından kritik paketler için, sağlama toplamını ve imzayı değiştireceğinden kaynak kodunu değiştirmemenizi öneririz. OpenSSH böyle bir pakete örnek olmak üzere, bu tür paketleri orijinal hallerinde bırakmanızı öneririz.

spec dosyasının içinde

Böylece bu belgenin en önemli bölümlerinden birine geldik. Spesifikasyon dosyası, aşağıdakiler için gerekli tüm bilgileri içerir:

  • programı derlemek, kaynak kodunu ve ikili rpm paketini oluşturmak;
  • programın yüklenmesi ve kaldırılması.

Kısacası, bir spesifikasyon dosyası benzetilmiş bir derlemeyi ve kurulumu açıklar, rpm'ye kurulumdan kaynaklanan hangi dosyaların paketlenmesi gerektiğini ve sonunda sisteme nasıl kurulacağını söyler. Komutlar /bin/sh komut kabuğu kullanılarak yürütülür, bu nedenle aşağıdaki gibi komut yapıları [ -f configuration.in ] && autoconf doğrudur ve uygulanabilir.

Spesifikasyon dosyalarından birinde kullanılan ana özelliklere bakacağız. Gittikçe daha fazla rpm paketi oluşturdukça, kapsamadığımız bazı ek seçenekler olduğunu fark edeceksiniz. Daha fazla bilgi için, Maksimum RPM kitabına bakın (bkz. Bölüm 7).

Cooker'dan alınan aşağıdaki örnek özellik dosyasını göz önünde bulundurun:

Ad: gif2png Özet: Web sitelerini GIF'leri kullanmaktan PNG'leri kullanmaya dönüştürmek için araçlar Sürüm: 2.0.1 Sürüm: 1 Kaynak0: http://www.tuxedo.org/~esr/gif2png/%(name)-%(version). tar.bz2 Kaynak1: %(name)-%(version)-rosa-addon.tar.bz2 Yama0: gif2png-2.0.1-bugfix.patch URL: http://www.tuxedo.org/~esr/gif2png/ Grup: Uygulamalar/Multimedya Lisansı: MIT-benzeri Gerekenler: python %description GIF'leri PNG'lere dönüştürmek için araçlar. gif2png programı, GIF dosyalarını PNG dosyalarına dönüştürür. Python komut dosyası web2png, tüm bir web ağacını dönüştürür ve ayrıca IMG SRC referanslarını doğru tutmak için HTML sayfalarına yama uygular. %prep %setup -q -a 1 %patch -p1 %build %configure %make %install %makeinstall %files %defattr(0755,root,root) %doc BENİ OKU HABERLER KOPYALANIYOR YAZARLAR %(_mandir)/man1/gif2png.1 * %(_mandir)/man1/web2png.1* %(_bindir)/gif2png %(_bindir)/web2png # ROSA için paketler hazırlarken, %changelog bölümünü kendiniz oluşturmayın! %changelog * 02 Kas 1999 Pzt Camille Begnis 2.0.1-rosa2012 - 2.0.1'e yükseltildi * 25 Ekim 1999 Pzt Camille Begnis 2.0.0-rosa2012 - Mandrake için özel dosya uyarlamaları - python gereksinimi ekleyin - gz'den bz2'ye sıkıştırma

Bir satırın başındaki "%" karakteri şu anlama gelebilir:

  • bölümün başlangıcı (bölüm) ( hazırlık, inşa etmek, Yüklemek, temiz);
  • yerleşik kabuk komut dosyası makrosu ( kurmak, yama);
  • özel bölümler (bölümler) tarafından kullanılan yönerge ( defttr, doktor, ...).

başlık bölümü ( başlık)

Ad: gif2png Sürüm: 2.0.1 Sürüm: 1

Bu üç satır, özellik dosyasının %(name) , %(version) ve %(release) adlı diğer bölümlerinde kullanılabilecek sabitleri otomatik olarak tanımlar. Bazı paketler, ROSA dağıtımlarında yalnızca argümanını döndüren, kullanımdan kaldırılmış %mkrel makrosunu kullanarak bir yayın oluşturabilir.

Ayrıca, örnek özellik dosyasında olmayan, bilmek isteyebileceğiniz birkaç etiket vardır. Karşılaşabileceğiniz bazı etiketler var. Rpm paketleri oluşturmaya yeni başlıyorsanız, hiç kimse tüm etiketleri hatırlamanızı gerektirmez, ancak bir süre sonra bu liste iyi bir başlangıç ​​noktası olabilir!

Şimdi sıra paket adının nasıl oluştuğunu açıklamaya geldi. Çalışmanızın başkaları tarafından anlaşılabilir olması için her zaman bu sözleşmeye uymak çok önemlidir.

  • İkili paket aşağıdaki gibi gösterilir: ad-sürüm-yayın.arch.rpm (isim-versiyon-serbest bırakmak.arch.rpm)
  • Bir kaynak paket şu şekilde belirtilir: ad-sürüm-yayın.src.rpm (isim-versiyon-serbest bırakmak.src.rpm) (yani bizim durumumuzda - gif2png-2.0.1-1mdk.src.rpm )

Ad genellikle ana ikili paketin adına göre seçilir, ancak iyi nedenler varsa farklı bir ad kullanılabilir.

Sürüm, orijinal arşiv kaynak dosyasının adındaki sayıdır: name-version.tar.gz .

Sürüm, ek yamaların uygulanmasından, özellik dosyasında yapılan değişikliklerden ve hatta önemsiz bir simge güncellemesinden kaynaklanabilecek, paketin her yeni yapısıyla artan sürümden sonraki sayıdır.

Özet: web sitelerini GIF'leri kullanmaktan PNG'leri kullanmaya dönüştürmek için araçlar

Bu dize, paketin bir açıklamasıdır.

Source0: http://www.tuxedo.org/~esr/gif2png/%(name)-%(version).tar.bz2

Bu satır rpm'ye paketi oluşturmak için hangi kaynak dosyanın kullanılması gerektiğini söyler. Dosya adının önüne, orijinal kaynak kodunun bulunduğu web sitesini gösteren tam bir URL (genellikle isteğe bağlıdır) geldiğine dikkat edin. rpm sadece dosya adını koruyarak URL'yi sıyıracak ve SOURCES dizinini arayacaktır. Tam URL'yi sağlamak zorunlu olmamakla birlikte, herkesin kaynağı nereden indireceğini bulabilmesi için kullanılması şiddetle tavsiye edilir.

Birden çok kaynak dosya varsa, ile başlayan birden çok satır kullanın. Kaynak1: ..., Kaynak2: ... vb. sırasıyla.

Patch0: gif2png-2.0.1-bugfix.patch

Bu isteğe bağlı bir etikettir. İki durumda kullanılabilir:

  1. Programın kaynak kodundaki bir hatayı düzelttiniz ve derlemeden önce programın kaynak koduna uygulanması gereken bir yama oluşturdunuz.
  2. İnternette bir yerde bu yazılım paketi için bir yama olduğunu öğrendiniz ve bu yamayı indirdiniz.

Tüm yamalar SOURCES dizininde olmalıdır. Birkaç yama varsa, bunlar adlandırılmalıdır. Yama1, Patch2 vb.

URL: http://www.tuxedo.org/~esr/gif2png/

Bu satır, programın ana sayfasını gösterir. Kullanımı isteğe bağlıdır, ancak yine de belirtmenizi öneririz.

Grup: Multimedya

Bu snippet, rpm'ye paketimizi paket ağacında nereye yerleştireceğini söyler. Bu özellik rpmdrake ve kpackage gibi ön uç paket yöneticileri tarafından kullanılır.

Bu arada benzer Red Hat gruplarından farklı olan tam grup yapısı Paketleme grubu sayfasında sunulmaktadır. Kabul edilen gruplama kurallarına uymak çok önemlidir, aksi takdirde paketiniz paket ağacını bozar.

Lisans: MIT benzeri

Bu etiket, pakette yer alan yazılıma uygulanacak telif hakkı sahibi tarafından seçilen lisansı belirtir. Çoğu zaman GPL'dir. ROSA Lisansı ve Lisans Politikası sayfaları, kullanımına izin verilen lisansların tam listesini sağlar.

BuildRequires: python

rpm'yi derlemek için python kitaplıklarının gerekli olduğunu belirtir, örneğin libpyglib-gi2, python-devel'i belirtmek genellikle gereklidir, eğer bir paket hemen bulunmazsa, urpmi -p PaketAdı komutunu kullanarak onu arayabilirsiniz, başka bir pakette bulunabileceğinden, bu komutla belirtilir.

Sağlar: libgif2png

Sağlar, diğer programlar tarafından kullanılabilecek bir kitaplığın adını belirtir (sağlanır)

Gerektirir: piton

Bu satır, pakette yer alan programlardan birinin Python programlama dilinde yazılmış bir betik olması nedeniyle eklenmiştir. Bu, programın doğru çalışması için python yorumlayıcısının gerekli olduğu anlamına gelir.

Minimum (veya belirli) bir sürüm gereksinimi kullanabilirsiniz. Örneğin:

Gerektirir: piton >= 1.5.1

Nadir durumlarda, uygulama zaten kurulu olan diğer kütüphanelerle veya uygulamaların eski sürümleriyle çakışabilir, kurulum sırasında bunları sistemden kaldırmak için kullanıcıyı bu konuda bilgilendirmeniz gerekir, bunun için etiket kullanılır

çakışmalar: piton<= 1.0.0

Bazı paketler yeni kütüphaneler kurulduktan sonra geçersiz hale gelir, onları etiketlemek ve kaldırmak için bir etiket kullanılır.

Eskiler: gif2png< 2.0.0

Açıklama etiketi aşağıdadır:

%description GIF'leri PNG'lere dönüştürmek için araçlar. gif2png programı, GIF dosyalarını PNG dosyalarına dönüştürür. Python komut dosyası web2png, tüm bir web ağacını dönüştürür ve ayrıca IMG SRC referanslarını doğru tutmak için HTML sayfalarına yama uygular.

Bu, rasgele sayıda satır ve paragrafa yayılabilen metin içerdiğinden, spesifik dosya başlığının içindeki çok özel bir etikettir. Metin, kullanıcının verilen paketi kurup kurmayacağına karar vermesine yardımcı olan, yazılımın tam bir açıklamasını içerir. Spesifikasyon dosyalarının algılanmasını iyileştirmek için çevirileri etiketleyin özet ve tanım adı verilen özel dosyalarda saklanır. Po.

%defattr(0755,kök,kök)

Bu etiket, kullanıcının sistemine kopyalanan tüm dosyalara uygulanacak öznitelikleri belirtir. Argümanlar şu anlama gelir:

  • -: normal dosyalar için tüm öznitelikler değişmeden kalır;
  • root: dosyanın sahibi root'tur;
  • kök: dosya grubu - kök;
  • 0755: bir paketin sahip olduğu tüm dizinlere uygulanan nitelikler - 0755 ( rwxr-xr-x).
%doc BENİ OKU HABER KOPYALAMA YAZARLARI

%doc özel etiketi, paketin belgelerinin parçası olan dosyaları işaretler. Belge dosyaları /usr/share/doc/gif2png-2.0.1/ dizinine yerleştirilecektir. Bu dizin otomatik olarak oluşturulacaktır. %doc dosyaları, BUILD dizinindeki tarball'dan ayıklanan kaynak dizine göredir.

%(_mandir)/man1/gif2png.1* %(_mandir)/man1/web2png.1*

Ayrıca merak ediyor olabilirsiniz: neden gif2png.1.lzma yerine gif2png.1* kullanılıyor? Bu, lzma yerine gzip sıkıştırması kullanan diğer sistemlerle uyumluluğu korumak içindir. Spesifikasyonda lzma sıkıştırmasına bu tür referanslar bulursanız, bunları yukarıdaki örnekte olduğu gibi normal bir ifadeyle değiştirin. Çoğu zaman, man1 dizinindeki tüm dosyalarla eşleşen %(_mandir)/man1/* öğesini kullanabilirsiniz.

%(_bindir)/gif2png %(_bindir)/web2png

Gördüğünüz gibi, gerekli her yol için gerekli türde bir makro var. İşte en kullanışlı olanlar: (tam liste /usr/lib/rpm/macros içinde mevcuttur): %(_prefix) , %(_bindir) , %(_sbindir) , %(_datadir) , %(_libdir) , %(_sysconfdir ) . %(_mandir) , %(_infodir) . Oyunlar için %(_gamesbindir) ve %(_gamesdatadir) kullanın.

Değişiklik günlüğü bölümü ( değişiklik günlüğü)

Dikkat!İşte bölüm hakkında genel bilgiler değişiklik günlüğü. Sen yapmamalı sürüm kontrol sistemindeki değişiklik geçmişinden otomatik olarak oluşturulduğundan, bu bölümü spec dosyasına kendiniz ekleyin.

değişiklik günlükleri nelerdir

%değişiklik günlüğü

Bu bölüm, pakette yapılan çeşitli değişikliklerin kaydını tutmayı amaçlamaktadır. Paketin her yeni yapısı, programın her yeni sürüm numarasının yanı sıra bu bölümde bir paragrafla birlikte olmalıdır. Bu paragrafların aşağıdaki yapısı gözlenir:

* 02 Kas 1999 Pzt Camille Begnis 2.0.1-1mdk

  • paragrafın ilk satırı yıldız işareti "*" ile başlar ve ondan bir boşlukla ayrılır;
  • haftanın gününü gösteren üç harf;
  • ayı temsil eden üç harf;
  • ayın gününün iki basamağı;
  • yılın dört basamağı;
  • paketi oluşturan kişinin adı;
  • kendi soyadı;
  • köşeli parantez içinde kendi e-posta adresi "<>»;
  • güncel sürüm ve yayın.
- 2.0.1'e yükseltildi

Bunu, paketteki değişikliği açıklayan "-" ile başlayan tek bir satır izler.

Korganizer'dan teknik özellik dosyası çalındı. - yayınlanmadan önceki son anlık görüntü - ROSA uyarlamaları. - /etc/zsh içindeki hatayı düzeltin USER yerine USERNAME kullanın. - Diğer oyuncuları rahatsız eden küçük bouchon'u kaldırın. - /etc/profile.d/ dosyalarını kaynaklamak için /etc/z*'yi geliştirin. - örnek dizin adındaki yazım hatasını düzeltin - sabit QT kitaplıkları sürüm gereksinimleri - Earl Grey çayını işlemek için yama ekleyin

Varsayılan olarak, derlenmiş pakete yalnızca 1 yıldan eski olmayan kayıtlar yerleştirilir. Bu davranış, %_changelog_truncate değeri ayarlanarak değiştirilebilir.

Sürüm kontrol sistemindeki değişikliklerin geçmişi

Bölüm için bilgiler değişiklik günlüğü sürüm kontrol sisteminin değişiklik geçmişinden otomatik olarak oluşturulur. Değişiklik geçmişindeki her mesaj satırı bir bölüm girişi olur değişiklik günlüğü, kısa çizgi ile başlayan. Mesajlar, yazarın adı ve e-posta adresine göre otomatik olarak gruplandırılır.

Paketin değişiklik günlüğüne değişiklik günlüğünden bir satırın eklenmesini istemiyorsanız, satırın başına "SILENT: " ekleyin. Boş satırlar da yoksayılır.

Toplantı

Sonunda, spec dosyamız hazır. Derin bir nefes alın, oturun ve rpmbuild -ba mypackage.spec yazın.

Paket oluşturulduktan sonra BUILD dizinini temizleyecek --clean seçeneğini de ekleyebilirsiniz. Çok fazla boş sabit disk alanınız yoksa bu yararlı olabilir.

İşlem aşağıdaki sonuçlarla sona erebilir:

  • çıkış0;
  • diğer tüm durumlar.

İşleminizin son satırı için iki olasılık vardır:

  • %0.01 olasılık: + çıkış 0
  • Diğer durumlar için %99,99 olasılık.

İkinci durumda mısın? Tebrikler testi geçtin, uzaylı değilsin.

İyi şanslar, çok uzun, çalışmanızda hata ayıklamak için rpm oluşturma seçeneklerine (man rpmbuild ) bir göz atın, diğer kişilerin "özellik dosyalarına vb. bakın.

Paketler oluşturmanın çok temiz bir yolu vardır: kullanın rpmbuild -bs --rmspec --rmsource(orijinal yapıdan herhangi bir şeyi kaldırmak için) ve ardından rpmbuild --rebuild yapın.

Süreç Optimizasyonu Oluştur

Paketinizi oluşturmak için komutu çalıştırdığınızda, aşağıdaki gibi bir mesajla bilgilendirileceğinizden emin olabilirsiniz: foo-devel foo2 için gereklidir.

Bu, geliştirme için kullanılan diğer paketlerden bilgilere ihtiyacınız olduğu anlamına gelir (genellikle bu tür dosyaların adları foo.h gibi). Bunlara sahip değilseniz, derleme durur veya derleme başarılı olsa bile paket bazı özelliklerden arındırılır.

ROSA yapı kümesi, bu önceden yüklenmiş geliştirme paketlerinin çoğuna sahiptir ( geliştirmek-paketler). Gerekli paketlerden birinin spec dosyasında listelenmemiş olması durumunda, paket yine de küme üzerinde oluşturulacaktır. Ancak bu tür bilgilerin eksikliği, paketin devel paketinden yoksun makineler üzerine kurulmasını engelleyerek hata ayıklamayı ve yükseltmeyi daha zor hale getirecektir.

Paketi hazırladığınız programın web sitesine bir göz atın, gerekli bileşenler hakkında bilgi bulabilirsiniz.

Bir derleme yaparken bu "eksik BuildRequires" öğelerini bulmak için sistemde yalnızca en temel geliştirme paketleri bulunmalıdır:

  • glibc-devel
  • libncurses5-devel
  • libstdc++6-geliştirme

Bundan sonra sadece rpm build komutunun istediği geliştirici paketlerini kurun.

Derlemeye başlarken, mesajları takip edin kontrol ediliyor...

gibi bir şey görürseniz foo aranıyor... foo.h bulunamadı, bu, başlık dosyasının sisteminizde bulunmadığı anlamına gelir. içeren geliştirme paketini bulun. foo.h, ancak dikkatli olun: birden fazla paket bulabilirsiniz. Bu yüzden size en uygun olanı seçin. Örneğin, sesle çalışmak üzere tasarlanmış bir uygulama oluşturuyorsanız, bilgisayar ağı ile ilgili bir paket seçmemelisiniz.

Ardından paketi sisteme kurun, bölüme adını eklemeyi unutmayın. BuildRequires spec dosyanız.

Eksik başlık dosyaları derleme zamanında bulunabilir. Durursa, diğer foo.h olup olmadığını kontrol edin ve aynısını yapın.

Bir RPM Paketini Kontrol Etme

Temel Kontroller

Her şeyden önce, aşağıdakileri kontrol etmeniz gerekir:

  • doğru adlarla uygun dizinlerde oluşturulan rpm'lerdir (~/rpm/SRPMS/ ve ~/rpm/RPMS/i586/ dizinlerinde);
  • Komutla alınan bilgiler doğru mu? rpm -qlivp --changelog paketim.(src.)rpm.

Koşu Rpmlint

Bundan sonra, paket üzerinde çeşitli kontroller yapacak olan Rpmlint yardımcı programını kullanmalısınız. rpmlint'i çalıştırmadan önce, Rosa doğrulama kurallarını içeren rpmlint-mandriva-policy paketinin kurulu olduğundan emin olun. Aramak rpmlint paketim. .rpm belirli bir paket hakkında rapor almak için. Daha ayrıntılı bilgi için -i anahtarını kullanın. rpm ve src.rpm kontrol etmelisiniz. Derleme hataları hakkında daha fazla bilgi için Paket Oluşturma Sorunları sayfasına bakın.

yükleme testi

Şimdi paketin herhangi bir makinede (tercihen derlemenin yapıldığı makineden farklı olarak) kurulumunu ve güncellemesini kontrol etmeniz ve şunlardan emin olmanız gerekir:

  • Gerekli tüm dosyaları doğru izinler ve sahiplerle oluşturdu
  • Kurulum sırasında çalışan tüm komut dosyaları başarıyla tamamlandı
  • Tüm yürütülebilir dosyalar bit kümesine sahiptir yürütülebilir, ve dokümantasyon dosyaları tüm kullanıcılar tarafından kullanılabilir

Tam test için, paketi kaldırma sürecini, kurulu yazılımın işlevselliğini ve benzerlerini de kontrol edebilirsiniz.

Tüm testler başarıyla geçerse, neredeyse oradasınız - geriye kalan tek şey paketi depoya göndermek.

Bir şeyler yanlış gitti?

Bu belgeyi okuyorsanız, zaten iyidir. Sorunuzun cevabını burada bulamazsanız, aşağıdaki kaynakları da deneyebilirsiniz:

  1. Resmi belge RPM-NASIL(rpm programı ile birlikte sisteme kurulur).
  2. Kırmızı Şapka kitabı Maksimum RPM http://www.redhat.com/docs/books/max-rpm/max-rpm-html/ adresinde mevcuttur.
  3. benzer paketlerin özel dosyalarına bakın - yazarları benzer sorunlarla karşılaşmış olabilir
  4. ROSA geliştiricilerinin posta listesinde bir soru sorun.

Bulduğunuz çözümlerin başkaları için faydalı olabileceğini düşünüyorsanız, bu çözümlerin açıklamalarını eklemek istediğiniz dokümanların yazarlarına lütfen bilgi veriniz.

Kurulum öncesi ve kurulum sonrası komut dosyaları

Temel bilgiler

Bir RPM paketi, istemci sistemlerinde belirli dizinlere çıkarılan bir dosya arşivinden daha fazlasıdır.

Sistem, programcılara güçlü bir özellik sunar: kurulum öncesi ve kurulum sonrası komut dosyaları. Bu komut dosyaları, paket oluşturucunun, paket kurulduğunda veya kaldırıldığında istemci makinede çalıştırılacak bir kod parçası yazmasına izin verir.

Bu komut dosyaları, herhangi bir geçerli komut satırı yorumlayıcı komutundan oluşturulur. İşte bunlardan dördü:

Bu senaryolarla ilgili bazı uyarılar var. İlk olarak, 8192 arabellek boyutunda kalmalı ve ikincisi, betikler etkileşimli olmamalıdır. RPM kurulum prosedürlerinin etkileşimsizliğini bozduğu için, kullanıcıdan manuel giriş gerektiren herhangi bir şey yanlıştır.

  • %pre - Bu komut dosyası, paket sisteme yüklenmeden önce yürütülür.
  • %post - Bu komut dosyası, paket sisteme yüklendikten sonra yürütülür.
  • %preun - Bu komut dosyası, bir paket sistemden kaldırılmadan önce yürütülür.
  • %postun - Bu komut dosyası, paket sistemden kaldırıldıktan sonra yürütülür.

Bu tür senaryoların amacı son derece çeşitli olabilir. Scriptler sisteme zarar vermeyecek şekilde tasarlanmalıdır. Komut dosyalarının süper kullanıcı olarak çalıştırıldığını unutmayın. Yeni bir uygulamanın kurulumunu tamamlayan sistem yönetimi görevleriyle ilgilidir. Örneğin:

  • a ekle cron programı düzenli aralıklarla çalıştırmak
  • Koşmak chkconfig hizmeti önyükleme zamanında başlatmak için

Güncellemelerle çalışma

Paketlerle çalışmak, bir paketin sadece yüklenmesi veya kaldırılması yerine yükseltilebilmesi nedeniyle karmaşıktır. sorun şu ki, yükseltme sırasında paketin yeni sürümünün %postun betiği eski sürümün %post betiğinden sonra çalıştırılır ve son betiğin yaptığı şey kaybolabilir.

Belirli eylemlerin yalnızca bir paketi kurarken/kaldırırken gerçekleştirildiğinden, ancak güncelleme sırasında gerçekleştirilmediğinden emin olmak genellikle yararlıdır. Bu tür durumları ele almak için RPM, %pre , %preun , %post ve %postun komut dosyalarına özel bir argüman iletir.

Argüman, bu komut dosyasının yürütülmesinden sonra makineye kurulacak bu paketin farklı sürümlerinin sayısını içerir. Örneğin, yeni bir paket kurarken, %pre ve %post komut dosyalarına "1" değeri verilecektir. Bir paketi güncellerken, yeni sürümün %preun ve %post komut dosyaları "2" olarak, eski sürümün %preun ve %postun komut dosyaları "1" olarak ayarlanacaktır.

Böyle bir parametrenin varlığı, programcıların, bir paketi kurarken veya güncellerken, betiğin hangi durumda çalıştırıldığını ayırt etmelerini sağlar.

  • Kurulum komut dosyaları için (%post , %pre ) - $1 parametresi "1"e eşitse, ilk kurulum gerçekleşir
  • Kaldırma komut dosyaları için (%postun , %preun ) - $1 parametresi "0" ise, paket kaldırılır; aksi takdirde, --force seçeneğiyle bir yükseltme veya yüklemedir.

Bir parametrenin değerini kontrol etmek için aşağıdaki yapıyı kullanabilirsiniz:

%postun if [ $1 -eq 0 ]; ardından ### paket kaldırmaya özel eylemleri gerçekleştirin fi [ $1 -eq 1 ]; ardından ### fi paketini güncellemeye özel eylemleri gerçekleştirin

Dosya tetikleyicileri

"%post -p /sbin/ldconfig" veya "%update_menus" çalıştırma gibi ortak görevleri gerçekleştirme ihtiyacını önlemek için ROSA, RPM dosyası tetikleyicilerini kullanır.

Daha fazla makro

Rosa için paketler oluştururken, genel görevleri gerçekleştirmek için spesifikasyon dosyasındaki çeşitli makroları kullanabilirsiniz.

  • Bilgi sayfaları işleniyor:
%post %__install_info %(name).info %preun %__install_info %(name).info
  • Menü sistem güncellemesi. Rosa, XDG Menüsünü kullanır.
%post %(update_menus) %postun %(clean_menus)
  • Yerelleştirme dosyaları işleniyor. Genellikle /usr/share/locale/.. alt dizinlerinde bulunan tüm .mo dosyalarını manuel olarak listelemek yerine, %install bölümünde özel bir makro kullanmak iyi bir uygulamadır. yerelleştirmeleri olan dosyaların listesi:
%find_lang %(ad)

Oluşturulan dosya bölümünde belirtilmelidir. Dosyalar:

%files -f %(ad).lang

  • Derlemede kullanılan makrolar %configure ve %makeinstall'dır. Kurulum önekini ve çeşitli dizinleri (bindir, datadir ve diğerleri gibi) otomatik olarak ayarlarlar. Bu makrolar genellikle küçük paketler için harika çalışır, ancak karmaşık ürünler oluştururken ek ince ayar gerektirebilir. % make makrosu, uygun -j seçeneğiyle make komutunu çağırır , çok çekirdekli makinelerde montajı paralelleştirme. Hala komut dosyasını çağırmanız gerekiyorsa ./yapılandır direkt olarak, asla hedef donanım mimarisinin adını belirtmeyin. Bu amaçlar için bir makro vardır %( hedef platformu) (veya hatta %( hedef cpu) daha fazla bilgi gerekiyorsa).
  • Sunucu yazılımı oluşturma. Performans pahasına daha fazla güvenilirlik gerektiren bir yapı için, yapı başlamadan önce çağrılması gereken özel bir %serverbuild makrosu kullanırız. Bu makro, gerekli optimizasyon bayraklarını ayarlar. %build bölümü şöyle görünür:
%build %serverbuild %yapılandır %make
  • İnit betikleri için makrolar. Bir init betiği (/etc/init.d dizinindeki dosya) içeren bir paketi kurarken, betiği chkconfig --add .. ile kaydetmelisiniz; güncelleme yaparken bu gerekli değildir, ancak komut dosyası çalışırsa yeniden başlatılması gerekir; Bir paketi kaldırdığınızda, komut dosyası bilgilerini kaldırmanız gerekir. Bu amaçlar için ilgili makroya sahibiz:
%post%_post_service %preun %_preun_service
  • Tedavi hayalet-Dosyalar. Bazı paketler (özellikle birçok oyun), belirli bir zamanda sistemde bulunmayabilecek dosyalar içerir. Bu tür dosyalar olarak işaretlenmelidir hayalet ve özel makrolar kullanarak işlem yapın:
%install (...) mkdir -p %(buildroot)/var/lib/games dokunmatik %(buildroot)/var/lib/games/powermanga.hi %post %create_ghostfile /var/lib/games/powermanga.hi root oyunlar 664 (...) %files %attr(664, kök, oyunlar) %ghost /var/lib/games/powermanga.hi

%create_ghostfile makrosu aşağıdaki yapıya genişleyecektir:

Eğer[! -f /var/lib/games/powermanga.hi ]; ardından /var/lib/games/powermanga.hi chown root.games /var/lib/games/powermanga.hi chmod 664 /var/lib/games/powermanga.hi fi öğesine dokunun

  • .desktop / MIME dosya türlerini uygulamalarla ilişkilendirme: XDG menü sistemi, uygulamaların .desktop dosyalarında belirli bir MIME türüne sahip dosyalarla ilişkilendirilmesine olanak tanır. Bir .desktop dosyasını yüklerken veya kaldırırken yardımcı programı çalıştırmanız gerekir. güncelleme-masaüstü-veritabanı , uygun makroları kullanarak:
%post %update_desktop_database %postun %clean_desktop_database
  • Freedesktop.org MIME Türü Veritabanı: Tüm olası MIME türlerini ilgili dosya uzantılarıyla veya "sihirli" numaralarıyla almak için kullanılan veritabanı, aşağıdaki makrolar çağrılarak güncellenmelidir:
%post %update_mime_database %postun %clean_mime_database
  • Simge önbelleği: tüm/usr/share/icons/hicolor (veya /usr/share/icons/gnome veya /usr/share/icons/crystalsvg gibi ücretsiz masaüstü özellikleri tarafından sağlanan diğer dizinler) içine kurulu simgeleri içeren paketler zorunlu simge önbelleğini aşağıdaki örnekte gösterildiği gibi güncelleyin (bu gereksinim /usr/share/icons , /usr/share/icons/mini veya /usr/share/icons/large içinde depolanan simgeler için geçerli değildir):
... %file ... %(_iconsdir)/hicolor/* %(_iconsdir)/crystalsvg/* .... %post %update_icon_cache hicolor %update_icon_cache crystalsvg %postun %update_icon_cache hicolor %update_icon_cache kristallervg
  • GConf Şemalarını Kaydetme: GNOME GConf şemaları, aşağıdaki makrolar kullanılarak kurulmalı ve kaldırılmalıdır:
... # her şema anahtarı /etc/gconf/schemas/ adlı bir dosyaya karşılık gelir .schemas %şemaları tanımla apps_gnome_settings_daemon_default_editordesktop_gnome_font_rendering desktop_gnome_peripherals_keyboard_xkb fontilus themus %post %post_install_gconf_schemas %(schemas) %preun %preun_uninstall_gconf_schemas %(schemas)
  • Scrollkeeper veritabanının güncellenmesi: Bir .omf dosyası kuruluyorsa, scrollkeeper veritabanının (docbook belgelerini indekslemek için kullanılır) güncellenmesi gerekir:
... %post %update_scrollkeeper %postun %clean_scrollkeeper

urpmi ve rpmdrake ile etkileşim

Bazen, bir paketin belirli bir sürümünü yükseltirken veya kurarken dikkat edilmesi gereken bazı özel önlemler konusunda kullanıcıyı uyarmak gerekir. rpmdrake-2.1.3-11mdk ve üstü bunu destekler: rpm'de README adlı metin dosyalarını arar. install.urpmi , README.update.urpmi veya README.urpmi ve bunları görüntüler.

README.install.urpmi yalnızca kurulu paketler için görüntülenir; README.update.urpmi yalnızca yükseltilmiş paketler için; README.urpmi her iki durumda da görüntülenir.

ROSA Paket Grupları

Her paket, ROSA tarafından kullanılan RPM gruplarından birine ait olmalıdır.

Lisanslar

Paketlenmiş yazılım lisanslarıyla ilgili sorular için lütfen Lisanslama politikasına bakın.

Alternatif: yüklemeyi kontrol edin

Kişisel kullanım için RPM oluşturmanın çok kolay bir yolu checkinstall paketini kurmaktır; her zamanki gibi kaynaktan derleyin (./configure && make && sudo make install), ancak make install adımını checkinstall ile değiştirin. Bu, bir RPM oluşturmayı otomatikleştirir ve kullanımı çok basittir. Avantajı, kaynaktan derleme yaparken paket yöneticisini atlamanız gerekmemesidir (Ancak, RPM'leri başkalarına dağıtmayı düşünüyorsanız, yukarıda açıklandığı gibi "düzgün" bir şekilde oluşturmak muhtemelen İyi Bir Fikirdir.)

Red Hat Paket Yöneticisi (RPM), Unix sistemlerinde yazılım paketleri oluşturmak ve yönetmek için bir dizi araç. Red Hat Linux ve türev dağıtımlarıyla birlikte gönderilen RPM, kaynak kodunda dağıtıldığı için Unix'in herhangi bir türevi üzerinde çalışabilir. Ancak, diğer Unix lehçeleri için RPM'leri bulmak kolay değildir.

Paket yönetimi oldukça önemsiz ilkelere dayalı olsa da, uygulanması zor olabilir. Elbette yazılımların kontrollü kurulumu, kurulu yazılım paketlerinin yönetimi ve sistemden kaldırılması zor değildir. RPM, bu tür işlemleri verimli bir şekilde gerçekleştirme ihtiyacından doğdu; o zaman başka önemli bir karar yoktu.

RPM, diğer bazı Unix paket yöneticilerinin aksine, kendi dosya biçimini kullanır. Bir paketten tek bir bileşeni ayırmanız gerekiyorsa ve RPM yardımcı programı elinizin altında değilse, bu ciddi sorunlara neden olabilir. Neyse ki, dosyaları tar veya ar ile değiştirilebilen bir biçimde almanıza izin veren Alien gibi araçlar var.

RPM dosya adlandırma şemasının kendisi standartlaştırılmış bir kuraldır. RPM adları (ad)-(sürüm)-(yapı).(platform).rpm biçimindedir. Örneğin, cat-2.4-7.i386.rpm adı, x86 platformu için cat sürüm 2.4 build 7 için RPM paketini belirtmek için kullanılır. Platform ismi yerine src belirtilmişse kaynak metinlerden bahsediyoruz demektir.

Neden paket yönetimine ihtiyacınız var?

Bir yürütülebilir dosya ve bir kılavuz sayfası olan cat gibi küçük yardımcı programlar için bir RPM'ye gerek yoktur. Ancak örneğin birçok bileşen ve bağımlılık içeren ve bunların her yerde uygulanmasını gerektiren KDE'yi ele alalım. Hepsini takip etmek imkansız değilse de son derece zordur.

Paket yönetimi, görevi büyük ölçüde basitleştirir. Bir programın nesne modülleri, yapılandırma dosyaları ve ihtiyaç duyduğu diğer her şey hakkındaki bilgileri korumasına izin vererek, hangilerinin kurulacağını, kolayca kaldırılacağını veya kolayca güncelleneceğini belirtebilirsiniz.

Kurulum sorunsuz gerçekleşir. İhtiyacınız olanı seçin ve sistemden kirli işleri sizin için yapmasını isteyin: programı paketinden çıkarın, yeterli alan olduğundan emin olun, her şeyi doğru sıraya koyun ve kurun. Bir yazılım paketinin bağımlılıklarını ve ek gereksinimlerini takip etmek de iyi bir paket yöneticisi için kolaydır.

Kurulan paketlerin yönetimi de iyi bir paket yönetim sistemi tarafından mükemmel bir şekilde gerçekleştirilir. Sistem, bir şey yüklemeye karar verirseniz göz atmaya değer, yüklü yazılımların tam bir listesini tutar. Daha da önemlisi, böyle bir sistem, mevcut çözümleri kolayca yükseltmenize olanak tanır. Son olarak, paketleri doğrulamayı kolaylaştırır. Hangi paketlerin kurulu olduğunu ve bileşen özelliklerinin ne olduğunu bilerek, bir sorunu hızlı bir şekilde teşhis edebilir ve başarılı bir şekilde düzeltebilirsiniz.

RPM ve diğerleri

Kısacası, RPM ile ilgili en büyük şikayetim, güçlü bir grafik kullanıcı arayüzünün olmaması. Bazı arabirimler (gnorpm ve glint gibi) olsa da, bunlar SGI Yazılım Yöneticisi tarafından sağlanan daha karmaşık özelliklerden yoksundur. Genel olarak, RPM'yi çatışmaları ayrıştırmada ve çözmede inst'den daha iyi ve çok, çok daha hızlı buluyorum. Bu yüzden güçlü bir grafik arayüz olmadan yapmayı kabul ediyorum.

RPM hakkında en çok hayran olduğum şey, paket imzaları ve bileşen sağlama toplamları kullanılarak yapılan paketlerin hızı ve doğrulanmasıdır. Örneğin, bir keresinde not düzenleyiciyi yanlış yüklediğim için SGI Yazılım Yöneticisini yeniden yüklemek zorunda kaldım. Yeniden başlatmayı saymazsak, bu küçük paketi kurmak yaklaşık 15 dakika sürdü.

RPM, birden çok dosyayı tek bir arşivde birleştirir ve bir RPM paketinin gövdesini oluşturmak için arşivi sıkıştırır. Ayrıca, sistemi yeni bir paket kurmaya hazırlamak için kurulum öncesi ve kurulum sonrası komut dosyaları ve RPM'nin koruduğu veritabanı bilgileri dahil olmak üzere ek başlık bilgileri eklenir. Her paket yüklenmeden önce bağımlılıklar kontrol edilir; ek bileşenler verilen bayraklara göre kurulabilir.

RPM, kendine ait bu veritabanı sayesinde tam olarak harikalar yaratabilir.

RPM'lerle yükleme

Bu, temel bir RPM özelliğidir ve en popüler olanlardan biridir. Bunu yapmak için komutu çalıştırın

rpm -i (paket)

Her şey yolunda giderse, paket yüklenecek ve herhangi bir mesaj olmadan komutu girmeniz istenecektir. Neden başarısız olduğunuzu bilmeniz gerekiyorsa, bu daha talihsiz bir durumdur. -h bayrağını belirtirseniz, ekranda # işaretleri ile dolu "termometre" yi gözlemleyebilirsiniz. Görünüşe göre, birçok kişi -ivh bayraklarını birlikte kullanmayı seviyor:

rpm -ivh (paket)

Ve yine, bu durumda, neler olup bittiği hakkında fazla bir şey bilemezsiniz. Yeter ki kurulum süreci sorunsuz ilerlesin. Kural olarak, yeni bir paket kurarken mümkün olan tüm bilgileri (-vv) almaya çalışıyorum. Bu, neler olduğunu görmeme izin veriyor:

rpm -ivv (paket)

Ekranda görüntülenen bilgiler genellikle kaydırılsa da, herhangi bir sorun olup olmadığını kesin olarak bilmenizi sağlar. Ayrıca, hangi modüllerin zaten kurulu olduğu açıktır.

Bağımlılıklar RPM makul bir şekilde destekler, ancak tüm bunlar büyük ölçüde paket oluşturma modülünün kalitesiyle belirlenir. Kendilerine bağlı paketler ve başka bir şeyi bozan paketlere bağlı gibi görünen paketler gördüm. Hatırla bunu.

Bazen RPM, kurulu ancak kayıtlı olmayan paketler hakkında yorumlar yayınlar. Bunları RPM'nin yardımı olmadan kurmuş olabilirsiniz (örneğin OpenSSL). Bu tür açıklamalardan kurtulmak için RPM'yi bağımlılıkları yok saymaya zorlayabilirsiniz:

rpm -ivv -nodeps (paket)

Bunun her zaman akıllıca olmadığı ve yalnızca tam olarak neye bulaştığınızı bildiğiniz zaman yapılması gerektiği unutulmamalıdır. Halihazırda kurulu modülleri bozmak oldukça nadirdir, ancak bazen kurulu bir paket düzgün çalışmayabilir.

Nadir durumlarda, RPM karışıklık yaratacak ve açıkça yapmadığınız halde bir paket yüklediğiniz konusunda ısrar edecektir. Kural olarak, böyle bir durum bir tür hataya işaret etse de, üzerinde de çalışılabilir. Paketi yüklemeye zorlamanız yeterlidir:

rpm -ivv -force (paket)

Dikkat olmak. Bağımlılıkları göz ardı ettiğinizde olduğu gibi, bir paketi kurmaya zorlamak akıllıca olmayabilir. Sisteminizin çalışmayı durdurabileceğini unutmayın. Kendini suçla.

Muhtemelen en büyük ödülünüz, RPM'nin şaşırtıcı özelliklerinden birini kullanma yeteneği olacaktır: ağ kurulumu. Bazen sistemde ağ istemcisi olmaz ve bunları RPM ile yüklemeniz gerekir. Bunu yapmak için RPM, yerleşik Web ve FTP istemci yazılımına sahiptir:

rpm -iv ftp://ftp.redhat.com/path/package.rpm

rpm -iv http://www.me.com/path/package.rpm

Paket yönetimi

Varsayalım ki, kurulu olsun ya da olmasın, mevcut paketlerden bazıları ile çalışmak istiyorsunuz. Halihazırda kurulu olan ve kurulu olmayan paketler için yönetim fonksiyonlarını kullanabilirsiniz. Paketlerin doğruluğunu kontrol etmek de mümkündür.

Elinize yeni bir paket geçtiğinde, bazen tam olarak hangi özellikleri sunduğunu anlamak için onu keşfetmek istersiniz. Bu, sorgu modu kullanılarak yapılabilir.

rpm -qip (paket)

Bütün bunlar harika, ancak bu pakete tam olarak nelerin dahil olduğunu, hangi dosyalardan oluştuğunu bilmek istediğinizi varsayalım? Evet, bir paketin içeriğini bir tar arşivinin içindekiler tablosunu (tar -tvf ile) alabileceğiniz gibi görüntüleyebilirsiniz:

rpm -qlp (paket)

Bu, dizin adları da dahil olmak üzere arşivdeki tüm dosyaları tam adlarıyla listeler. Bu seçeneği genellikle bir paketin kurulması gerekip gerekmediğini, ancak en önemlisi nereye kurulacağını görmek için kullanırım. Modüllerin ait oldukları yere yerleştirilmesi gerektiği kuralına bağlı kalmayı tercih ederim, ancak bazı paket yöneticileri bunu yapmaz. Son olarak, sisteminize kurduğunuz tüm paketleri görmek için şunu kullanın:

rpm-qa

Size sistemde kurulu olan paketlerin bir listesi verilecektir.

Bence RPM'nin en havalı özelliklerinden biri paket doğrulama. Yaptığınız bir hata nedeniyle çökmüş bir bilgisayar veya atlanmış veya değiştirilmiş olabilecek bir yürütülebilir dosyayı ararken genellikle yararlıdır. Bir paketin geçerli olup olmadığını kontrol etmek için -V bayrağını kullanın:

rpm -V (paket)

Sistemde kurulu tüm paketlerin doğruluğunu kontrol etmek de oldukça basittir:

rpm-Va

Doğrulama modu, dosya hakkında bazı istatistiksel veriler almanızı sağlar.

5 MD5 toplamı; S Dosya boyutu; L Sembolik bağ; T Modifikasyon zamanı; D Cihazı; Kullanıcı; G Grubu; M Modu (izinler ve dosya türü dahil)

Bazen bu veriler anlamsızdır, örneğin /etc/inetd.conf dosyasını değiştirirseniz MD5 boyutu ve miktarı değişecektir. Ancak, /bin/login gibi bazı şeyler değişmemelidir. rpm -Va komutu, ilk olarak nelere dikkat etmeniz gerektiğini bilmeniz için hızlı bir güvenlik kontrolü yapmak için faydalı olabilir.

Gördüğünüz gibi paket yönetiminin dikkate değer özelliklerinden biri, yükseltme yapabilme kolaylığıdır. RPM, paketleri yükseltmek için bazen karıştırılan iki seçeneğe sahiptir. İlki basit bir yükseltmedir:

rpm -U (paket)

Buradaki karışıklık, paket kurulu değilken paket yöneticisinin yaptıklarından kaynaklanmaktadır. Paket bulunursa değiştirilir. Bulunamazsa, sistem buna göre değiştirilir ve paket kurulur. Paketi kurmak ve ardından gelen değişikliği otomatik olarak yapmak istemiyorsanız, bu bazen kafa karıştırıcı olabilir. Yalnızca gerçekten en son sürümüne sahip olmak istediğiniz paketleri "yenilemenizi" öneririm:

rpm -F (paket)

Bu durumda sadece kurulu paketler değiştirilecek ve paket bulunamazsa kurulmayacaktır.

Modifikasyon da çok ilginç bir şekilde gerçekleştirilir. Öncelikle yeni bir sürüm kurulur ve eskisinden farklılıkları not edilir. Daha sonra eski sürüm kaldırılır, ancak yeni bileşenleri etkilememek için yalnızca bazı bölümleri kaldırılır. /usr/local/bin/netscape'in değiştirildiğini ve ardından silindiğini hayal edin, o zaman tüm çabalar boşuna olurdu!

Paketleri kaldırma

Paketleri kurabilir, güncelleyebilir ve yönetebilirsiniz ve elbette RPM kullanarak paketleri kaldırabilirsiniz. Bir RPM paketini "kalıcı olarak" kaldırmak için şunu kullanın:

rpm -e (paket)

Kurulumlar ve yükseltmelerden farklı olarak, bir paketi kaldırırken "package-version.i386.rpm" adını değil, sadece "package-version" adını kullanmalısınız. Bunlar, sorgu modunda görüntülenen ve belirtilmesi gereken adlardır. Paket yöneticisine adın en genel kısmını belirterek paketin tüm bileşenlerini kaldırma seçeneği vermelisiniz, örneğin linuxconf ve linuxconf-devel için bu linuxconf olacaktır. Bağımlılıklar olmadan da yapabilirsiniz:

rpm -e -nodeps (paket)

Burada yine risk alırsınız çünkü beklediğinizden fazlasını kaldırabilirsiniz. Daha detaylı bilgi almak için kurulum sırasında olduğu gibi bayraklar ekleyebilirsiniz.

RPM hakkında bazı notlar

Bazen geliştiriciler, RPM paketleri için oldukça garip bağımlılıklar yaratırlar. Örnek olarak libsafe'i ele alalım. İyi tanımlanmış bir bağımlılığı vardır: kendisi (“kendinden”). Bu durumda, paket yalnızca -nodeps bayrağıyla doğru şekilde kurulabilir. Diğer zamanlarda, paket ek parçalar içerebilir ve amaçladığınızdan daha fazlasını yüklemeniz gerekebilir.

RPM paketleriyle ilgili en sevmediğim şey, işlevleriyle uyuşmayan adlara sahip olmaları. Bu kural, açıklandığı gibi sorgu araç takımı kullanılarak atlanabilirken, harcamak istediğimden daha fazla zaman alıyor. RPM paketlerinize en doğru isimleri vermenizi tavsiye ederim.

RPM, kaynak kodunda dağıtıldığı için herhangi bir Linux/Unix varyantı ile kullanılabilir. RPM, Red Hat Linux'un ve bazı türev dağıtımlarının bir parçası olarak dağıtılır. Uyumluluğu sağlamak için 3.0 ve üstü sürümler önerilir. Sürüm 4.0'ın farklı bir veritabanı biçimi olduğu bildiriliyor, bu nedenle RPM'nizi sürüm 4.0'a yükseltmeden önce bu sorunun nasıl çözüleceğini bulmanızı öneririm. 4.0'da veritabanını tersine çevirmenin yeterli olup olmadığından emin değilim.

RPM genellikle bir RPM paketinin kendisi olarak dağıtılır. Temizlemek? Neyse ki, aynı zamanda bir gzip tarball olarak ve doğrudan kaynakta geliyor. Örneğin, Slackware'de yüklü RPM'im var, ancak gerekirse SGI Irix veya Sun Solaris'e de kurulabilir. Ancak, diğer Unix varyantları için paketler nadiren RPM kullanılarak hazırlandığından, Linux dışındaki platformlarda pratik olarak işe yaramaz.

José Nazario, Case Western Reserve Üniversitesi Biyokimya Bölümü'nde doktora öğrencisidir. Neredeyse on yıldır Unix ile ve çekirdek sürümü 1.2'den beri Linux ile çalışıyor.

Telif hakkı (c) Jose Nazario. Bu materyal, "Açık Yayın Lisansı"nda belirtilen hüküm ve koşullara uygun olarak dağıtılmaktadır (metnine bakınız. http://www.opencontent.org/openpub/). Jose Nazario, Devir Hızını Kullanma: Temel Bilgiler (Bölüm I). Linux Gazetesi, Sayı 68, Temmuz 2001 ( www.linuxgazette.com). Rusçaya tercümesi: Galina Nikitina, Eylül 2001.

Kaynaklar

Başlamak için en iyi yer, adresinde bulunan RPM Web sitesidir. http://www.rpm.org/. Burada, RPM API'lerini nasıl kullanacağınızı, oluşturacağınızı ve hatta programlayacağınızı öğreten Maximum RPM kitabını bulacaksınız. Bazı temel bilgileri biliyorsanız, RPM yardım sayfası (rpm -h) de oldukça yararlıdır. RPM arşivleri şu adreste bulunabilir: http://www.rpmfind.net/, birden fazla platformda birçok lezzet ve sürüm için geniş bir paket arama veritabanı tutan . Son derece kullanışlı.

RPM (RedHat Paket Yöneticisi) tabanlı sistemler için en popüler paket yönetim aracıdır. Kırmızı şapka, gibi RHEL, CentOS, fötr şapka. Araç, sistem yöneticilerinin ve kullanıcıların işletim sistemlerinde sistem yazılım paketlerini yüklemesine, güncellemesine, kaldırmasına, sorgulamasına, doğrulamasına ve yönetmesine olanak tanır. Unix/Linux. Paketleme yöneticisi devir sistemde kurulu uygulamalarla ilgili bilgileri veritabanında saklar /var/lib/rpm. .rpm dosyalarının kendisi, yazılımın derlenmiş sürümlerini, bunları çalıştırmak için gereken kitaplıkları ve ayrıca paket kaynakları, sürümler ve bağımlılıklar hakkında güncel bilgileri içerir. devir kaynaktan derlenen ve yüklenen yazılımı yönetemez.

Aslında devir birkaç modda çalışır. İstekler ve kontroller:

  • rpm (-q|--sorgu)
  • rpm (-V|--doğrula)
Paketleri yükleme, güncelleme, kaldırma:
  • rpm (-i|--kurulum) PACKAGE_FILE ...
  • rpm (-U|--yükseltme) PACKAGE_FILE ...
  • rpm (-F|--tazele) PACKAGE_FILE ...
  • rpm (-e|--erase) [--allmatches] [--justdb] [--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ...

1. rpm paketinin gpg imzasını kontrol edin

Her zaman kontrol etmeniz önerilir gpg orijinalliğini doğrulamak için yüklemeden önce paketi imzalamak. # rpm --checksig pidgin-2.7.9-5.el6.2.i686.rpm pidgin-2.7.9-5.el6.2.i686.rpm: rsa sha1 (md5) pgp md5 TAMAM

2. rpm paketini kurun

rpm paketini kurmak için anahtarı kullanın -i: # rpm -ivh pidgin-2.7.9-5.el6.2.i686.rpm Hazırlanıyor... ######################## # ################# 1:pidgin ############################### ########### -i: Kurulum paketi -v: hata ayıklama bilgilerini göster -h: kurulumda çıktı karma işaretleri

3. Yüklemeden önce rpm paket bağımlılıklarını kontrol edin

Paket bağımlılıklarının listesini şu şekilde görebilirsiniz: # rpm -qpR htop-2.0.2-2.fc26.aarch64.rpm ld-linux-aarch64.so.1()(64bit) ld-linux-aarch64.so. 1(GLIBC_2. 17)(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.17)(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2. 17)(64bit ) libncursesw.so.6()(64bit) libtinfo.so.6()(64bit) rpmlib(SıkıştırılmışDosyaAdları)<= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1 rtld(GNU_HASH) -q: isteği yürüt -p | --paket: Bilgi isteme -R: sorgu modu seçeneği, paket bağımlılıklarının listesi

4. Rpm, paketleri bağımlılık olmadan kurma

Gerekli tüm bağımlılıkların kurulu olduğundan eminseniz, ancak rpm küfür ediyor ve paketi kurmanıza izin vermiyorsa, bayrağı kullanarak bağımlılıkların kurulumunu yok sayabilirsiniz. --nodeps: # rpm -ivh --nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm Hazırlanıyor... ####################### #################### 1:BitTorrent ######################### # ############### Yukarıdaki komut, hatalara rağmen paketi zorla yükleyecektir rpm. Lütfen, sistemde bağımlılıkların hala eksik olduğu ortaya çıkarsa, kurulu programın çalışmayacağını ve gerekli bağımlılıkları ayrıca kurmanız gerekeceğini unutmayın.

5. Rpm, kurulu paketi kontrol edin

Bir paketin kurulu olup olmadığını kontrol etmek için gerekli paketi sorgulamanız gerekir: paket htop kurulu # rpm -q htop htop-2.0.2-1.el7.x86_64 paketi numara yapmak# rpm -q sahte paket sahte kurulu değil

6. Rpm, kurulu paket dosyalarının listesi

Kurulu paket dosyalarının listesi sorgu ile elde edilebilir. -ql (sorgu listesi): # rpm -ql htop /usr/bin/htop /usr/share/doc/htop-2.0.2 /usr/share/doc/htop-2.0.2/AUTHORS /usr/share/doc/htop-2.0. 2/KOPYALAMA /usr/share/doc/htop-2.0.2/ChangeLog /usr/share/doc/htop-2.0.2/README /usr/share/man/man1/htop.1.gz /usr/share/ pixmaps/htop.png

7. Rpm, en son kurulan paketlerin listesi

# rpm -qa --last htop-2.0.2-1.el7.x86_64 Cts 03 Haz 2017 06:20:07 PM MSK

8. Rpm, kurulu tüm paketleri listeleyin

Sistemde kurulu tüm paketlerin bir listesini almak için sorguyu çalıştırmanız gerekir. -qa ek seçenek yok # rpm -qa Perl-HTML-Parser-3.71-4.el7.x86_64 dracut-network-033-463.el7.x86_64 filesystem-3.2-21.el7.x86_64 ......... ........... paketlerin listesi oldukça büyük olacaktır, sayfalama için aşağıdaki gibi yardımcı programları kullanabilirsiniz. daha fazla veya az: # rpm -qa | daha fazla

9. rpm paketini güncelleyin

herhangi birini güncellemek için rpm paket seçeneği kullanılır -U (Yükselt). Bu seçenek yalnızca herhangi bir paketi en son sürüme güncellemekle kalmaz, aynı zamanda paketin eski sürümünün bir yedek kopyasını oluşturur. Güncellemeden sonra bir şeyler ters giderse ve yazılım çalışmazsa, önceden yüklenmiş ve çalıştığı bilinen bir sürüme dönebilirsiniz. # rpm -Uvh nx-3.5.0-2.el6.centos.i686.rpm Hazırlanıyor... ########################## ################ 1:nx ############################## ###########

10. rpm paketinin çıkarılması

Bir paketi kaldırmak için seçeneği kullanın -e (silmek), daha ayrıntılı hata ayıklama çıktısı için vv seçeneği kullanılır: # rpm -evv nx

11. rpm paketini bağımlılıklar olmadan kaldırın

Parametre --nodeps paketi zorla çıkarın rpm sistemden. Belirli bir paketi kaldırmanın diğer çalışan uygulamaları bozabileceğini unutmayın. # rpm -ev --nodeps htop

12. Rpm, bir pakete ait dosya talep edin

Belirli bir dosyanın hangi pakete ait olduğunu bulmanız gerekiyorsa, seçeneği kullanın. -qf (sorgu dosyası): # rpm -qf /etc/my.cnf mariadb-libs-5.5.52-1.el7.x86_64

13. Rpm, kurulu paket hakkında bilgi alın

Kurulu paket hakkında detaylı bilgi almak için seçeneği kullanın. -qi (sorgu bilgisi): # rpm -qi htop Ad: htop Sürüm: 2.0.2 Sürüm: 1.el7 Mimari: x86_64 Yükleme Tarihi: 4 Haz 2017 Paz 10:20:51 MSK Grup: Uygulamalar/Sistem Boyutu: 212139 Lisans: GPL+ İmza: RSA/SHA256, Paz 24 Temmuz 2016 09:22:13 PM MSK, Key ID 6a2faea2352c64e5 Kaynak RPM: htop-2.0.2-1.el7.src.rpm İnşa Tarihi: 24 Tem 2016 Paz 01:01:34 MSK İnşası Ana Bilgisayar: buildvm-26.phx2.fedoraproject.org Yer Değiştirmeler: (yer değiştirilemez) Paketleyici: Fedora Projesi Satıcı: Fedora Proje URL'si: http://hisham.hm/htop/ Özet: Etkileşimli süreç görüntüleyici Açıklama: htop etkileşimli bir metindir- Linux için mod işlem görüntüleyici, top(1)'e benzer.

14. Rpm, henüz kurulmamış bir paket hakkında bilgi alın

Daha önce indirilmiş ancak henüz kurulmamış bir paket hakkında bilgi almak için talepte bulunabilirsiniz. -qip (sorgu bilgi paketi): rpm -qip ./patch_name.rpm

15. Rpm, belirli bir paket için dokümantasyon dosyalarını görüntüleyin

Rica etmek -qdf (sorgu belge dosyası) tüm paket dokümantasyon dosyalarını listeleyecektir: # rpm -qdf /usr/bin/htop /usr/share/doc/htop-2.0.2/AUTHORS /usr/share/doc/htop-2.0.2/COPYING /usr/share /doc/htop-2.0.2/ChangeLog /usr/share/doc/htop-2.0.2/README /usr/share/man/man1/htop.1.gz

16. Belirli bir rpm paketini kontrol etme

Bir paketi kontrol ederken, paketin kurulu dosyaları hakkındaki bilgiler veritabanı ile karşılaştırılır. rpm. # rpm -Vp sqlbuddy-1.3.3-1.noarch.rpm S.5....T. c /etc/httpd/conf.d/sqlbuddy.conf

17. Tüm rpm paketlerinin kontrol edilmesi

# rpm -Va S.5....T. c /etc/rc.d/rc.local .......T. c /etc/dnsmasq.conf .......T. /etc/ld.so.conf.d/kernel-2.6.32-279.5.2.el6.i686.conf

18. GPG anahtarını içe aktarın

Paketleri kontrol etmek için RHEL/CentOS/Fedora, içe aktarmanız gerekiyor GPG anahtar. Bunu yapmak için şu komutu çalıştırın: # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

19. Rpm, içe aktarılan tüm anahtarları görüntüleyin

# rpm -qa gpg-pubkey* gpg-pubkey-7bd9bf62-5762b5f8 gpg-pubkey-352c64e5-52ae6884 gpg-pubkey-f4a80eb5-53a7ff4b gpg-pubkey-810f8996-552b1d92

20. Bozuk rpm veritabanını yeniden oluşturun

Bazen rpm veritabanı bozularak rpm'nin düzgün çalışmasını engelleyebilir. Bu olursa, veritabanını yeniden oluşturmanız gerekir. rpm: # cd /var/lib/rpm # rm -f __db.* # rpm --rebuilddb Her zamanki gibi: # man rpm İyi şanslar