Создание пакетов Linux для нескольких дистрибутивов и версий

Извлеките значения из текста элемента скрипта, как если бы вы делали это из строки:

function extractor(names) {
  const r = new RegExp(names.map(n => `\\b(${n}):\\s*'(.*?)'`).join('|'), 'g');
  for (const script of document.getElementsByTagName('script')) {
    const text = script.textContent;
    let match = r.exec(text);
    if (match) {
      const vars = {};
      do {
        const [/*source*/, name, value] = match;
        vars[name] = value;
        match = r.exec(text);
      } while (match);
      return vars; 
    }
  }  
}

При использовании всплывающего окна расширения для извлечения из веб-страницы нам нужна вспомогательная функция, которая запускает код в качестве сценария содержимого:

function extractPageScriptVars(names) {
  return new Promise(resolve => {
    chrome.tabs.executeScript({
      code: '(() => (' + extractor + ')(' + JSON.stringify(names) + '))()',
    }, ([vars]) => resolve(vars));
  });
}

Использование:

(async () => {
  const vars = await extractPageScriptVars(['AAA', 'BBB']);
  alert(JSON.stringify(vars, null, '  '));
})();

Если сценарий содержит допустимый объект JSON / JS, вы можете найти его начальный / конечный индексы и извлечь всю декларацию string, затем проанализируйте его с помощью JSON.parse, который создает объект / массив, который вы можете использовать напрямую.

9
задан gareth_bowles 12 May 2009 в 21:40
поделиться

5 ответов

Возможно, для начала вам стоит изучить следующие проекты:

Служба сборки Novell

Fedora Koji

3
ответ дан 4 December 2019 в 23:41
поделиться

You can use LSB appchecker to test your application/dynlib/shell script compatibility. After that you can use RPM for all RPM distribution and use alien for all apt-get distribution and tar.gz for other

2
ответ дан 4 December 2019 в 23:41
поделиться

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

1
ответ дан 4 December 2019 в 23:41
поделиться

В зависимости от того, что именно делает ваше программное обеспечение и какие зависимости (если таковые имеются) оно имеет от локальных библиотек, вы можете собрать свое программное обеспечение, используя более старый дистрибутив glibc, и заставить его работать во многих различных раздачи. Это то, что мы делаем с InstallBuilder . Если у вас нет зависимостей от конкретных пакетов, также можно создать пакеты RPM или DEB, которые будут работать в большинстве дистрибутивов Linux на основе RPM или DEB. Кросс-Linux разработка, в любом случае, это непросто :) Удачи!

0
ответ дан 4 December 2019 в 23:41
поделиться

Это один из случаев, описанных Бобом Айелло в этой статье об агентах сборки. У нас есть несколько клиентов, которые используют этот подход для параллельного построения нескольких платформ.

0
ответ дан 4 December 2019 в 23:41
поделиться
Другие вопросы по тегам:

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