Jak pobrać pakiet RPM i zainstalować go w jednym wierszu?

18

Zastanawiałem się, czy wgetmożna było pobrać RPM, a następnie przepuścić przez sudo rpm -iinstalację, w jednej linii? Zdaję sobie sprawę, że mogę po prostu biegać:

wget -c <URL>
sudo rpm -i <PACKAGE-NAME>.rpm

aby zainstalować pakiet, ale zastanawiałem się, czy można to zrobić w jednym wierszu, używając opcji quiet i zapisując na standardowe opcje wyjściowe wget. Próbowałem użyć:

wget -cqO- <URL> | sudo rpm -i

ale zwróciło:

rpm: no packages given for install
BH2017
źródło
Próbowałeś sudo rpm -i <URL>?
Mikel
Próbowałeś, wget -cqO- <URL> | xargs sudo rpm -ia może sudo rpm -i $(wget -cqO- <URL>)? Jaki popełniają błąd?
Firelord,
1
@Pan ognia. Pierwsze polecenie: po prostu spróbowałem i dał pokazany tutaj błąd . Drugie polecenie: podało błąd rpm: no packages given for install.
BH2017,

Odpowiedzi:

29

RPM ma natywną obsługę pobierania pakietu z adresu URL. Możesz to zrobić:

sudo rpm -i <URL>

Nie ma potrzeby ręcznego pobierania RPM. Jeśli to wsparcie nie istniało, możesz użyć bashpodstawienia procesu.

sudo bash -c 'rpm -i <(wget -O - <URL>)'
Jordan
źródło
7
Lepiej jest użyć yum install -y <URL>, ponieważ spowoduje to również zainstalowanie wszelkich zależności.
Cristi
1
Cóż, gdybym używał dystrybucji, która używa yum jako menedżera pakietów, zrobiłby to, ale pamiętaj, że pakiety RPM są również używane przez dystrybucje, które używają APT-RPM, DNF, urpmi i menedżerów pakietów ZYpp. Okazało się, że używałem openSUSE Tumbleweed, który używa ZYpp.
BH2017,
13

Lepiej to zrobić, yum install -y <URL>ponieważ to samo zajmuje się zależnościami, w przeciwieństwie do bezpośredniego rpmużycia narzędzia.

sorin
źródło
Jak powiedziałem w komentarzach do odpowiedzi jordanma, że ​​używałem openSUSE Tumbleweed, yum nie jest dostępne na Tumbleweed.
BH2017,
1

Myślę, że jednym z możliwych sposobów może być zdefiniowanie nazwy pliku, który pobierasz:

wget -cqO- <URL> -O my-output-file.rpm && sudo rpm -i my-output-file.rpm

Ale z pewnością muszą istnieć lepsze podejścia

lese
źródło
Nie zaakceptuję tej odpowiedzi, ponieważ (jak powiedziałeś) Mam nadzieję na lepsze podejście, ale wiesz, że to dobra próba, więc dziękuję.
BH2017,