tagger tag mp3tag mac kid3 editar easytag linux installation package rpm yum

linux - tag - Cómo hacer que las dependencias de autodepuración de rpm



mp3tag ubuntu (9)

He construido dos paquetes de RPM

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

proj1 depende del archivo libtest1.so está presente y se refleja correctamente en los paquetes RPM como se ve aquí:

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)

La instalación de proj1 falla debido a una dependencia faltante.

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

¿Cómo me libtest1-1.0-1.x86_64.rpm que libtest1-1.0-1.x86_64.rpm se instala automáticamente durante la instalación de proj1-1.0-1.x86_64.rpm ?

--aid opción --aid con rpm -i como se describe here pero no funcionó para mí.

¿Hay alguna otra manera?

Gracias por cualquier ayuda.


Cree un repositorio (local) y use yum para que resuelva las dependencias por usted.

El wiki de CentOS tiene una buena página que brinda un tutorial sobre esto. CentOS wiki HowTos / CreateLocalRepos .

Resumido y minimizado aún más (no ideal, pero más rápido):

  1. Cree un directorio para su repositorio local, ej. /home/user/repo .
  2. Mueva los RPM en ese directorio.
  3. Repara algunos permisos de propiedad y del sistema de archivos:

    # chown -R root.root /home/user/repo

  4. Instala el paquete createrepo si aún no está instalado y ejecuta

    # createrepo /home/user/repo # chmod -R o-w+r /home/user/repo

  5. Cree un archivo de configuración de repositorio, por ejemplo, /etc/yum.repos.d/myrepo.repo contenga

    [local] name=My Awesome Repo baseurl=file:///home/user/repo enabled=1 gpgcheck=0

  6. Instala tu paquete usando

    # yum install packagename


El enlace @gertvdijk proporcionado muestra una forma rápida de lograr los resultados deseados sin configurar un repositorio local:

$ yum --nogpgcheck localinstall packagename.arch.rpm

Simplemente cambie packagename.arch.rpm al nombre de archivo RPM que desea instalar.

Editar Solo una aclaración, esto instalará automáticamente todas las dependencias que ya están disponibles a través de los repositorios del sistema YUM.

Si tiene dependencias satisfechas por otros RPM que no están en los repositorios del sistema, este método no funcionará a menos que cada RPM también se especifique junto con packagename.arch.rpm en la línea de comandos.


Encontré una solución más simple. Si tiene todos los RPM en el mismo directorio, todo lo que necesita hacer es,

$ sudo rpm -i *.rpm

rpm parece descubrir el orden correcto para instalar estos e instala los RPM.


La respuesta de Mateo despertó muchas emociones, debido al hecho de que todavía carece de un pequeño detalle. El comando general sería:

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

El package_file_name anterior puede incluir una ruta local absoluta o relativa, o ser una URL (posiblemente incluso un URI).

Yum buscaría dependencias entre todos los archivos de paquete dados en la línea de comando Y SI NO FALTA encontrar las dependencias allí, también usará cualquier repositorio de yum configurado y habilitado.

Ni el directorio de trabajo actual, ni las rutas de ninguno de package_file_name buscarán, excepto cuando alguno de estos directorios se haya configurado previamente como un repositorio yum habilitado.

Entonces en el caso del OP el comando yum :

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

haría, como harían las rpm :

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

La diferencia entre estas invocaciones de yum e rpm solo sería visible si uno de los paquetes enumerados para su instalación tuviera dependencias adicionales en los paquetes que NO figuraban en la línea de comando.

En tal caso, rpm solo se negarán a continuar, mientras que yum usaría cualquier repositorio de yum configurado y habilitado para buscar dependencias, y posiblemente tenga éxito.

El directorio de trabajo actual NO se buscará en ningún caso, excepto cuando se haya configurado previamente como un repositorio yum habilitado.


Me encontré con esto y lo que funcionó para mí fue ejecutar yum localinstall enterPkgNameHere.rpm desde el directorio donde se encuentra el archivo .rpm.

Nota: reemplace enterPkgNameHere.rpm con el nombre de su archivo .rpm.


Para mí trabajó solo con

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

Y la autorización solicitada automáticamente para descargar las dependencias. Debajo del ejemplo, estoy usando 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


Para usuarios de dnf simplemente use dnf install *.rpm , la instalación localinstall ya no es necesaria.


Proceso de generación de RPM desde el archivo fuente:

  1. Descargue el archivo fuente con extensión .zz.
  2. Instale rpm-build y rpmdevtools desde yum install. (Se generará la carpeta rpmbuild ... Se generarán las carpetas SPECS, SOURCES, RPMS .. dentro de la carpeta rpmbuild).
  3. Copie el código fuente.gz a la carpeta SOURCES. (Rpmbuild / SOURCES)
  4. Deshazte de la bola de alquitrán usando el siguiente comando.
    • vaya a la carpeta FUENTES: rpmbuild / SOURCES donde está presente el archivo tar. comando: por ejemplo tar -xvzf httpd-2.22.tar.gz httpd-2.22 carpeta se generará en la misma ruta. Compruebe si apr y apr-util y allí en la carpeta httpd-2.22 / srclib. Si apr y apr-util no existen, descargue la última versión del sitio de apache, desactívela y colóquela dentro de la carpeta httpd-2.22 / srclib. También asegúrese de tener una instalación Pcre en su sistema.
  5. Vaya a la carpeta extraída y escriba a continuación el comando: ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-proxy --enable-proxy-balancer --with-mpm=worker --enable-mods-static=all
  6. Ejecutar debajo del comando una vez que la configuración sea exitosa: make
  7. Después de ejecutar con éxito make make run: checkinstall en la misma carpeta. (Si no tiene el software checkinstall, descargue la última versión del sitio). También el software checkinstall tiene un error que puede resolverse de la siguiente manera: busque checkinstallrc y luego reemplace TRANSLATE = 1 a TRANSLATE = 0 usando el comando vim. También verifique si el paquete excluye: EXCLUDE = "/ selinux"
  8. checkinstall pedirá la opción (escriba R si desea tp rpm de compilación para el archivo fuente)
  9. ¡Hecho! El archivo .rpm se compilará en la carpeta RPMS dentro del archivo rpmbuild / RPMS.

Simple, simplemente ejecute el siguiente comando.

sudo dnf install *package.rpm

Ingrese su contraseña y listo.