Как запустить команду перед загрузкой с помощью apt-get?

Я имел ту же проблему в течение долгого времени теперь и все еще не мог выяснить точно почему. Мало того, что это происходит с моим ПК, это также происходит с моими мобильными устройствами, подключенными к той же сети. Почему это происходит?

8
13.04.2017, 15:36
5 ответов

Сначала определите, где APT-Get, используя , где apt-get или , который apt-get ; Я предполагаю, что это в / usr / bin / apt-get

Тогда создайте файл в / usr / local / bin / apt-get с этим контентом:

#!/bin/bash
# (commands to run before apt-get)
/usr/bin/apt-get "$@"

сейчас Chmod + x / usr / local / bin / apt-get .

Это должно выжить все обновления распределения, но не следует изменить поведение APT-Get (помимо выполнения команды, прежде чем делать что-либо еще). Как бонус, он может анализировать аргументы командной строки только для того, чтобы запустить команду, когда она действительно нужна.

(этот ответ основывается на ответе от Мухаммед ETEMADDAR , объединенный с обратной связью изру)

2
27.01.2020, 20:11

Используйте вырезать , чтобы извлечь нужные столбцы (предоставив нам номера столбцов), и sed , чтобы изменить текст:

grep ... | cut -d, -f2,9,10,11,26 | sed -e 's/CURRENCY/META/' -e 's/"//g'

выходы

20150518 11:36:09,7A104802E728,4529800000,123456789,META

Другой подход, так как ваши входные данные выглядят как хорошо сформированный CSV (игнорируя часть перед первой двоеточием), является использовать язык с надлежащим CSV-синтаксическим анализатором

grep ... | ruby -rcsv -ne '
    csv_text = $_[/(?<=:).+/]           # ignore up to the first colon
    row = CSV.parse_line csv_text       # parse
    out = row.values_at(1,8,9,10,25)    # extract your fields
    out[-1]["CURRENCY"] = "META"        # text replacement of last field
    puts CSV.generate_line out          # output                       
'
-121--166789-

Я сделал то же самое со мной сегодня вечером после использования Pendrivelinux Universal USB installer для создания загрузочного USB, однако моя проблема исчезла после того, как я попытался использовать утилиту rawrite (Я полагаю, что dd будет работать, если вы создаете USB в системе Linux)

-121--196138-

В файле .bashrc можно использовать псевдоним. Например, поместите в корневой файл .bashrc:

alias apt-get='echo blahblah && apt-get'

Аргументы командной строки будут автоматически добавлены в конец псевдонима.

Просто замените echo blahblah на требуемую команду.

Но в этом случае она работает только при выполнении команд как root (не sudo).

2
27.01.2020, 20:11

Сначала определите, где APT-Get, используя , где apt-get ; Я предполагаю, что это в / usr / bin / apt-get

как muru говорит, что вы можете создать скрипт имени APT-GET в / usr / local / bin / , который находится до / usr / bin в Debian и Ubuntu $ PATH . Затем добавьте следующий код ( / usr / local / bin / apt-get ):

#!/bin/bash
commands to run before apt-get
/usr/bin/apt-get "$@"

Спасибо Muru для предложения в качестве комментариев.

Другой способ:

Конечно, есть другой способ, который не лучше, чем предыдущий.

Вы можете MV / USR / BIN / APT-GET / USR / BIN / APT-GET2

Затем создайте файл в / usr / bin / apt-get с этим контентом :

#!/bin/bash
commands to run before apt-get
apt-get2 "$@"

Теперь CHMOD + X / USR / BIN / APT-GET

1
27.01.2020, 20:11

Сообщение об ошибке выдается apt-listbugs . Если вы очистите этот пакет (сейчас), вы сможете использовать aptitude или apt-get снова...

Затем можно попытаться переустановить apt-listbugs из репозиториев LMDE, но следует убедиться, что все их зависимости также являются версиями LMDE. Вы можете использовать apt-show-versions , чтобы определить, откуда ваши пакеты поступают из в массовом порядке .

-121--229495-

Кроме приведенных выше ответов, вы также можете использовать wifi-menu на Arch Linux. Он будет отображать графический интерфейс на основе интерфейса командной строки, и вы можете выбрать WiFi из списка WiFi, который будет показан. wifi-меню зависит от диалогового окна . Сначала необходимо установить его.

-121--5260-

Попробуйте использовать псевдоним в файле .bashrc . Он работает только при входе в учетную запись, которой соответствует файл. Синтаксис псевдонима:

alias newcommand = 'command1; command2; command3' Так что ваша линия может выглядеть немного так:

alias apt-get = 'firstcommand; apt-get '

Или это:

alias apt-get =' firstcommand & & apt-get '

Со второй apt-get будет выполняться только в том случае, если firstcommand выполняется успешно.

0
27.01.2020, 20:11

Как насчет использования хуков apt pre/post-invoke?

По сути, это похоже на dpkg pre/post-invoke hooks, но для apt (который, как я предполагаю, является важным в вашем сценарии использования). AFAIK есть и другие, но я использовал только этот.

Например,

$ sudo cat /etc/apt/apt.conf.d/05new-hook
APT::Update::Pre-Invoke {"your-command-here"};
5
27.01.2020, 20:11

Теги

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