Как установить пакет без пропущенных зависимостей?

Когда эти два значения находятся в переменной, как здесь:

a="09:30:15"
b="13:00:34"

Тогда вы можете использовать это для сравнения этих значений (с ksh93):

[ "${a//':'}" -lt "${b//':'}" ] && echo "okay" || echo "invalid arguments"

Это использует kshрасширение параметров ${параметр/паттерн/строка}. Из manpage:

Расширяет параметр и заменяет самое длинное совпадение шаблона заданной строкой. [...] Каждое совпадение шаблона заменяется заданной строкой.

Таким образом, 09:30:15 расширяется до 093015, а 13:00:34 до 130434. Это целые числа, которые можно сравнить с помощью утилиты test. Из man-страницы:

 INTEGER1 -lt INTEGER2
 INTEGER1 меньше INTEGER2

Edit: с ksh88, который не имеет функции ${параметр//шаблон/строка}, вы должны сначала удалить : с помощью sed, а затем сравнить значения:

a="$(printf '%s' "$a" | sed -e 's/://g')"
b="$(printf '%s' "$b" | sed -e 's/://g')"
[ "$a" -lt "$b" ]  && echo "okay" || echo "invalid arguments"
0
26.06.2018, 05:28
3 ответа

Изучив ответы других людей, я думаю, что лучший и наиболее целостный ответ таков: существует ТОЛЬКО три (3 )способа установки пакетов в Linux. И ТОЛЬКО ОДИН из них обеспечивает автоматическую установку всех зависимых пакетов. Это:

apt-get install <package-name>

Вот он! Потом;

dpkg --install <full path to package/package-name.deb>

И, наконец, собрать всё из исходников . Этот последний вариант почти ничем не отличается от использования dpkg . Только вам, возможно, придется проделать некоторую дополнительную работу, чтобы понять «autoconf , automake и тому подобное», чтобы начать работу. Но большинство исходников поставляются с созданным файлом конфигурации automake, и в лучшем случае вам нужно запустить ./configure , чтобы пакет соответствовал архитектуре вашего ПК, make и make install ! Вот оно!

Наконец, в ответ на мой вопрос (s ), это означает, что если кто-то хочет использовать последние два , вы/они должны использовать хорошо сохранившиеся веб-сайты, такие как пакеты. ubuntu.com или другой, чтобы отслеживать все зависимости и рекомендуемые пакеты. Затем установите загруженные зависимости по мере необходимости, поскольку каждый из пакетов в конечном итоге будет установлен (вручную ). В источниках обычно говорится, что у вас установлены сборочные -инструменты . Из них вы можете ответить, смешав методы установки, например, инструменты apt get install build -, которые можно найти в репозиториях Ubuntu, а затем запустить make install для рассматриваемых источников. Таким образом, пропускается необходимость отслеживать и загружать инструменты сборки -и их зависимости вручную.

0
01.12.2021, 22:02

IIRC, если у вас есть файл.deb с зависимостями, которые можно найти в настроенных репозиториях, вы можете установить его с помощью dpkg -i package.deb, а затем выполнить apt-get -f install, и apt добавит все, что нужно вашему пакету... но ТОЛЬКО если соответствующие номера версий и т. д. все существуют и совпадают.

0
28.01.2020, 02:31

Существует способ сделать это. Это действительно не рекомендуется, но я нашел это полезным, когда мне нужно было установить заброшенный пакет, когда существующие в нем ошибки не мешают мне выполнять мои задачи (, например, если пакет содержит несколько двоичных файлов., но мне нужен только один из них ).

Допустим, у вас есть файл package.deb. Вы делаете следующее:

ar t package.deb

Затем вы ищете файл, который начинается с data, чаще всего это будет data.tar.xz, но иногда можно использовать другое сжатие (или так, я читал ).

Потом бежишь

ar x package data.tar.xz

Обязательно подтвердите, что извлечение произошло, потому что вывода так или иначе не будет.

Может оказаться полезным переместить файл данных в какой-нибудь каталог сам по себе, потому что на следующем шаге мы будем извлекать дерево каталогов, а вы не хотите пытаться выяснить, что вам нужно, а что нет. не нужно после того, как вы закончите.

Теперь распакуйте полученный файл:

unxz data.tar.xz
tar xvf data.tar

Вы найдете файлы, которые будут созданы при установке пакета, но с текущим каталогом в качестве корня. Таким образом, если двоичный файл находится в /usr/bin, вы найдете его в ./usr/bin.

После этого вы можете вручную скопировать файлы на нужные места. Или я предпочитаю копировать их в /home/user/binи добавлять этот каталог в PATH. Таким образом, у вас будет немного меньше шансов сломать систему. Конечно, если вы устанавливаете библиотечный пакет, вам нужно будет потратить еще немного времени на выяснение того, что и куда идет.


Опять же, это не лучший способ установки пакетов (, если не сказать больше ). Эта установка затрудняет запоминание того, какой файл был из какого пакета, и поэтому трудно понять, откуда возникает какая-то ошибка. Но, к сожалению, бывают моменты, когда вам нужно "Just Fucking Do It" (tm ).

0
30.11.2021, 05:13

Теги

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