rpm 자동 설치 종속성을 만드는 방법


138

두 개의 RPM 패키지를 만들었습니다

  • proj1-1.0-1.x86_64.rpm
  • libtest1-1.0-1.x86_64.rpm

proj1libtest1.so존재 하는 파일 에 따라 다음 과 같이 RPM 패키지에 올바르게 반영됩니다.

user@my-pc:~$ rpm -qp --requires proj1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

user@my-pc:~$ rpm -qp --provides libtest1-1.0-1.x86_64.rpm
libtest1.so()(64bit)

proj1누락 된 종속성으로 인해 설치에 실패했습니다.

user@my-pc:~$ rpm -ivh proj1-1.0-1.x86_64.rpm
error: Failed dependencies:
libtest1.so()(64bit) is needed by proj1-1.0-1.x86_64.rpm

libtest1-1.0-1.x86_64.rpm설치 중에 자동으로 설치 되도록하려면 어떻게해야 proj1-1.0-1.x86_64.rpm합니까?

여기에 설명 된대로 --aid옵션을 사용해 보았지만 효과가 없었습니다.rpm -i

다른 방법이 있습니까?

도움을 주셔서 감사합니다.

답변:


102

(로컬) 저장소를 작성 yum하고 종속성을 해결하는 데 사용 하십시오.

CentOS 위키에는 이에 대한 사용법을 제공하는 멋진 페이지가 있습니다. CentOS 위키 HowTos / CreateLocalRepos .


요약 및 추가 최소화 (이상적이지는 않지만 가장 빠름) :

  1. 로컬 저장소를위한 디렉토리를 작성하십시오 (예 :) /home/user/repo.
  2. RPM을 해당 디렉토리로 이동하십시오.
  3. 일부 소유권 및 파일 시스템 권한을 수정하십시오.

    # chown -R root.root /home/user/repo
    
  4. 설치 createrepo아직 설치되지 않은 경우 패키지를, 및 실행

    # createrepo /home/user/repo
    # chmod -R o-w+r /home/user/repo
    
  5. 예를 들면 저장소 구성 파일을 작성 /etc/yum.repos.d/myrepo.repo포함을

    [local]
    name=My Awesome Repo
    baseurl=file:///home/user/repo
    enabled=1
    gpgcheck=0
    
  6. 다음을 사용하여 패키지를 설치하십시오.

    # yum install packagename
    

46
제공 한 링크는 다음 한 줄로 내 경우를 해결했습니다 yum --nogpgcheck localinstall packagename.arch.rpm.
Matthew

@Matthew Cool은 전체 로컬 리포지토리 단계를 제거합니다. 대답으로 말하십시오.
gertvdijk

나처럼 AIX에서 YUM 설치를 자동화하기 위해 RPM을 스크립팅하려는 경우 이것은 잘 작동하지 않습니다. ;-)
Tricky

1
@ Max13, yum localinstall그것은 이미 여기게시 된 답변 과 동일하며 종속성이 yum repos에 있지 않은 상황에 대해서는 이미 논의 된 단점이 있습니다 ( [...] 부분이 아니면이 방법은 작동하지 않습니다 ).
gertvdijk

인터넷에 연결되어 있지 않으면 다른 리포지토리를 보지 sudo yum --disablerepo=* --enablerepo=local install packagename.arch.rpm않도록 yum이 연결도 알아보십시오.
Anshuman Goel

194

@gertvdijk가 제공하는 링크는 로컬 리포지토리를 구성하지 않고 원하는 결과를 얻을 수있는 빠른 방법을 보여줍니다.

$ yum --nogpgcheck localinstall packagename.arch.rpm

packagename.arch.rpm설치하려는 RPM 파일 이름으로 변경 하십시오.

편집 간단히 설명하면 시스템 YUM 리포지토리를 통해 이미 사용 가능한 모든 종속성이 자동으로 설치됩니다.

시스템 리포지토리에없는 다른 RPM에 의해 종속성이 충족 packagename.arch.rpm되면 명령 줄에서 각 RPM을 지정하지 않으면이 방법이 작동하지 않습니다 .


7
아니요, libtest1-1.0-1.x86_64.rpm다른 곳에 리포지토리에 있거나 두 패키지 모두 " rpm -i"필요 에 따라 명령 줄에 지정되어 있지 않으면 작동하지 않습니다 . 방금 이것을 yum3.4.3 (Fedora 18) 에서 확인했습니다 . 성적 증명서는 여기 가가는 것을 보여주는 updates파일이 바로 거기 경우에도, 의존성에 대한 REPO.
Aaron D. Marasco

