Как установить пакет из AUR, для которого в дальнейшем нужны зависимые пакеты AUR

Так. Я использую ArchLinux с оконным менеджером i3 (короче говоря, нет подходящей среды рабочего стола). Я новичок в Arch Linux

Я пытаюсь установить этот пакет под названием "Затвор", который поможет мне сделать снимок экрана.

Теперь я попытался установить "затвор"

sudo pacman -S shutter

К сожалению, шторка недоступна в репозитории pacman (или как там она называется, извините), я знал, что она недоступна, но я просто хотел попробовать и пошел дальше и попробовал.

Причина, по которой я знал, что она недоступна, была в том, что она была указана в AUR. Теперь пакеты в AUR - это те, которых нет в основном хранилище. Хорошо. Я скачал пакет из его мерзавца и попытался "сделать" его.

git clone aur.blah.blah.shutter.git
cd shutter
makepkg -s

Теперь это ошибка, с которой я столкнулся.

[pc@PC shutter]$ makepkg -s
==> Making package: shutter 0.93.1-11 (Thu May 18 19:05:21 UTC 2017)
==> Checking runtime dependencies...
==> Installing missing dependencies...
[sudo] password for pc:
error: target not found: gnome-perl
error: target not found: perl-gnome2-wnck
error: target not found: perl-gtk2-imageview
error: target not found: perl-gtk2-unique
warning: skipping target: perl-xml-simple
==> ERROR: 'pacman' failed to install missing dependencies.

Теперь я внимательно посмотрел этот список и понял, что эти пакеты зависимостей, например, gnome-perl и другие, сами по себе недоступны в основном репозитории pacman, но присутствуют в AUR. Поэтому имеет смысл, почему Пакман не может найти цель.

Чтобы проверить я пытался:

[pc@PC shutter]$ sudo pacman -S gnome-perl
error: target not found: gnome-perl

Так что да, этот "gnome-perl" и другие зависимости тоже являются частью AUR, и, следовательно, когда "makepkg" говорит pacman установить его, pacman simple терпит неудачу.

Итак, как мне установить такие пакеты из AUR, которые так сильно зависят от других пакетов AUR?

Заранее спасибо. Если мои концепции неверны. Пожалуйста, руководство. Еще раз спасибо.

PS: я сделал sudo pacman -Сю, но не удача, ведь эти пакеты не являются частью основного репо и находятся в AUR, поэтому обновление pacman mirrorlist и системного обновления не должно это исправлять.

4 ответа

Решение

Вы можете указать Cower рекурсивно загружать зависимости AUR пакета AUR, указав параметр загрузки -d в два раза так -dd, -d -d или же --download --download

От man cower: OPERATIONS -d, --download Download target. Pass this option twice to fetch uninstalled dependencies (done recursively).

Было бы намного понятнее, если AUR был вставлен: передайте эту опцию дважды, чтобы получить неустановленные зависимости AUR (выполняется рекурсивно). Но, честно говоря, Кауэр имеет дело только с AUR.;)

(Зависимости главного архива репо (не AUR) уже позаботились о makepkg команда конечно.)

При установке, вероятно, лучше загрузить все пакеты AUR в одну выделенную папку и оставить их там. Cower отслеживает, куда были загружены и установлены пакеты. (Все мои пакеты AUR загружаются в /home/myUsername/AUR-packages потому что я единственный пользователь.) Хотя все зависит от вашей ситуации.

Сначала вы должны бежать makepkg -sic (или любые другие параметры) в папке каждой зависимости AUR. Затем в папке основного пакета AUR.

Обновление:

Чтобы легко проверить наличие обновлений для установленных пакетов AUR:

  • cower -u

  • затем объединить -u с -dd чтобы также проверить и рекурсивно загрузить все зависимости AUR: cower -udd (или сделайте это прямо сейчас)

  • тогда сначала cd в папку каждой зависимости AUR и запустить makepkg -sic (или любые другие опции, которые вы обычно используете)

  • затем перейдите в папку каждого верхнего / основного пакета AUR (независимо от того, который вы фактически установили и хотите использовать) и запустите makepkg -sic (или любые другие опции, которые вы обычно используете).

Не забывайте, что есть и опция многословия -v который также позволит вам увидеть все другие пакеты, которые были проверены на наличие обновлений. Не только с обновлениями.

Чем больше пакетов AUR вы установили, тем больше вы поймете, что для этого требуется автоматизация одним или несколькими сценариями.

Если вам это полезно, это простая функция bash, которая пытается загрузить и установить список пакетов. Конечно, это не делает разрешение зависимостей, поэтому вам нужно установить зависимости перед пакетами, которые зависят от них.

aur_manual_install() {
    [[ ! -d aur_packages ]] && mkdir aur_packages
    pushd aur_packages
    for PKG in "$@" ; do
        curl -o ${PKG}.tar.gz https://aur.archlinux.org/cgit/aur.git/snapshot/${PKG}.tar.gz
        tar zxvf ${PKG}.tar.gz
        rm ${PKG}.tar.gz
        pushd ${PKG}
        makepkg -csi --noconfirm
        popd
    done
    popd
    #rm -rf aur_packages # Uncomment if you want to clean up after install
}

Пример использования (аргументы - это список пакетов, которые нужно установить по порядку):

aur_manual_install cower-git pacaur

Может быть, вы хотите добавить set -e остановить в случае ошибки и т. д.

Правка 1: исходный код, который я разместил, имел некоторые проблемы, потому что он был извлечен из более крупного скрипта.

Изменить 2: я добился определенного прогресса, пытаясь установить этот пакет:

aur_manual_install \
gnome-perl gnome-vfs gnome-vfs-nosmb gnome-vfs-perl gnomecanvas-perl libbonobo libbonoboui libgnome libgnome-data libgnomeui orbit2 perl-gnome2-wnck perl-gtk2-imageview perl-gtk2-unique shutter

(Есть, вероятно, другие пакеты, которые уже были установлены).

Редактировать 3: мне пришлось установить gnome-vfs-nosmb вручную, потому что он конфликтовал с gnome-vfs.

Редактировать 4: наконец-то! заполнив все оставшиеся пакеты, я получил его на работу. Но, вероятно, было бы неплохо попросить разработчика обновить GTK3 или аналогичный; Ой, видимо проект был последний раз обновлен в 2014 году...

затвор

Вы можете использовать Yaourt .

Вы можете установить его, добавив репозиторий в ваш pacman.conf

sudo nano /etc/pacman.conf

Добавьте это в раздел "Хранилища":

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

Обновите базу данных pacman и установите yaourt

sudo pacman -Sy yaourt

Теперь вы можете установить свой пакет с: yaourt shutter

Возможно, вам пригодится менеджер пакетов AUR.

Я лично использую yaourt, это очень просто и автоматически разрешает зависимости.

Это очень легко установить, просто следуйте инструкциям:

Официальный сайт Yaourt

Чтобы установить пакет (и все его зависимости), выполните:

yaourt -S shutter
Другие вопросы по тегам