Linux - Bash - Get $releasever et $basearch valeurs?
Je suis en train d'écrire un script bash pour récupérer des paquets de distance repos, à l'aide de reposync, donc je ne peux point mes nœuds à tirer localement. En tant que tel, je suis en train de garder les locaux des pensions de configs aussi semblable que possible à la usptream pensions de configs, comme ceci:
# upstream
baseurl=http://mirror.freedomvoice.com/centos/$releasever/os/$basearch/
# local
baseurl=http://user:password@repo.example.com/centos/stable/$releasever/os/$basearch/
Dans le script bash, est-il le moyen le plus propre pour obtenir $releasever et $basearch valeurs? Je pensais faire le suivant:
yum_metadata=$(yum version nogroups)
Qui retourne:
Loaded plugins: versionlock Installed: 6/x86_64 360:6167019baac7e76f94c26320424dc41a7f046a70 version
Puis regexing pour les 6/x86_64 valeurs. Genre bordélique, et la recherche d'une plus approche élégante.
Quelles seraient les valeurs pour
Installé: 6/x86_64, 6 est releasever et x86_64 est basearch.
$basearch
et $releasever
à partir de l'exemple ci-dessus?Installé: 6/x86_64, 6 est releasever et x86_64 est basearch.
OriginalL'auteur Mike Purcell | 2014-01-08
Vous devez vous connecter pour publier un commentaire.
La plupart des distrib utilise le distroverpkg version pour avoir la releasever et basearch.
Si vous regardez dans /etc/yum.conf, vous verrez que distrover est réglé sur redhat-release (RHEL), enterpriselinux libération (OEL), et d'autres.
Pour obtenir le nom du package:
Pour obtenir le releasever:
Pour obtenir le basearch:
Le nouveau code ci-dessus va essayer d'aller chercher le colis associé à un fichier
/etc/$distro
. Certains Linux ajoute/etc/redhat-release
de leur package de presse.Si vous obtenez
file not owned by any package
puis utilisez le/etc/*-release
fichier fourni avec votre distribution. C'est probablement/etc/centos-release
.Vous pouvez cocher la case appropriée
/etc/*-release
approprié pour ce code en vérifiant le fichier qui est emballé avec centos.Ensuite utiliser ce fichier au lieu de la première ligne ci-dessus.
Voici un exemple de OEL où
/etc/redhat-release
est emballé commeenterprise-release
.De sortie:
package redhat-release is not installed
Vous pouvez modifier la requête tant que le fichier /etc/redhat-release est partie d'un paquet. Ou si il est /etc/centos-libération. Je vais modifier le code ci-dessus dans peu de temps.
Doux merci... je donnerai un coup de pied autour de la nouvelle substance dans un peu et de revenir à toi.
Vos mises à jour travaillé comme décrit. Donner un +1, va accepter dans quelques jours, si rien d'autre ne se transforme. Merci encore.
En acceptant comme je l'ai été en mesure de mettre en œuvre votre suggestion et a bien fonctionné.
OriginalL'auteur alvits