Если ваш /bin/sh на самом деле является /bin/bash и ваша версия достаточно свежая, вы можете использовать ассоциативный массив
#!/bin/bash
strs=( KW0 KW1 )
declare -A text=(
[KW0]="text text text"
[KW1]="text text text text"
)
for str in "${strs[@]}"; do
printf "%s\t%s\n" "$str" "${text[$str]}"
done
KW0 text text text
KW1 text text text text
Я бы рекомендовал устанавливать программное обеспечение только из источников, предоставленных вашим дистрибьютором. Добавляйте вручную репозитории или устанавливайте пакеты или другое программное обеспечение вручную только в том случае, если вы точно знаете, что делаете. Что касается вопроса о том, что sudo apt update
делает :, он извлекает последние доступные пакеты из всех настроенных вами репозиториев. То же самое относится к защелкам или плоским упаковкам. После их установки из центрального репозитория вы будете получать обновления аналогично apt update
.
apt update
проверяет все ваши источники программного обеспечения, так что это репозитории дистрибутива и любой добавленный вами PPA. Насколько я знаю, это не включает flatpak (, используйте flatpak update
для этого ), но может включать snap, если дистрибутив устанавливает его именно так. Вещи, которые вы установили вручную (загрузили.deb или другие средства установки ), конечно, таким образом не проверяются.
Но имейте в виду, что Ubuntu имеет свою собственную политику обновлений, часть дистрибутива обновляется до конца -или -жизни дистрибутива («основного» репозитория ), другие получают мало или вообще не получают обновлений. (Репозиторий «universe» и другие )(и большинство установленных пакетов snap -не находятся в «основном» ).
apt update
обновляет список доступных пакетов из репозиториев, которые находятся в /etc/apt/sources.list
и во всех файлах, которые находятся в /etc/apt/sources.list.d/
. Важно запустить его первым, чтобы apt
знал о более новых версиях пакетов.
apt upgrade
фактически обновляет установленные пакеты, для которых доступны более новые версии, при условии, что они были установлены через apt
и что репозитории, из которых они были получены, находятся в указанных выше местах.
Пакеты из snap
и flatpak
не будут обновлены apt
, так как репозитории разные и не будут находиться в кеше/базе данных apt
.
Существует множество способов установки программных пакетов в Ubuntu, некоторые из них вы не упомянули. Чтобы дать полный ответ,Я хочу описать их все:
Диспетчер пакетов (, независимо от того, apt
, apt-get
, aptitude
или что-то еще ), имеет список местоположений для загрузки программного обеспечения. Это программное обеспечение, как правило, заслуживает доверия, известно, что оно работает и в основном хорошо поддерживается. Такое место называется «репозиторий». URL-адреса репозиториев хранятся в /etc/apt/sources.list
. При запуске apt update
менеджер пакетов запрашивает репозиторий, чтобы узнать, какие пакеты программного обеспечения доступны. Он хранит информацию в локальном кеше.
При установке пакета с помощью apt install
менеджер пакетов проверяет свой локальный кеш, чтобы определить, откуда загрузить пакет. Затем он загружает пакет. Пакет предоставляется в виде архива в формате DEB. Архив распаковывается в вашу локальную файловую -систему. Кроме того, пакет может содержать некоторый код, который будет автоматически выполняться один раз для настройки только что установленного программного обеспечения.
При обновлении программного обеспечения с помощью apt upgrade
или apt dist-upgrade
загружаются новые версии существующих пакетов. Текущая версия удалена из системы. Менеджер пакетов знает, какие файлы нужно удалить, поскольку он знает, какой файл был предоставлен каким пакетом. Затем новая версия устанавливается, как описано выше.
Также можно расширить репозитории по умолчанию, добавив URL-адреса в /etc/apt/sources.list
, хотя в наши дни следует использовать /etc/apt/sources.list.d/
. Менеджер пакетов будет рассматривать их так же, как репозитории по умолчанию. Установка, удаление и обновление работают точно так же. Пользователь должен быть осторожен при добавлении пользовательских репозиториев — они должны быть сделаны для системы.
На стороне -примечание :Исходя из личного опыта, я советую удалить все пакеты, установленные из репозиториев, отличных от -по умолчанию, прежде чем выполнять обновление с одной версии Ubuntu на следующую.
Вы также можете загружать файлы DEB вручную. Вы можете установить пакет через dpkg -i
. Менеджер пакетов никогда не обновит этот пакет, так как не знает, откуда он взялся.
snapcraft — это альтернатива диспетчеру пакетов, ориентированная на совместимость не только с Ubuntu, производной от Debian -, но и со всеми дистрибутивами Linux. Снэп-пакет не распаковывается в систему. Более того, он монтируется (, его содержимое становится видимым ), а программное обеспечение выполняется в контролируемой среде внутри вашей системы (, подумайте о песочнице и виртуальных машинах ). При удалении снапа пакет размонтируется и удаляется. Обновления происходят аналогично.
Вы также можете загрузить несколько файлов и поместить их в соответствующие места на -жестком диске. Пользовательское программное обеспечение часто помещается в /opt. Двоичные файлы (или ссылки на них )устанавливаются в каталог в $PATH
. Таким образом, программное обеспечение может быть легко доступно. Менеджер пакетов ничего не знает об этом программном обеспечении. Обновления также необходимо устанавливать вручную (иногда в программном обеспечении есть функция самообновления -, жесткая ). Пользовательское программное обеспечение также можно установить в такие места, как /usr/local
или даже /usr
. Последнее не следует делать, если вы действительно не знаете, что делаете. Пользовательское программное обеспечение может ужасно конфликтовать с программным обеспечением, контролируемым менеджером пакетов.
Похожие вопросы:
Обновления программного обеспечения Ubuntu с помощью apt -получают
Имеет ли значение, обновляю ли я пакеты через Apper или Центр программного обеспечения в Debian?