SRPM nasıl paketlenir, değiştirilir, yeniden oluşturulur ve yüklenir


9

Bir Fedora 15 paketini ( gnome-shell-extensions-alternative-status-menu) değiştirmek istiyorum . Bu küçük bir değişikliktir ( bu taahhüdü geri almak ). Kullanarak yumdownloaderSRPM ( gnome-shell-extensions-3.0.2-1.g63dd27cgit.fc15.src.rpm) indirebiliyorum .

Bundan sonra, onu nasıl açarım ve sonra yeniden inşa ederim?


Son düzenlemenizi @ mdpc'nin cevabı hakkında yorum yapacak şekilde değiştirmeli veya sorunu çözmenize yardımcı olacak adımlarla kendi yanıtınızı eklemelisiniz. Cevap verilerini lütfen sorunun kendisinden uzak tutun.
Caleb

@Caleb Bitti! (3 daha gitmek için ...)
Vitor Py

Yanıtlar:


7

ROOT kullanıcısı olarak ne yapıyorum:

  1. SRPM'yi diğer paketler gibi yükleyin ( rpm --install [source-rpm-filename])

  2. /root/rpmbuild/SPECSDizini inceleyin ve paketinizle eşleşen özellik dosyasını bulun

  3. rpmbuild -bb /root/rpmbuild/SPECS/[found-filename]

Elde edilen ikili paketler daha sonra /root/rpmbuild/RPMS/standart rpm --installkomutla kurulmaya hazır olan dizinde bulunur .

Not: Bu sadece standart ikili paket içinde ne oluşturur. Bunu, kaynakta değişiklik yapma ve yeni paketler oluşturma konusunda değil, belirli soruyu cevaplayarak gönderiyorum.

Değişiklikleri yapmak için ya ya girdi olarak ya da SPECS dosyasını değiştirerek .... yamaları sağlayabilir ya da kendinizle birlikte *.tar.bz2bulunan standardı /root/rpmbuild/SOURCESdeğişiklikle değiştirebilir ve sonra derlemeyi yukarıda açıklandığı gibi yapabilirsiniz.

Çalıştırmak için SPECS paketini değiştirmeniz gerekebilir (genellikle yamayı çıkararak ve SPECS dosyası tarafından programlanan bazı dosya adlarını değiştirerek).


DÜZENLE

Kök kötü bir uygulama ( kaynak ) olduğu için rpms oluşturmak gibi görünüyor . Kök olmayan bir kullanıcı olarak iyi çalışır.

Yama eklemek için adım adım talimatlar ( buradan ):

  1. Düzeltme ekinizi kopyalayın rpmbuild/SOURCES.
  2. Düzen rpmbuild/SPECS/package.specve eklemek Patch0: mypatch.patchsonra hakkını Source0: ...hattı.
  3. Sonra %setup ...hat bir ekleme %patch0 -p1hattı

Şimdi normal inşa edecek, yani. ile:rpmbuild -ba SPECS/package.spec


2
Rpmbuild değil, yalnızca yüklemenin root olarak yapıldığını açıklığa kavuşturmalısınız. RPM dosyaları oluşturmak asla root olarak yapılmamalıdır.
Caleb

@Caleb Paketleri root olmayan olarak kurdum. rpm bunu ~ / rpmbuild hiyerarşisine yerleştirir. Ayrıca soruda önerdiğin gibi yaptım ve ekstra adımları buraya koydum.
Vitor Py

Sadece birkaç not: sudo dnf install rpmdevtoolsrpmbuild komutu için gereklidir. Ve %patch0 -p1spec dosyası bir %autosetupsatır yerine bir satır kullanıyorsa satır atlanmalıdır %setup( %autosetupdüzeltme eki otomatik olarak uygulanır).
Nelson

Ayrıca, yeni rpm'yi orijinal olanın üzerine kurmak için (orijinalin sisteme önceden takılmış olması durumunda)sudo rpm -ivh --force your.rpm
Nelson

4

OpenSSL Paket Yeniden Oluşturma CentOS 6.4 , SRPM paket yeniden yapılandırmasının ayrıntılı bir örneğidir.

Yukarıdaki örnekte Mock - paket üreticilerinin Jedi Light Saber'ı kullanılmıştır.

Sahte, bir krootu güvenilir bir şekilde doldurmak ve daha sonra bu krootta bir paket oluşturmak için oluşturuldu.

Daha fazla bilgi için bkz. Http://fedoraproject.org/wiki/Projects/Mock

Örnekte mock 3 kez kullanılır - bir kez paketi "açmak", daha sonra .src.rpm'yi yeniden oluşturmak ve son olarak .rpm'yi oluşturmak için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.