LINUX.ORG.RU

DNF будет переписан на языке C

 


0

3

DNF — пакетный менеджер, используемый в дистрибутиве Fedora. Его предшественник Yum был полностью написан на Python, в DNF же на данный момент низкоуровневый функционал вынесен в отдельные C-библиотеки (hawkey, librepo, libsolv и libcomps).

Начиная с этого момента, код DNF будет постепенно переписываться на C в рамках отдельного проекта libhif; функционал hawkey уже влит в libhif.
Пока в libhif реализовано скачивание метаданных, разрешение зависимостей и исполнение RPM-транзакций; в будущем планируется доработка libhif для поддержки других базовых функций пакетного менеджера.

Внедрение libhif со встроенным hawkey ожидается к релизу Fedora 25.

>>> Подробности

★★★★★

Проверено: tailgunner ()
Последнее исправление: Wizard_ (всего исправлений: 3)

+много, отличное решение, пользоваться dnf на ARM - мучение. При том что Докер на ARM достаточно отзывчивый, а нативные утилиты - вообще не отличишь от Core i7.

anonymous
()
Ответ на: комментарий от Gvidon

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

Присоединяюсь к «да и сам тоже велосипедил, чего греха таить.», было такое, не отнять, целую либу навелосипедил лет так 15 назад, ичсх до сих пор работает, а переписывать смысла нет, ведь работает :)

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

Как многолетний пользователь федоры, скажу так: возмите уже apt-get, ёклмн.

А кто тебе мешает? Ставь бубунту.

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

спроси, например, Avi Kivity

Лол, это тот самый быдлокрестовщик, у которого крестокассандра в 10 раз быстрее нормальной только если ее пускать на 1 супердорогом сервере с SSD и kernel-bypassing-network, который помимо крестов никогда в жизни ничего не использовал, который считает, что вместо того, чтобы решать задачи самым подходящим инструментом надо «выучить кресты» и который в рассылке mechanical-sympathy кичился тем, что он не знает Java и высказывал вещи вроде «непонимаю почему люди пишут high frequency trading на Java, нет бы кресты выучить» и которого там незамедлительно накормили г*ном Gil Tene и компания (которые знают кресты не хуже него, но помимо того еще и знают когда их нужно применять, а когда нет)? Ну так это видимо достойный пример для подражания. Именно таких «я знаю кресты и ничего больше» илитариев еще сам Луговской гонял ссаными тряпками на sql.ru.

По топику - dnf - это промежуточный шаг по переработке функционального, но заросшего тормозными фичами yum'а. Помимо нативное реализации в рассылке федоры еще плавали идеи по вынесение логики разрешения зависимости на сервер, чтобы индекс пакетов не качать локально без необходимости.

anonymous
()
Ответ на: комментарий от segfault

Да я федору обновить полгода не могу - перезагружаться лень

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

это тот самый быдлокрестовщик [...] который помимо крестов никогда в жизни ничего не использовал

Нет, это какой-то другой. Тот, о котором я говорил - разработчик KVM и контрибутор Qemu.

сам Луговской гонял ссаными тряпками на sql.ru.

Луговский - это реальный авторитет. Скажи, а он круче Gil Tene?

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от anonymous

высказывал вещи вроде «непонимаю почему люди пишут high frequency trading на Java

Действительно, странное непонимание. Ведь скорость света недостаточно быстра для того, чтобы реализовать преимущества c++ при отправке запросов на биржу.

Помимо нативное реализации в рассылке федоры еще плавали идеи по вынесение логики разрешения зависимости на сервер, чтобы индекс пакетов не качать локально без необходимости.

Там, в рассылке, бывает такое проплывает, что и Поттеринг норм кажется.

legolegs ★★★★★
()

пакетный менеджер
Его предшественник Yum был полностью написан на Python
на C

Только у меня дежавю?

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

No comments :-)

Ну да, ядро написано на чем-то совместимом с С, но не на С и не на С++. Хотя некоторое время его и собирали компилятором С++ (из состава gcc ес-но),

anonymous
()
Ответ на: комментарий от Deleted

apt-get ужасен

