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

두 개의 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

다른 방법이 있습니까?

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



답변

(로컬) 저장소를 작성 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
    

답변

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

$ yum --nogpgcheck localinstall packagename.arch.rpm

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

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

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


답변

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


답변

나와 함께 일한

# 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


답변

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

$ sudo rpm -i *.rpm

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


답변

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

# 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저장소 로 구성된 경우를 제외하고는 검색되지 않습니다 .


답변

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

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