Як вибрати пакети, що починаються з "mate-", але не закінчуються з "-dev"?


5

Я хочу встановити всі пакети MATE,

$ sudo apt-get install '^mate'

Однак він вибирає занадто багато пакетів, а деякі пакети суперечать деяким встановленим.

Тепер я хочу їх виключити. Будь-яка ідея?

Не дивно, це не спрацює:

$ sudo apt-get install '^mate && !-dev'

Або я можу просто дозволити apt-get ігнорувати ці конфліктні пакети?

Відповіді:


1

Ви можете спробувати щось на кшталт:

list="" ; for pkg in $(apt-cache search ^mate | grep -v -- '-dev'); list="$list $pkg" ; done ; sudo apt-get install $list

1
apt-кеш-пошук не підтримує ^, ну, може, коротше? sudo apt-get install $(apt-cache search ^mate | grep ^mate | grep -v -- '-dev' | cut -d' ' -f1)
Xiè Jìléi

ах, спасибі Я працював з пам'яттю, без "влучної", використовуючи систему для тестування прямо зараз. :)
Тім Кеннеді

5

Ви можете передати звичайний вираз лише як аргумент apt-get install.

Ви можете скласти регулярний вираз, який робить те, що ви хочете, але це нудно. Заперечення регулярного виразу може бути виражене регулярним виразом, але розмір регулярного вираження комплементу зростає в експоненціальній залежності від розміру оригіналу в цілому.

apt-get install '^mate(.?.?.?|.*([^v]|[^e]v|[^d]ev|[^-]dev))$'

Ви можете використовувати шаблони пошуку Aptitude для генерування списку пакетів із напівпристойним синтаксисом та передачі отриманого списку до apt-get installабо aptitude install.

aptitude search '^mate !-dev$'

0

Я і сам поставив це питання. Я спробував негативні диски, але apt-get не зрозумів їх. Тому я шукав інший спосіб, щоб архівувати той же результат і знайшов відповідь тут. Тим не менше, оскільки вибране рішення використовує греп, ви можете використовувати lookaheads і скоротити вирази serach, з точки зору дзвінків, навіть більше:

apt-cache search '^mate' | grep -P '^mate(?!.*dbg)(?!.*dev).*'

І майте на увазі, що пакети Mates, такі як atril, не починають з товариша на початку їх імені. Вони навіть не містять його взагалі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.