gpt4 book ai didi

ubuntu - 将安装脚本从 Redhat 更改为 Ubuntu

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:30 31 4
gpt4 key购买 nike

已经为带有 RPM 的 Redhat 编写了一个安装脚本(用于 Microsoft® SQL Server® ODBC Driver 1.0 for Linux)

它使用这段代码来检查是否安装了某些包

req_libs=( glibc e2fsprogs krb5-libs openssl )

for lib in ${req_libs[@]}
do
local present=$(rpm -q -a $lib) >> $log_file 2>&1
if [ "$present" == "" ]; then
log "The $lib library was not found installed in the RPM database."
log "See README for which libraries are required for the $driver_name."
return 1;
fi
done

我已经通过知道/相信库已安装并简单地删除测试来解决这个问题,但我现在想整理一下。

  1. 如何找到要在 Ubuntu 上查找的库。 Redhat -> Ubuntu 有没有命令或者翻译网页
  2. 将 rpm -q -a 替换为 dpkg -s 是否正确?

最佳答案

1) 找到合适的包

在 Ubuntu/Debian 中,库包通常以“lib”开头,而不是后缀。开发包通常只是以“-dev”为后缀而不是“-devel”

如果您不确定等效包的名称,您可以随时这样做:

sudo apt-get update
apt-cache search <packagename>

...并且不要在您的搜索中包括“lib”或“dev”部分,您将获得不错的结果。从那里您可以手动确定您正在寻找的正确包。

2) 查找已安装的包

您可以使用“dpkg -s”并且它会起作用,尽管根据我对“rpm -qa”输出的理解,您可能想要一些不那么冗长的东西。 “dpkg-query -l”通过管道传输到“grep”将在一行中输出包信息,应该更容易阅读。

下面是脚本的等效部分(使用正确的包名称和单独一行的 log_file 输出以正常工作):

#!/bin/bash

function stack_install()
{

log_file="$HOME/Desktop/stackoverflow/stack-log.txt"

req_libs=( libc6 e2fsprogs libkrb5-3 openssl )

for lib in ${req_libs[@]}
do
local present=$(dpkg-query -l "$lib" | grep "$lib" 2>/dev/null)
echo "$present" >> "$log_file"
if [ "$present" == "" ]; then
echo "The $lib library was not found installed in the dpkg database."
echo "See README for which libraries are required for the $driver_name."
return 1;
fi
done
}

stack_install

关于ubuntu - 将安装脚本从 Redhat 更改为 Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056762/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com