3
@ AaronD.Marasco 아마 당신은 질문에 설명 된 특정 사건에 대해 정확 할 수도 있지만,이 한 줄짜리 사람은 내가했던 것처럼 여기에서 와인딩하는 사람에게는 훨씬 쉬우 며 제목의 질문에 대한 완전한 대답입니다. rpm 자동 설치 종속성 만들기 "를 참조하십시오.
Matthew

3
아니요, 종속성을 "자동 설치"하는 것이 아닙니다. ""에서와 같은 방식으로 명령 줄에서 지정 rpm -i하므로 사용 yum하면 추가 이점이 없습니다.
Aaron D. Marasco

2
내가 쓴 것을 다시 읽으십시오. 설치 한 RPM이있는 디렉토리에서 로컬로 사용 가능하더라도 저장소에서 모든 종속성이 다운로드되었습니다.
Aaron D. Marasco

1
@ AaronD.Marasco 다른 게시 된 솔루션이 OP가 요구하는 특정 예제에 더 적합하다는 것에 대해서는 논쟁하지 않습니다. 그러나 내 대답은 제목의 질문에 대답하는 데 정확 하며 로컬 리포지토리를 구성하는 것보다 훨씬 빠르며, 여기처럼 바람을 피우는 사람들이 yum이 자동으로 의존성을 설치하는 빠른 방법을 원하는 사람들을 도울 것입니다. rpm이 필요합니다. 이것이 스택 오버플로의 목적으로 커뮤니티가 OP를 돕는 것이 아니라 답변을 검색하는 데 도움이됩니다.
Matthew

28

dnf 사용자는을 사용 dnf install *.rpm하면 localinstall더 이상 필요하지 않습니다.


1
정확히 이것을 말하기 위해 여기에왔다
nawfel bgh

1
덕분에, 내가 설치하는 고투 mysql-workbench와 함께 rpm -ivh. 결국이 게시물로 끝났습니다. DNF가 트릭을 수행했습니다.
BlueBird

21

나와 함께 일한

# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm

그리고 depedencies를 다운로드 할 수있는 권한을 자동으로 요청했습니다. 아래 예에서 나는 fedora 22를 사용하고 있습니다.

[root@localhost lukas]# yum install ffmpeg-2.6.4-1.fc22.x86_64.rpm
Yum command has been deprecated, redirecting to '/usr/bin/dnf install  ffmpeg-2.6.4-1.fc22.x86_64.rpm'.
See 'man dnf' and 'man yum2dnf' for more information.
To transfer transaction metadata from yum to DNF, run:
'dnf install python-dnf-plugins-extras-migrate && dnf-2 migrate'

Last metadata expiration check performed 0:28:24 ago on Fri Sep 25 12:43:44 2015.
Dependencies resolved.
====================================================================================================================
 Package               Arch           Version                                  Repository                      Size
====================================================================================================================
Installing:
 SDL                   x86_64         1.2.15-17.fc22                           fedora                         214 k
 ffmpeg                x86_64         2.6.4-1.fc22                             @commandline                   1.5 M
 ffmpeg-libs           x86_64         2.6.4-1.fc22                             rpmfusion-free-updates         5.0 M
 fribidi               x86_64         0.19.6-3.fc22                            fedora                          69 k
 lame-libs             x86_64         3.99.5-5.fc22                            rpmfusion-free                 345 k
 libass                x86_64         0.12.1-1.fc22                            updates                         85 k
 libavdevice           x86_64         2.6.4-1.fc22                             rpmfusion-free-updates          75 k
 libdc1394             x86_64         2.2.2-3.fc22                             fedora                         124 k
 libva                 x86_64         1.5.1-1.fc22                             fedora                          79 k
 openal-soft           x86_64         1.16.0-5.fc22                            fedora                         292 k
 opencv-core           x86_64         2.4.11-5.fc22                            updates                        1.9 M
 openjpeg-libs         x86_64         1.5.1-14.fc22                            fedora                          89 k
 schroedinger          x86_64         1.0.11-7.fc22                            fedora                         315 k
 soxr                  x86_64         0.1.2-1.fc22                             updates                         83 k
 x264-libs             x86_64         0.142-12.20141221git6a301b6.fc22         rpmfusion-free                 587 k
 x265-libs             x86_64         1.6-1.fc22                               rpmfusion-free                 486 k
 xvidcore              x86_64         1.3.2-6.fc22                             rpmfusion-free                 264 k

