LINUX.ORG.RU

Как отличить rpm-based от deb-based?

 ,


0

4

Какой самый простой и надёжный способ отличить rpm-based систему от deb ? Для скрипта. Все отличия какие-то неоднозначные, след. не очень надёжны, каждый форк всё по своему делает. Вот например была рекомендация на просторах сети: for i in $( echo rpm dpkg pacman ); do which $i; done 2> /dev/null Вроде здорово, но что же я вижу:

lab@nb11:~$ for i in $( echo rpm dpkg pacman ); do which $i; done 2> /dev/null
/usr/bin/rpm
/usr/bin/dpkg
lab@nb11:~$       

вот прямо так, дистр на все случаи жизни… )


Посмотри где больше пакетов установлено или в каком из пакетных менеджеров установлено ядро или например grep - тот и будет основным. А строгой границы и нельзя провести, можно при желании установить rpm в deb-дистр или dpkg в rpm-дистр и плавно удалять пакеты в одном и ставить в другом.

firkax ★★★★★
()

Возьми к примеру Альт Linux, менеджер пакетов там apt, но сами пакеты rpm, а не deb.

В deb-based дистрибутиве может стоять утилита rpm для возможности конвертации rpm пакета в архив и даже установки его сразу штатно.

Но в случае установки через rpm -i package.rpm в базе установленных rpm пакетов не будет пакетов зависимостей устанавливаемого пакета и установки прервётся.

Определить поэтому можно по наличию директории с базой установленных RPM или DEB пакетов.

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

Определить дистрибутив можно по выводу lsb_release -a.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Следовательно можно смотреть на наличие директории с базой установленных DEB или RPM пакетов случае наличия двух утилит, deb и rpm в системе.

Или проверять количество установленных deb и rpm пакетов в системе, в случае наличия двух утилит.

В случае deb-based дистрибутива количество установленных deb пакетов не будет равняться нулю, в случае rpm - количество rpm пакетов будет больше нуля.

kostik87 ★★★★★
()
Ответ на: комментарий от icarus

В случае deb-based дистрибутива - /var/lib/dpkg, ну либо как указано в конфигурационных файлах утилиты deb.

Не знаю меняют ли строители дистрибутивов путь по умолчанию.

Можешь опираться на количество установленных пакетов deb или rpm в системе.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Определить дистрибутив можно по выводу lsb_release -a.

…Которая, мягко говоря, не везде есть. Вот только что посмотрел — в моей Федоре не фурычит, хотя казалось бы…

hobbit ★★★★★
()
Ответ на: комментарий от kostik87

Возьми к примеру Альт Linux, менеджер пакетов там apt

В вики пишут, что пакетный менеджер — RPM

То, что поверх rpm в альте apt, знаю.

утилиты apt пока нет, пользуйтесь apt-get/apt-cache из пакета apt.

APT в ALT Linux

greenman ★★★★★
()
Последнее исправление: greenman (всего исправлений: 2)