Да ладно. Единственная проблема, когда у меня apt-get снёс полсистемы, была у меня лет 5 назад, когда я тщательно перемешал пакеты из stable, testing и expiremental и дополнительно украсил сборкой из сорцов кое-чего. На чистом testing или stable за последние 2 года проблем и конфликтов зависимостей не было вообще.

Кстати, забавный факт из жизни. Примерно те же самые лет 5 назад, yum при обновлении php на CentOS, неизвестно с какого перепугу молча снёс вообще всю систему, включая и себя. В итоге, машина находившаяся на тот момент в продакшене, была потеряна на продолжительное время. Если что, обновлял не я, а человек с прямыми руками. Повторить потом такое не смогли.

А по поводу переписыания с питона на си - чтож, это кардинальное решение проблемы производительности.

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

А серверная часть

nginx, например, изначально на C.

формат хранения и передачи метаданных

Так там же это на либы распилено сейчас, разве нет?

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

у меня apt-get снёс полсистемы

Но он же спрашивает перед тем, как сносить пакеты.

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

динственная проблема, когда у меня apt-get снёс полсистемы, была у меня лет 5 назад, когда я тщательно перемешал пакеты из stable, testing и expiremental и дополнительно украсил сборкой из сорцов кое-чего.

Он спрашивает, что делать, поэтому я им ни разу полсистемы не сносил. Хотя он мне несколько раз предлагал, не видя очевиднейших решений зависимостей.

Кстати, в cupt такого не было, но работал он медленно, не поддерживал репозитории на DVD (на оффлайн-машинах оно нужно) и мультиарч. Возможно, уже поисправляли: последний раз тыкал дебиан несколько лет назад.

А ещё apt-get не умеет ставить локальные пакеты, не из репозитория. И это обычно решается ужаснейшим костылем: dpkg -i <пакет> с последующим apt-get -f update.

А по поводу переписыания с питона на си - чтож, это кардинальное решение проблемы производительности.

«Детали реализации». Честно говоря, я не помню, на чём написаны инструменты деба.

Deleted
()

Хрен с ними с крестами, могли бы взять Go или OCaml, последний емнип и в редхате есть.

Но нет, редхатщики знают только три языка. Самых примитивных языка из мейнстрима.

anonymous
()
Ответ на: комментарий от staseg

Какая вообще разница, ты на телевизоре что ли компилировать будешь?

имхо не корректное сравнение, моя домашняя файлопомойка, она же роутер на двух провайдеров l2tp (память кушать любит), она же вместилише 2-х lxc (debian плюс совсем легковесный с несколькими демонами), ipsec сервер, клиент нескольких openvpn (тут уже камешек) и еще по мелочи - куда слабее современных телевизиров.

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

Вот подпишусь. Написано все верно, прям как по учебнику.... Хм, это я сказал «по учебнику»?

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от Deleted

А ещё apt-get не умеет ставить локальные пакеты, не из репозитория.

Емнип уже умеет. За пруфами можно сходить в новость о последнем релизе apt

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

А apt-get как будто не спрашивает! Как впрочем, и любой другой ПМ.

Deleted
()
Последнее исправление: ecko (всего исправлений: 1)

Никогда не поздно одуматься ;)

paran0id ★★★★★
()

Согласен. Больше скорости никогда не помешает.

xwicked ★★☆
()

Это, конечно, круто, но зачем?

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

редхатчики пишут цейлон, справедливости ради к ним

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

На C будет бестрее, чем на питоне.

Ой, да ладно... А ви проверяли? Я вот например знатных «программ» на С от автоматизаторов в свое время насмотрелся, где может быть цикл на н-цать итераций по факту ничего не делающий, но кущающий процессорное время, все потому что никто не читай, просто дописывай, а старое не трогаем. Это памятники костыле-строению. btw когда впервые узнал о возможности разработки на java испытал смешанные чувства, с одной стороны мое личное общение с java не вызвало «восторга», но с другой стороны для автоматизаторов как раз самое то, во много раз меньше шансов «выстрелить в ногу» а в автоматизации это оборачивается весьма серьезными последствиями, это не домашний десктопчик упал.

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

Как насчёт systemd на яве?

