LINUX.ORG.RU
ФорумTalks

Gentoo: portconf live

 ,


3

0

Вроде допилил.
живёт в stuff и тут --> https://github.com/megabaks/portconf
собственно что делает:

  • сортирует в алфавитном порядке атомы - для удобства ручной правки
  • юзы:
    • оставляет только последнее состояние юза(on/off)
    • удаляет юз, если он имеет то же состояние что и в профиле/make.conf
    • удаляет некорректные юзы, причём проверяет юзы для всех версий, а не только для распоследних версий ( привет portpeek :3 )
    • т.к. портаж криво работает с камментами в конце строки, то перед # добавляется пробел, ежели такого не имеется
    • удаляет юз из make.conf, если он задействован в профиле
  • удаляет неустановленные и не найденные атомы. ищется овер eix - т.е. в оверлеях тоже. переключалки из '<>=~' так же учитываются
  • удаляет некорректные атомы, типа '> ololo trololo'
  • может перегонять из файлов в диры и обратно. диры получаются вида package.*/${CATEGORY}, куда и попадают атомы этой категории
  • бекап и откат:
    • бекап создаётся только если /etc/portage обновился после создания последнего бекапа или если бекапов вообще нет.
    • по умолчанию сохраняется 10 тарболов - можно покрутить овер конфиг
    • бекапы создаются при использовании любых опций, кроме хелпа и отката

eix обязателен!
жду мата :3

★★★★

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

питон наркоманский, следовательно ненаркоман != Ъ. лор как всегда радует логичностью.

а хде надо было?

на локалхосте.

в дев-е не место - вопрос не про «как» же...

