ซอฟต์แวร์ที่ติดตั้งจากแหล่งที่มาวิธีการพูดว่า yum ไม่ให้ติดตั้งจากแพคเกจ?


14

บน CentOS 7 ฉันได้ติดตั้งfoobarเวอร์ชัน 2 ซึ่งรวบรวมจากแหล่งข้อมูล

ฉันจะทำให้ yum ตระหนักถึงการติดตั้งนั้นได้อย่างไรเพื่อที่จะไม่ติดตั้งfoobarเวอร์ชัน 1 สำหรับการพึ่งพา


การติดตั้งfoobar

$ git clone https://example.com/foobar.git
[...]
$ cd foobar
$ make && sudo make install
[...]
$ foobar --version
foobar v2

การติดตั้งแพคเกจที่ต้องการfoobar

$ sudo yum install baz
[...]
---> Package baz.x86_64 0:3.14.15-9 will be installed
--> Processing Dependency: foobar >= 1 for package: baz-3.14.15-9.x86_64
[...]
Dependencies Resolved

==============================================================
 Package           Arch      Version      Repository   Size
==============================================================
Installing:                  
 baz               x86_64    3.14.15-9    example      1.1 M
Installing for dependencies: 
 foobar            x86_64    1.0.0-0.el7  example      4.5 M

ฉันต้องการที่จะรู้ว่า yum foobar 2 มีการติดตั้งและตั้งแต่bazต้องfoobar >= 1หรือเพียงfoobar, foobar-1.0.0-0.el7.x86_64.rpm ไม่ควรจะติดตั้ง


คำตอบ:


27

"ฉันติดตั้ง foobar เวอร์ชั่น 2 รวบรวมจากแหล่งข้อมูล"

ใช้ความพยายามเพิ่มเมื่อมีการเพิ่มซอฟต์แวร์ที่กำหนดเองกับระบบของคุณและแพคเกจเพิ่มเติมในรอบต่อนาที ดูMartin Streicher, 2010-01-12, การสร้างและแจกจ่ายแพ็คเกจ IBMเกี่ยวกับวิธีการทำเช่นนั้น

จากนั้นติดตั้งที่ทำให้ RPM นั้นสามารถทำได้และจะเล่นได้ดีกับการจัดการความขัดแย้งและการพึ่งพาของผู้จัดการแพคเกจอัพเกรดดาวน์เกรดและขั้นตอนการกำจัดและการรายงานความปลอดภัย


10

ตัวเลือกอื่น (แม้ว่าไม่ใช่คำตอบที่ดีที่สุด): ทำไฟล์ rummy รอบต่อนาทีด้วยชื่อที่เป็นปัญหา

คุณจะต้องrpmbuildติดตั้งและลูกดัมบอล

mkdir ~/rpmbuild/{RPMS,SOURCES}
touch empty.txt
tar -zcf ~/rpmbuild/SOURCES/example.tar.gz empty.txt

เขียนไฟล์ spec หุ่น อันนี้ใช้ได้กับฉันใน Fedora 29 มันควรจะดีกับ CentOS 7 เช่นกัน

Name:           example
Version:        0.0.0
Release:        1%{?dist}
Summary:        Dummy package

Group:          Dummy
License:        CC-BY-SA 3.0
URL:            http://example.com
Source0:    example.tar.gz
BuildArch:  noarch

#BuildRequires:
#Requires:

%description
Dummy for example

%prep
:

%build
:

%install
:

%files
%doc

%changelog

ปรับแต่งชื่อแพคเกจและหมายเลขรุ่นตามความจำเป็นแล้วสร้างแพ็คเกจ

rpmbuild -ba example.spec

ไฟล์เอาต์พุต "binary" rpm จะเป็น ~/rpmbuild/RPMS/noarch/example-0.0.0-1.fc29.x86_64.rpm


6

นี่ไม่ใช่วิธีการrpmทำงาน

rpmใช้ db ที่จะเก็บ rpms ที่ติดตั้งบนระบบ หากคุณติดตั้งบางไฟล์ด้วยตนเองrpmไม่ทราบเกี่ยวกับมัน

วิธีที่ดีที่สุดในการแก้ปัญหานี้คือการติดตั้ง foobar 2 ด้วยรอบต่อนาที การแก้ปัญหาอื่น ๆ จะเป็นวิธีแก้ปัญหาเท่านั้นและจะไม่ทำงานในระยะยาว


5
คุณไม่สามารถแทนที่การตรวจสอบการพึ่งพาได้ด้วยตนเองใช่ไหม เพราะมันอ่านเหมือนว่ามันคือสิ่งที่มันต้องการสิ่งที่ OP ต้องการ
เสา

ใช่คุณสามารถ แต่แล้วคุณแทนที่การตรวจสอบการพึ่งพาทั้งหมด ... และคุณจะมีปัญหาในการอัปเดตในภายหลัง
Chris Maes

3

อาจrpm --nodepsเป็นคำตอบที่คุณกำลังมองหาใช่ไหม มันถูกกล่าวถึงในเธรดที่เก่ากว่าที่นี่ใน Serverfault

( บอกยำให้เพิกเฉยต่อการพึ่งพิงเดี่ยว )


5
สิ่งนี้อาจนำไปสู่ปัญหาที่เกิดขึ้นตามถนนและโดยทั่วไปเพียงแค่เลื่อนปัญหา เมื่ออัปเดตระบบหรือติดตั้งแพคเกจอื่นในภายหลังมันอาจเกิดขึ้นได้ว่าบางแพคเกจจะต้องการดึง foobar 1 เป็นการพึ่งพาอาจเขียนทับ foobar 2 ที่สร้างขึ้นด้วยตนเองและก่อให้เกิดปัญหาความเข้ากันได้
Jiri Valenta
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.