Transaction Summary
====================================================================================================================
Install  17 Packages

Total size: 11 M
Total download size: 9.9 M
Installed size: 35 M
Is this ok [y/N]: y

내가 생각하는 가장 쉬운 방법
Shams

직접적인 rpm 솔루션은 아니지만 이것이 가장 좋습니다.
TFuto

RPM 솔루션은 아니지만 하나의 명령으로 종속성을 설치하는 가장 쉬운 방법입니다. 이것은 나를 위해 완벽하게 작동했습니다
Enrique Benitez

9

더 간단한 해결책을 찾았습니다. 동일한 디렉토리에 모든 RPM이있는 경우,

$ sudo rpm -i *.rpm

rpm 올바른 설치 순서를 파악하고 RPM을 설치하는 것 같습니다.


5
종속성이 현재 디렉토리에없는 경우 여전히 처리하지 않습니다.
Ding-Yi Chen

4

마태의 대답은 여전히 ​​사소한 세부 사항이 없기 때문에 많은 감정을 일으켰습니다. 일반적인 명령은 다음과 같습니다.

# yum --nogpgcheck localinstall <package1_file_name> ... <packageN_file_name>

package_file_name위 의 내용에는 로컬 절대 또는 상대 경로가 포함되거나 URL (아마도 URI) 일 수 있습니다.

Yum은 명령 줄에 제공된 모든 패키지 파일 간의 종속성을 검색하고 IT 실패시 종속성을 찾는 경우 구성 및 활성화 된 yum 리포지토리도 사용합니다.

package_file_name이 디렉토리 중 하나가 이전에 사용 가능한 yum저장소 로 구성된 경우를 제외하고 현재 작업 디렉토리 나 경로는 검색 되지 않습니다 .

따라서 OP의 경우 yum명령은 다음과 같습니다.

# cd <path with pkg files>; yum --nogpgcheck localinstall ./proj1-1.0-1.x86_64.rpm ./libtest1-1.0-1.x86_64.rpm

할 것입니다 rpm:

# cd <path with pkg files>; rpm -i proj1-1.0-1.x86_64.rpm libtest1-1.0-1.x86_64.rpm

설치와 나열된 패키지 중 하나가 명령 행에 나열되지 않은 패키지에 추가 종속성이있는 경우에만 이러한 호출 yumrpm호출 의 차이점을 볼 수 있습니다.

이러한 경우에 rpm불과하지만, 계속 거부합니다 yum종속성을 검색 할 수있는 구성 및 활성화 냠 저장소를 사용하는 것, 그리고 아마도 성공할 수 있습니다.

현재 작업 디렉토리는 이전에 사용 가능한 yum저장소 로 구성된 경우를 제외하고는 검색되지 않습니다 .


0

나는 이것을 만났고 나를 위해 일한 yum localinstall enterPkgNameHere.rpm것은 .rpm 파일이있는 디렉토리 내부에서 실행하는 것이 었습니다 .

참고 :를 enterPkgNameHere.rpm.rpm 파일 이름으로 바꾸십시오 .


0

openSUSE Leap 15의 경우 비슷한 오류가 발생합니다.

> sudo rpm -i opera-stable_53.0.2907.68_amd64.rpm 
[sudo] password for root: 
warning: opera-stable_53.0.2907.68_amd64.rpm: Header V4 RSA/SHA512 Signature, key ID a5c7ff72: NOKEY
error: Failed dependencies:
    at is needed by opera-stable-53.0.2907.68-0.x86_64

이 명령을 실행하여 종속성이 무엇인지 파악합니다.

> sudo zypper install opera-stable_53.0.2907.68_amd64.rpm 
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 4 NEW packages are going to be installed:
  at libfl2 libHX28 opera-stable

4 new packages to install.
Overall download size: 50.3 MiB. Already cached: 0 B. After the operation, additional 176.9 MiB will be used.
Continue? [y/n/...? shows all options] (y): n

그런 다음이 명령을 실행하여 종속성을 설치하십시오.

> sudo zypper in at
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 3 NEW packages are going to be installed:
  at libfl2 libHX28

3 new packages to install.
Overall download size: 208.6 KiB. Already cached: 0 B. After the operation, additional 600.4 KiB will be used.
Continue? [y/n/...? shows all options] (y): y