как и куда - это одно и то же. (=

почему-то я вспомнил про котэ :3

ну наркоман же! это компенсирует непитоновость сабжа.

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

вот настрочить 3 поста с говнами не лень, а прочитать пяток постов трудно...
у вас словесный понос, да!?
так и сказал бы...

megabaks ★★★★
() автор топика

удаляет юз из make.conf, если он задействован в профиле

а если ня-девелоперы-генты поменяют профиль?

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

а, сделал
и добавил проверку обновления для /etc/make.conf, раз уж в тарбол попадает

megabaks ★★★★
() автор топика

Так пишут скрипты только мегабаксы.

Когда я открываю скрипт (а я всегда читаю то, что собираюсь выполнять), то ожидаю наверху увидеть, как этот скрипт называется, и желательно уже из названия понять, что этот скрипт делает, или прочесть об этом дальше. Как вызывается, с какими опциями, где его дом, как его обновлять. И только потом — лицензию, копирайт и всё прочее, что автор решил указать на свой вкус. Здесь же мне надо прохуячить до самого низу.

usage: portconf [OPTION] [OPTION]…[OPTION]

= «Вызывай меня хоть вообще без опций». А так он ничего не делает, только портит мне терминал, выкидыванием в папку с активным профайлом. И usage с большой буквы, тут предложение начинается.

--help/-h/-?/h: This help.

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

--restore/-r: Rolling up /etc/portage to one of the available states.

Каких состояний? Почему не указано? Где modprobe libastral.so? «The» применяют, когда понятно, о чём речь.

--backup/-b: Create a backup for of the current /etc/portage state (enabled in the all following options).

Ну размаха-ал. А если у меня терминал ограничен 80 символами в ширину, мне дочитывать описание в колонке опций?

--sort/-s: Sort entries alphabetically.
--use-sort/-us: Sort useflags.

Чем они отличаются? Если --use-sort сортирует юз-флаги, то чем являются «вхождения» в просто --sort?

--use-invalid/-ui: Delete invalid or global enabled useflags from package.use.

Здесь package.use может быть и папкой и файлом? Сейчас читается как «да».

--use-full/-uf: An analog to '-us -ui -um'.

-trash/-t: Delete not_founded/not_installed entries.

Опять какие-то вхождения…

--rm-comments/-c: Delete lines starting with a comment.

--full/-f: An analog to '-s -t -fu'

(Такой порядок лучше :3)
А где -p|--pretend вообще?

for opt in ${@};do

Кошма~р.

Диагноз: запускать пока ссыкатно.

Deleted
()
Ответ на: Так пишут скрипты только мегабаксы. от Deleted
[ root@desktop ] megabaks # realpath .
/home/megabaks
[ root@desktop ] megabaks # portconf 
[ root@desktop ] megabaks # realpath .
/home/megabaks
[ root@desktop ] megabaks # 

ещё и балабол
а претенда и не будет - есть бекапы
ссы дальше

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

как хачю так и пешу

Окей, только меня больше не кастуй.

ещё и балабол

Ты думал, я эту гору костылей от рута запускать что ль буду? Ещё чего.

а претенда и не будет - есть бекапы

И что, мне их потом вручую обратно распаковывать? В нормльных программах есть интерактивный режим и/или pretend.

ссы дальше

Температура струи 27°C. Кипяточку бы.

Deleted
()

жду мата :3

После первого запуска с опцией -f старательно грохнул ВСЕ записи во всех файлах. А все потому что отродясь я eix не пользовал. Может при запуске portconf проверять актуальность базы eix и обновлять ее? Или просто обновлять при каждом запуске.

Еще реквестирую возможность указывать «защищенные» файлы. Так, у меня в package.keywords лежит файл со всеми пакетами kde. Поскольку я все кеды не собираю, часть файла была вырезана.

После eix-update при повторном запуске portconf вроде бы ничего не сломалось, кроме указанной выше неприятности с кедами

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

вроде бы ничего не сломалось

Вру Обновление мира ломается. Нет времени сейчас искать причину, попробую завтра вечером похимичить

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

и читай как следует справку - там написано про force

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

этот сраный претенд равнозначен куче левого кода
потому не будет
есть бекапы

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

ломает потому что ты не читаешь то, что тебе написали

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

кстати, проверил на дирах - ничего не ломает, как и на файлах

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

eix обязателен!

Это я видел. Не видел, что надо eix-update сделать.

и читай как следует справку - там написано про force

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

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

запилил проверку eix и его кэша

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

запилил игнор:
будет работать через переменные, записанные в конфиг или же определённые перед portconf
примеры

IGNORE_CATEGORY="ololo trololo"
IGNORE_PN="hello lor"
запускать без конфига так:
IGNORE_CATEGORY="ololo trololo" portconf опции

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

Так, у меня в package.keywords лежит файл со всеми пакетами kde. Поскольку я все кеды не собираю, часть файла была вырезана.

этого быть не должно
либо же там указаны пакеты, которых больше нет в составе кед - например, oxygen-icons, activitymanager и что-то там ещё - в районе 10 пакетов

megabaks ★★★★
() автор топика

Завтра-послезавтра полистаю, посмотрим, чего там как. У меня порядок в юзах своими костылями наводится, но как-то всё постаринке(один package.use на всё про всё). Думал уже перепилить всё, а раз уже есть готовое, то стоит попробовать.

shell-script ★★★★★
()

Есть один фичереквест.

А можно сделать так, чтобы он, если видит коммент/комменты перед, например, use-флагом, не убивал бы их, а перенёс в новый конфиг? А то, есть опции, которые я, например, ставлю временно или по каким-то неочевидным причинам и терять комменты к ним, не желательно. Реализация не должна быть особо сложной, если что, могу сам поковырнуть и патчик сделать на выходных.

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

сохраняются камменты только в конце строки
иначе не понятно как привязывать строку с камментом - она *над* или *под* комментируемой строкой?
опять же - по какому признаку выбирать такие камменты?
по атому? не прокатит
по юзу? тем более
вот потому остаются только inline камменты

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

Ну изначально я обычно писал коменты по принципу

# коммент
опция
Сейчас подумал, да, не всем удобно будет + неясно, что делать с многострочными комментами.

А почему по атому не прокатит? Если, например, договориться, что в комменте после решётки идёт полное название атома и какое-нибудь там двоеточие и дальше уже что угодно, а в конце какое-нибудь тоже оговоренное завершение. Комменты, оформленные иначе игнорировать. Кому надо, тот осилит. Получится что-то типа такого:

# app-portage/portconf: /etc/portage/ manager
# It works.
# EOFCOMMENT
app-portage/portconf foo -bar

Не перле такое вообще реализовать проще простого, но тут можно будет подумать, чем распарсить из баша(sed/awk).

Просто не люблю я inline-комменты. :)

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

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