Да оно уже где-то там (я про ынтерпрайз жабы праграмистов), там что плохой вброс... вот на brainfuck покатило бы, имхо хуже не будет.

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

Не прошло и 20 лет.

С помощью auto теперь работает вывод типов компилятором, а с помощью for теперь можно проходить по всем элементам контейнера с итераторами :-) Скоро можно будет инклюды в современном, где до сих пор надо уделять время стражам включения и разноске объявлений с определениями врукопашную, пусть даже с помощью IDE, но врукопашную, заменить на модули :-) Прошло, всего лишь, около 30 лет :-) Лол :-)

anonymous
()

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

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

В принципе так оно и есть. По факту же быструю функциональщину надо уметь написать. То же разрешение зависимостей, по сути, банальная алгоритмика, и её надо писать не только красиво и лаконично, но и эффективно. И в этом случае две строчки на Хаскеле лёгким движением руки превращаются в чудное нагромождение императивщины, ибо сами алгоритмы (и в первую очередь то самое разрешение зависимостей) императивны до мозга костей.

Поэтому пишут сразу на сишке, чтобы не заморачиваться.

drs
()
Ответ на: комментарий от grem

Так тут толпами ходили и, вроде, начали переписывать... вот только никого из тех не видно давно :\

fang90 ★★★★★
()
Последнее исправление: fang90 (всего исправлений: 1)
Ответ на: комментарий от special-k

Пока Canonical пилит Ubuntu Touch, RedHat продолжает заниматься переписыванием

Про systemd тоже так говорили, а закончилось тем что в Canonical выбросили всё напиленное непосильным трудом ибо пила оказалась коротковата напили хер знает чего и перешли на написанное в RH. Так что ты это, не рассказывай нам про пильщиков из Canonical.

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

Примерно те же самые лет 5 назад, yum при обновлении php на CentOS, неизвестно с какого перепугу молча снёс вообще всю систему, включая и себя. В итоге, машина находившаяся на тот момент в продакшене, была потеряна на продолжительное время.

Это как же надо было издеваться над yum'ом, php и центосью, чтобы такого достичь?

Если что, обновлял не я, а человек с прямыми руками. Повторить потом такое не смогли.

Феноменально прямые руки у человека!

dexpl ★★★★★
()

Где обоснование, почему не Cython?

t184256 ★★★★★
()

Х + 3 6 1 _ :) ;) ^

anonymous
()
Ответ на: комментарий от anc

Потоому, что на асме нужно писать 2 вещи: 1. то, что низя выразить на языке более высокого уровня; 2. то что должно ОЧЕНЬ быстр работать (вот недавно программный SPI писал).

shkolnick-kun ★★★★★
()
Ответ на: комментарий от Yossarian

На bash-e же! С LSB-совместимыми хеддерами и текстовыми логами! И назвать SysDInit!

А потом показать Лёне, и сказать, что это он в пьяном угаре наворотил...

shkolnick-kun ★★★★★
()

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

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

Установи emacs, удали emacs, выполни autoremove.

Посмотри количество установленных пакетов до и после.

В общем, у меня emacs даже после autoremove не удалялся. Как я понял, некоторые пакеты с чего то помечались, как «установленные вручную».

Deleted
()
Ответ на: комментарий от WARNING

неизвестно с какого перепугу молча снёс вообще всю систему, включая и себя.

жесть.

Если что, обновлял не я, а человек с прямыми руками. Повторить потом такое не смогли.

наверное, тогда эксклюзивную отраву пили? :-) (шутка).

samy_volosaty ★★★★★
()

Неплохо было бы ещё аргументы разработчиков сюда добавить. Какой толк переписывать такой прикладной софт на си?
Тут ведь не добиться хоть сколько-нибудь значимого прироста производительности и стабильности. Ну будет тысяча пакетов ставиться на полминуты быстрее.

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

Установи emacs, удали emacs, выполни autoremove.

т.е. удалить - это не совсем удалить? хорошо, что у меня portage...

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

rpm - это примерно как как ebuild, поверх которого висит yum/dnf (в opensuse - zypper) как и более высокоуровневый emerge.

grem ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.