使用 yum 命令获取升级的大小
Get the size of an upgrade with yum command
我想用 yum
升级 linux 的尺寸。
对于 apt 我是这样做的:
`def get_upgradable() : #récupère la list des paquets
command = "apt list --upgradable 2>/dev/null"
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, encoding='utf8')
packages_name = []
for out in process.stdout :
if "/" in out :
packages_name.append(out[:out.index('/')])
return packages_name
def get_size(*args, return_somme=True) : #fait la somme du poids de chaque paquets
command = "apt-cache --no-all-versions show {pkg} | grep \"^Size\" | cut -d' ' -f2"
sizes = []
somme = 0
for pkg in args :
size = int(
subprocess.Popen(command.format(pkg=pkg), shell=True, stdout=subprocess.PIPE, encoding='utf8'
).stdout.read())
sizes.append(size)
somme += size
if return_somme : return somme
return sizes
somme=get_size(*get_upgradable())`
我尝试了这个,但我不知道如何只获得尺寸:
yum check-update | awk '/\S+\s+[0-9]\S+\s+\S+/ {print }' > updates
# yes N | yum update | awk '{if(=="k"||=="M") print ,,}' > checksize.txt
我确实看过yum check-update
命令的打印结果,但似乎没有包括下载(升级)大小。所以基本上;
- 运行
yum update
而是输出下载大小信息。
- 然后预先发送密钥
N
到下载确认提示,以避免任何下载。
if
语句是为了避免打印不包含尺寸信息的行。
- 要仅打印包名称以外的尺寸,只需从打印命令中删除
,
OUTPUT(head
和 tail
):
# cat -n checksize.txt | (head; tail)
1 centos-linux-release 22 k
2 kernel 5.9 M
3 kernel-core 36 M
4 kernel-modules 28 M
5 PackageKit 599 k
6 PackageKit-command-not-found 27 k
7 PackageKit-glib 140 k
8 PackageKit-gstreamer-plugin 17 k
9 PackageKit-gtk3-module 18 k
10 abattis-cantarell-fonts 156 k
886 subscription-manager-rhsm-certificates 260 k
887 cups-ipptool 5.8 M
888 oddjob-mkhomedir 49 k
889 openssh-askpass 92 k
890 python3-html5lib 214 k
891 python3-pexpect 138 k
892 python3-tracer 123 k
893 elfutils-debuginfod-client 65 k
894 kpatch-dnf 17 k
895 memstrack 48 k
如果您只想要总下载大小:
# yes N | yum update | awk -F": " '/^Total download size/{print }'
1.0 G
因此,我们与一位朋友一起致力于此并升级解决方案。提醒:我在服务器上发送 python 脚本以获取升级大小。
def get_upgradable() :
if os.path.isfile("/usr/bin/apt"):
command = "apt list --upgradable 2>/dev/null | cut -d'/' -f1"
elif os.path.isfile("/usr/bin/yum"):
#command = "yum check-update 2>/dev/null | grep \".x86_64\" | cut -d' ' -f1"
command="yum check-update | awk '/\S+\s+[0-9]\S+\s+\S+/ {print }'"
else :
raise PkgManager("Not found package manager")
return None
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, encoding='utf8')
packages_name = []
for out in process.stdout :
packages_name.append(out[:-1])
return packages_name
def get_yum_size(*args, return_somme=True) :
command = "yum info {pkg} | egrep \"(Taille|Size)\""
factor = {"k" : 1000,
"M" : 1000000,
"G" : 1000000000}
somme = 0
sizes = []
for pkg in args :
lines = subprocess.Popen(command.format(pkg=pkg),
shell=True,
stdout=subprocess.PIPE,
encoding='utf8',
).stdout.readlines()
infos = lines[-1][:-1].split(' ')
size = float(infos[-2])*factor[infos[-1]]
sizes.append(size)
somme += size
if return_somme : return somme
return sizes
你用 :
来调用它
def get_size(*args, **kwargs) :
if os.path.isfile("/usr/bin/apt"):
return get_apt_size(*args, **kwargs)
elif os.path.isfile("/usr/bin/yum"):
return get_yum_size(*args, **kwargs)
else :
raise PkgManager("Not found package manager")
主要是:
get_size(*get_upgradable())
我想用 yum
升级 linux 的尺寸。
对于 apt 我是这样做的:
`def get_upgradable() : #récupère la list des paquets
command = "apt list --upgradable 2>/dev/null"
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, encoding='utf8')
packages_name = []
for out in process.stdout :
if "/" in out :
packages_name.append(out[:out.index('/')])
return packages_name
def get_size(*args, return_somme=True) : #fait la somme du poids de chaque paquets
command = "apt-cache --no-all-versions show {pkg} | grep \"^Size\" | cut -d' ' -f2"
sizes = []
somme = 0
for pkg in args :
size = int(
subprocess.Popen(command.format(pkg=pkg), shell=True, stdout=subprocess.PIPE, encoding='utf8'
).stdout.read())
sizes.append(size)
somme += size
if return_somme : return somme
return sizes
somme=get_size(*get_upgradable())`
我尝试了这个,但我不知道如何只获得尺寸:
yum check-update | awk '/\S+\s+[0-9]\S+\s+\S+/ {print }' > updates
# yes N | yum update | awk '{if(=="k"||=="M") print ,,}' > checksize.txt
我确实看过yum check-update
命令的打印结果,但似乎没有包括下载(升级)大小。所以基本上;
- 运行
yum update
而是输出下载大小信息。 - 然后预先发送密钥
N
到下载确认提示,以避免任何下载。 if
语句是为了避免打印不包含尺寸信息的行。- 要仅打印包名称以外的尺寸,只需从打印命令中删除
,
OUTPUT(head
和 tail
):
# cat -n checksize.txt | (head; tail)
1 centos-linux-release 22 k
2 kernel 5.9 M
3 kernel-core 36 M
4 kernel-modules 28 M
5 PackageKit 599 k
6 PackageKit-command-not-found 27 k
7 PackageKit-glib 140 k
8 PackageKit-gstreamer-plugin 17 k
9 PackageKit-gtk3-module 18 k
10 abattis-cantarell-fonts 156 k
886 subscription-manager-rhsm-certificates 260 k
887 cups-ipptool 5.8 M
888 oddjob-mkhomedir 49 k
889 openssh-askpass 92 k
890 python3-html5lib 214 k
891 python3-pexpect 138 k
892 python3-tracer 123 k
893 elfutils-debuginfod-client 65 k
894 kpatch-dnf 17 k
895 memstrack 48 k
如果您只想要总下载大小:
# yes N | yum update | awk -F": " '/^Total download size/{print }'
1.0 G
因此,我们与一位朋友一起致力于此并升级解决方案。提醒:我在服务器上发送 python 脚本以获取升级大小。
def get_upgradable() :
if os.path.isfile("/usr/bin/apt"):
command = "apt list --upgradable 2>/dev/null | cut -d'/' -f1"
elif os.path.isfile("/usr/bin/yum"):
#command = "yum check-update 2>/dev/null | grep \".x86_64\" | cut -d' ' -f1"
command="yum check-update | awk '/\S+\s+[0-9]\S+\s+\S+/ {print }'"
else :
raise PkgManager("Not found package manager")
return None
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, encoding='utf8')
packages_name = []
for out in process.stdout :
packages_name.append(out[:-1])
return packages_name
def get_yum_size(*args, return_somme=True) :
command = "yum info {pkg} | egrep \"(Taille|Size)\""
factor = {"k" : 1000,
"M" : 1000000,
"G" : 1000000000}
somme = 0
sizes = []
for pkg in args :
lines = subprocess.Popen(command.format(pkg=pkg),
shell=True,
stdout=subprocess.PIPE,
encoding='utf8',
).stdout.readlines()
infos = lines[-1][:-1].split(' ')
size = float(infos[-2])*factor[infos[-1]]
sizes.append(size)
somme += size
if return_somme : return somme
return sizes
你用 :
来调用它def get_size(*args, **kwargs) :
if os.path.isfile("/usr/bin/apt"):
return get_apt_size(*args, **kwargs)
elif os.path.isfile("/usr/bin/yum"):
return get_yum_size(*args, **kwargs)
else :
raise PkgManager("Not found package manager")
主要是:
get_size(*get_upgradable())