Я немного искал, но не нашел ничего, что могло бы сработать. Существует QUCS и несколько других, которые работают для более старых версий, но некоторые зависимости не удовлетворяются для более новых платформ ОС. Я попробовал следующие потоки, которые дают обходной путь для этих зависимостей, но все же ... не повезло.
Если вы знаете любое новое программное обеспечение, которое будет работать, это было бы замечательно. Я хочу установить последнюю версию 3.1 или в будущем 3.2 или любую другую. Теперь я обнаружил, что в apt-get есть 2 версии: user @ ...
Я пишу установочный скрипт и мне нужно установить dotnet-sdk. Я хочу установить последнюю версию 3.1 или в будущем 3.2 или любую другую. Теперь я обнаружил, что в apt-get есть 2 версии:
user@NUC7CJYH:~$ apt search dotnet-sdk-3
Sorting... Done
Full Text Search... Done
dotnet-sdk-3.0/now 3.0.103-1 amd64 [installed,local]
Microsoft .NET Core SDK 3.0.103
dotnet-sdk-3.1/focal 3.1.301-1 amd64
Microsoft .NET Core SDK 3.1.301
Затем я сохраняю результаты в массиве:
user@NUC7CJYH:~$ d=($(apt search dotnet-sdk-3 2>/dev/null | grep dotnet | cut -c 1-14))&&echo ${d[@]}
dotnet-sdk-3.0 dotnet-sdk-3.1
Теперь я застрял в сортировке массива по версии и получении индекса для последней версии.
Мне интересно, если это правильный путь (сортировка массива, получить строку и, возможно, установить эту версию), или если кто-то знает команду, которая автоматически устанавливает последнюю версию?
С уважением, Стефан
To keep packages upto date I would expect sudo apt-get update
sudo apt-get upgrade
should suffice. I use python to find the highest version number returned by a command
import re, sys
from distutils.version import StrictVersion
def get_release(out):
r = re.compile(f'.*([v]?[0-9]+\.[0-9]+\.[0-9]+)$')
maxrel = "0.0.0"
for rel in out:
if r.match(rel) is not None:
rel= r.split(rel)[1]
if StrictVersion(rel) > StrictVersion(maxrel): maxrel = rel
return maxrel
if __name__ == '__main__':
print(get_release(sys.stdin.read().split("\n")))
the command you have noted doesn't return same results for me. I pasted text to a file
$ cat dotnet.txt | python3 maxver.py
3.1.301
getting highest available version from git:
$ git ls-remote --tags --refs https://github.com/jquery/jquery.git | python3 maxver.py
3.5.1
putting it together to download latest version
$ wget -nv https://github.com/jquery/jquery/archive/$(git ls-remote --tags --refs https://github.com/jquery/jquery.git | python3 maxver.py).zip
2020-06-16 10:49:01 URL:https://codeload.github.com/jquery/jquery/zip/3.5.1 [1520729/1520729] -> "3.5.1.zip" [1]
В конце концов я решил это следующим образом:
desc="install dotnet SDK"
# find latest dotnet release (in version tree 3.x)
dotnet_releases=($(apt search dotnet-sdk-3 2>/dev/null | grep dotnet | cut -c 1-14))
dotnet_sorted=($(printf '%s\n' "${dotnet_releases[@]}" | sort -r))
echo -e "Latest dotnet version in the 3.x branch is: ${dotnet_sorted[0]} "
dpkg -s ${dotnet_sorted[0]}
if [ $? -eq 1 ]; then
apt-get install -q -y "${dotnet_sorted[0]}" && success $desc || failed $desc
else
success $desc
fi
Пожалуйста, игнорируйте мои успешные или неудачные функции, они просто отображают строки и ведут журнал.