megabaks ★★★★
() автор топика

Сейчас проверяю работу portconf. Для чистоты эксперимента сделал обновление (либреофис не обновлял, иначе только через неделю проверить скрипты смогу) и проверил работу emerge -e world, чтобы ошибок не выдавал (добавился еще одни юз к одному из пакетов).

Затем запустил portconf -f (а чего мелочиться, тестируем же). Итог - http://pastebin.com/dPftEhDR

Собственно ошибка:

Calculating dependencies... done!
 
!!! The ebuild selected to satisfy ">=media-libs/sdl-mixer-1.2[vorbis]" has unmet requirements.
- media-libs/sdl-mixer-1.2.12-r1::gentoo USE="(consolekit) flac mad mikmod mp3 (multilib) (policykit) vorbis wav -fluidsynth -midi -mod -modplug -playtools -smpeg -static-libs -timidity"
 
  The following REQUIRED_USE flag constraints are unsatisfied:
    mikmod? ( mod )
 
  The above constraints are a subset of the following complete expression:
    midi? ( any-of ( timidity fluidsynth ) ) timidity? ( midi ) fluidsynth? ( midi ) mp3? ( any-of ( smpeg mad ) ) smpeg? ( mp3 ) mad? ( mp3 ) mod? ( any-of ( mikmod modplug ) ) mikmod? ( mod ) modplug? ( mod )
 
(dependency required by "games-strategy/wesnoth-1.10.4" [ebuild])
(dependency required by "@selected" [set])
(dependency required by "@world" [argument])

Возвращение в package.mask строки media-libs/sdl-mixer-1.2.12* не помог. Так что теперь буду последовательно запускать portconf с разными параметрами, чтобы понять, где ломается Сейчас по очереди буду проверять отдельные ключи, чтобы понять, в чем косяк

Да, с кедами проблемы и не было - у меня размаскированы были пакеты в версиями 4.9.0, так что удалились неустановленные, как и должно быть - в дереве то ебилдов их уже нет

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

Возвращение в package.mask строки media-libs/sdl-mixer-1.2.12* не помог

false. Забыл = перед этим добавить. Теперь все ок. Т.е. на данный момент имеем следующий баг:

Не нужно удалять из package.mask конструкции типа =media-libs/sdl-mixer-1.2.12*

Portconf опознает в этой строке несуществующий ебилд, а он есть

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

Черт, это не конец.

Checking use flags in package.use/package.use:
Global or invalid use: app-office/libreoffice: gtk				[ ok ]
Global or invalid use: media-gfx/ufraw: gtk					[ ok ]
Global or invalid use: media-gfx/ufraw: hotpixels				[ ok ]
Global or invalid use: media-gfx/ufraw: lensfun					[ ok ]
Global or invalid use: media-libs/libcanberra: gtk				[ ok ]
Global or invalid use: media-video/mkvtoolnix: wxwidgets			[ ok ]
Global or invalid use: net-irc/quassel: phonon					[ ok ]
Global or invalid use: net-p2p/amule: gtk					[ ok ]
Global or invalid use: net-p2p/deluge: gtk					[ ok ]
Global or invalid use: net-p2p/deluge: libnotify				[ ok ]
Global or invalid use: www-plugins/adobe-flash: nspluginwrapper			[ ok ]
Removing atom: media-libs/libcanberra						[ ok ]
Removing atom: media-video/mkvtoolnix						[ ok ]
Removing atom: net-p2p/deluge							[ ok ]
Removing atom: www-plugins/adobe-flash						[ ok ]

Внимание на массовую ненависть к gtk. При обновлении мира после этого у меня ufraw и deluge останутся без гуйни.

Очевидно, юз корректный и существует у данных пакетов. Как узнать, почему portconf решил его удалить?

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

и на будущее
=media-libs/sdl-mixer-1.2.12* не нужно
для этого придумали
~media-libs/sdl-mixer-1.2.12

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

т.е. записан в make.conf или профиле

Но при этом при обновлении мира portage предлагает пересобрать эти пакеты без gtk.

Ога! В профиле, кажись. А в make.conf записано -gtk. Тулкитофобия на ранних порах освоения Gentoo. С тех пор и тянется

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