Как мне указать [доступные] версии пакета в Arch Linux?

Итак, если кому-то интересно, что я сделал, вот код на данный момент.
Спасибо @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

Будущее покажет^^

4
17.11.2017, 11:31
2 ответа

Из вики 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] перед установкой чего-либо.

2
27.01.2020, 20:53

Простой 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 и одна в стадии тестирования.

Если вы действительно действительно хотите установить старые пакеты, у вас есть несколько вариантов их найти:

  1. Используйте Arch Linux Archive , чтобы найти старые версии пакетов.

  2. Используйте один из инструментов из статьи вики о переходе на более раннюю версию , чтобы найти их, например agetpkg -l gcc или gcc .

Обратите внимание, что пакеты в Arch Linux обычно не указывают границы версий для своих зависимостей, потому что частичные обновления не поддерживаются , поэтому установка более старых версий некоторых пакетов не является хорошей идеей.

7
27.01.2020, 20:53

Теги

Похожие вопросы