RedHat: czy możliwe jest instalowanie pakietów w rodzaju próbnego środowiska do tworzenia RPM

10

Czy istnieje narzędzie, które pozwala zainstalować zależności .spec RPM w izolowanym środowisku? Nie będę instalować takich zależności globalnie w systemie i nie jestem w stanie tego zrobić, ponieważ nie mam uprawnień rootowania.

Powód

Chcę zbudować pakiet A, który zależy od nowszej wersji B (której nie można zainstalować globalnie w systemie).

Chciałbym zbudować nowszej wersji B i niech narzędzie build zainstalować B „s -develgo w izolowanym środowisku, aby zapewnić wszystkie niezbędne pliki do kompilacji A .

Rozwiązania

  • Czy są na to jakieś narzędzia?
  • Jeśli nie, o co powinienem dbać, próbując to zrobić z powiedzmy chroot?
  • Czy to byłaby zła praktyka?
spróbuj złapać w końcu
źródło

Odpowiedzi:

8

Tak, narzędzie nazywa się mocki jest w EPEL.

Typowe zastosowanie:

rpmbuild -bs mypackage.spec
mock -r epel-6-x86_64 mypackage-0.1-1.src.rpm

Jest to w rzeczywistości preferowany sposób budowania RPM, właśnie dlatego, że izoluje proces od systemu, aby nie wciągnąć nieoczekiwanych zależności.

Możesz zmodyfikować pliki, /etc/mockaby pobierały własne pakiety, prywatne repozytorium itp., Lub sprawdź w dokumentach informacje na temat mockręcznego dodawania pakietów do środowiska chroot.

Pamiętaj, że należy dodać użytkowników do mockgrupy, aby mogli z nich korzystać mock.

Nieprzypadkowo kojiserwer kompilacji, z którego korzysta Red Hat, mockbuduje każdy indywidualny pakiet. Jeśli musisz budować wiele pakietów przez cały czas, warto rozważyć konfigurację kojiserwera kompilacji.

Michael Hampton
źródło
Dzięki Michael. Brzmi bardzo dobrze i cieszę się, że moje pytanie nie było tak głupie, jak myślałem. ;)
spróbuj złapać w końcu
3

Myślę, że próba zbudowania pakietów na hostach produkcyjnych to zła praktyka, a próba zrobienia tego bez uprawnień roota jest bardziej skomplikowana niż uruchomienie własnych maszyn do budowania. To, co zwykle robię, to:

  1. Zainstaluj VirtualBox lub podobne narzędzie na swoim komputerze stacjonarnym / laptopie
  2. Utwórz 32/64 maszyn wirtualnych systemu operacyjnego używanego w produkcji
  3. Zainstaluj zwykle narzędzia próbne, rpmbuild itp
  4. Utwórz RPM dla pakietu i wszelkie dodatkowe operacje dla obu łuków na swoich maszynach wirtualnych
  5. Po przetestowaniu wepchnij RPM do wewnętrznej repozytorium w celu dystrybucji na twoje serwery
  6. Przetestuj ponownie, aby upewnić się, że pobierane są odpowiednie zależności
  7. Zwolnij poprzez zarządzanie konfiguracją.
Ramin
źródło
To zadziała. Jak to jest lepsze niż używanie makiety? Sądzę, że kpina byłaby łatwiejsza, ale podejrzewam, że tak czy owak dzieje się prawie to samo.
emory
Nie mam problemu z próbą i uważam, że prawie wszystkie dokumenty „jak zrobić rpm” mają to zainstalowane. Jednak bez dostępu do konta root nie jestem pewien, w jaki sposób OP zamierza dodać swoje konto do grupy próbnej, zainstalować próbną wersję i tak dalej. Posiadanie maszyn wirtualnych o czystej kompilacji pomaga uniknąć przypadkowego dodawania dziwnych zależności do pakietów.
Ramin
Doskonały punkt Nie wziąłem tego pod uwagę. Mając to na uwadze, myślę, że to poprawna odpowiedź.
emory
@emory na podstawie opinii Wyjaśniłem, dlaczego myślę, że kompilacje maszyn wirtualnych są ogólnie lepszym rozwiązaniem, które moim zdaniem stanowi lepszą odpowiedź. Dzięki, że mnie szturchnąłeś. :-)
Ramin
@Ramin w mojej sytuacji (w pracy) Jestem tylko użytkownikiem . System jest dedykowanym systemem kompilacji i dobrze, jeśli wszyscy programiści na tym hoście mieliby uprawnienia root'a, to okno nie uruchomiłoby się po 1 tygodniu. ;) Tak więc użycie narzędzia takiego jak Mock jest dokładnie właściwym rozwiązaniem! Konfigurowanie maszyn wirtualnych jest również dobrym pomysłem, jeśli można je zautomatyzować. Myślę, że Vagrant (jeszcze go nie testowałem) jest właściwym narzędziem do tego.
try-catch-wreszcie