Итак, если кому-то интересно, что я сделал, вот код на данный момент.
Спасибо @the_velour_fog за помощь.
Если кто-то считает, что это худшее из возможных решений
(я тоже не считаю его супер сексуальным, но оно делает то, что должно делать), напишите им сюда.
while [ -n "$1" ]; do
for bin in $(find "$1"); do
[ -f "$bin" ] || continue
case "$bin" in
*.so)
export start=$(date +"%T")
printf "$bin:\t"
echo -n "$start " >>"$ACTIVE_DB/logs/parse_bin.log"
echo "$bin" >>"$ACTIVE_DB/logs/parse_bin.log"
"$FILE_DIR/perls/parse_bin.pl" "$bin" dbi:SQLite:dbname="$ACTIVE_DB/test.sqlite" 2>>"$ACTIVE_DB/logs/parse_bin.log"
;;
*.jar)
export start=$(date +"%T")
printf "$bin:\t"
echo -n "$start " >>"$ACTIVE_DB/logs/parse_jar.log"
echo "$bin" >>"$ACTIVE_DB/logs/parse_jar.log"
"$FILE_DIR/perls/parse_jar.pl" "$bin" dbi:SQLite:dbname="$ACTIVE_DB/test.sqlite" 2>>"$ACTIVE_DB/logs/parse_jar.log"
;;
*.apk)
export start=$(date +"%T")
printf "$bin:\t"
echo -n "$start " >>"$ACTIVE_DB/logs/parse_apk.log"
echo "$bin" >>"$ACTIVE_DB/logs/parse_apk.log"
"$FILE_DIR/perls/parse_apk.pl" "$bin" dbi:SQLite:dbname="$ACTIVE_DB/test.sqlite" 2>>"$ACTIVE_DB/logs/parse_apk.log"
;;
*)
if [ -x "$bin" ] ; then
export start=$(date +"%T")
printf "$bin:\t"
echo -n "$start " >>"$ACTIVE_DB/logs/parse_bin.log"
echo "$bin" >>"$ACTIVE_DB/logs/parse_bin.log"
"$FILE_DIR/perls/parse_bin.pl" "$bin" dbi:SQLite:dbname="$ACTIVE_DB/test.sqlite" 2>>"$ACTIVE_DB/logs/parse_bin.log"
else
continue
fi
;;
esac
done
shift
done
Насколько я могу судить на данный момент, это работает, но я не уверен насчет этой части в конце
*)
if [ -x "$bin" ] ; then
export start=$(date +"%T")
printf "$bin:\t"
echo -n "$start " >>"$ACTIVE_DB/logs/parse_bin.log"
echo "$bin" >>"$ACTIVE_DB/logs/parse_bin.log"
"$FILE_DIR/perls/parse_bin.pl" "$bin" dbi:SQLite:dbname="$ACTIVE_DB/test.sqlite" 2>>"$ACTIVE_DB/logs/parse_bin.log"
else
continue
fi
Будущее покажет^^
Из вики Arch Linux (выделено мной):
Чтобы увидеть старые и новые версии доступных пакетов , раскомментируйте
Строка "VerbosePkgLists"
в/etc/pacman.conf.
Подробнее об установке конкретных версий здесь .
Вот как это выглядит в моей системе Arch с VerbosePkgLists
без комментариев:
sudo pacman -Sy firefox
:: Synkroniserar paketdatabasen...
core är senaste versionen
extra är senaste versionen
community är senaste versionen
löser beroenden...
Söker efter paket med konflikter...
Paket (1) Gammal Version Ny Version Nettoskillnad Hämtningsstorlek
extra/firefox 48.0.2-1 49.0.1-1 -0,35 MiB 39,82 MiB
Total hämtningsstorlek: 39,82 MiB
Total installationsstorlek: 89,81 MiB
Nettouppgraderingsstorlek: -0,35 MiB
:: Fortsätt med installation? [Y/n]
Моя система (очевидно) на шведском языке, но « Gammal Version
» означает Старая версия
и « Новая версия
» означает Новая версия
. И, как вы видите выше, мне предлагается ввести [Y / n]
перед установкой чего-либо.
Простой pacman -Ss
покажет вам эту информацию:
↪ LC_ALL=en_US.utf8 pacman -Ss evince
testing/evince 3.22.0+1+gc1dd9eb-1 (gnome) [installed: 3.20.1-2]
Document viewer (PDF, Postscript, djvu, tiff, dvi, XPS, SyncTex support with gedit, comics books (cbr,cbz,cb7 and cbt))
extra/evince 3.20.1-2 (gnome) [installed]
Document viewer (PDF, Postscript, djvu, tiff, dvi, XPS, SyncTex support with gedit, comics books (cbr,cbz,cb7 and cbt))
Обновление после примера в вашем вопросе:
В Arch Linux вы можете иметь только когда-либо (если вы не ' re с использованием неофициальных репозиториев) доступны две версии пакета: стабильная версия в одном из репозиториев core / extra / community / Multilib и одна в стадии тестирования.
Если вы действительно действительно хотите установить старые пакеты, у вас есть несколько вариантов их найти:
Используйте Arch Linux Archive , чтобы найти старые версии пакетов.
Используйте один из инструментов из статьи вики о переходе на более раннюю версию , чтобы найти их, например agetpkg -l gcc
или gcc
.
Обратите внимание, что пакеты в Arch Linux обычно не указывают границы версий для своих зависимостей, потому что частичные обновления не поддерживаются , поэтому установка более старых версий некоторых пакетов не является хорошей идеей.