그런 다음 rpm파일 을 설치하기 위해 이것을 실행 합니다.

> sudo rpm -i opera-stable_53.0.2907.68_amd64.rpm

하지 그것을 내 문제를 해결하지만, 가장 좋은 방법 인 경우 확인합니다.


0

1 단계 : 주어진 위치에서 모든 rpm pkg 복사

2 단계 : createrepo가 ​​아직 설치되지 않은 경우 기본적으로 설치되지 않으므로 설치하십시오.

[root@pavangildamysql1 8.0.11_rhel7]# yum install createrepo

3 단계 : 저장소 메타 데타 생성 및 아래 권한 부여

[root@pavangildamysql1 8.0.11_rhel7]# chown -R root.root /scratch/PVN/8.0.11_rhel7
[root@pavangildamysql1 8.0.11_rhel7]# createrepo /scratch/PVN/8.0.11_rhel7
Spawning worker 0 with 3 pkgs
Spawning worker 1 with 3 pkgs
Spawning worker 2 with 3 pkgs
Spawning worker 3 with 2 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@pavangildamysql1 8.0.11_rhel7]# chmod -R o-w+r /scratch/PVN/8.0.11_rhel7

4 단계 : /etc/yum.repos.d/mysql.repo에 다음 내용으로 리포지토리 파일 생성

[local]
name=My Awesome Repo
baseurl=file:///scratch/PVN/8.0.11_rhel7
enabled=1
gpgcheck=0

Step5이 명령을 실행하여 설치

[root@pavangildamysql1 local]# yum --nogpgcheck localinstall mysql-commercial-server-8.0.11-1.1.el7.x86_64.rpm

-2

간단하게 다음 명령을 실행하십시오.

sudo dnf install *package.rpm

비밀번호를 입력하면 완료됩니다.


-5

소스 파일에서 RPM을 생성하는 과정 : 1) .gz 확장자로 소스 파일을 다운로드하십시오. 2) yum install에서 rpm-build 및 rpmdevtools를 설치하십시오. (rpmbuild 폴더가 생성됩니다 ... SPECS, SOURCES, RPMS .. 폴더는 rpmbuild 폴더 안에 생성되어야합니다). 3) 소스 code.gz를 SOURCES 폴더에 복사하십시오. (rpmbuild / SOURCES) 4) 다음 명령을 사용하여 타르볼을 푸십시오. tar 파일이있는 SOURCES 폴더 : rpmbuild / SOURCES로 이동하십시오. 예 : tar -xvzf httpd-2.22.tar.gz httpd-2.22 폴더는 동일한 경로에 생성됩니다. apr 및 apr-util 및 httpd-2.22 / srclib 폴더에 있는지 확인하십시오. apr 및 apr-util이 없으면 아파치 사이트에서 최신 버전을 다운로드하여 httpd-2.22 / srclib 폴더에 넣습니다. 또한 시스템에 pcre가 설치되어 있는지 확인하십시오.

5) 압축을 푼 폴더로 이동 한 후 아래 명령을 입력하십시오. ./configure --prefix = / usr / local / apache2 --with-included-apr --enable-proxy --enable-proxy-balancer --with-mpm = worker --enable-mods-static = all 6) 구성이 성공적으로 완료되면 아래 명령을 실행하십시오 : make 7) 성공적으로 실행 한 후 od make 명령을 실행하십시오 : 동일한 폴더에서 install을 확인하십시오. (checkinstall 소프트웨어가없는 경우 사이트에서 최신 버전을 다운로드하십시오.) 또한 checkinstall 소프트웨어에 다음과 같은 방법으로 해결할 수있는 버그가 있습니다. ::::: checkinstallrc를 찾은 다음 vim 명령을 사용하여 TRANSLATE = 1을 TRANSLATE = 0으로 바꿉니다. 또한 패키지 제외를 확인하십시오 : EXCLUDE = "/ selinux"8) checkinstall은 옵션을 요청합니다 (원본 파일에 대해 tp 빌드 rpm을 원하면 R을 입력하십시오) 9) .rpm 파일은 rpmbuild / RPMS 파일의 RPMS 폴더에 작성됩니다. .. 모든 최고 ....

감사합니다, Prerana


누구든지 건축에 관해 어디에서 물었습니까? 이것은 이미 구축 된 RPM의 의존성을 해결하는 것입니다.
Craig Jackson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.