Как загрузить пакет Debian в репозиторий, когда у вас есть только файл .deb?

Я думаю, для этого вам нужен более тяжелый язык программирования. Python - мой язык выбора, поэтому вот простой скрипт с простым примером теста:

import sys

tests = [
    lambda a, b, c, d, e: a+1==b and b+1==c and c+1==d and d+1==e,
]

with open(sys.argv[1]) as f:
    for line in f:
        if any(t(*map(int, line.split(','))) for t in tests):
            sys.stderr.write('Line removed: %s\n' % line)
            continue
        print line

Это, очевидно, только скелетный пример тестов, но он должен использоваться. Запустите нормально, он выведет только строки, которые не соответствуют STDOUT, и те, которые относятся к STDERR. Это делает его полезным для перенаправления в новый файл.

Здесь он находится в действии:

$ python patterns.py <(echo -n 1,2,3,4,5)
Line removed: 1,2,3,4,5

$ python patterns.py <(echo -n 1,2,4,4,5)
1,2,4,4,5

Как только вы загрузили его шаблонами, вы можете просто передать его csv: python patterns.py input.csv

Что касается производительности, Python не всегда самый быстрый. my использует его, потому что он более чем достаточно быстрый для веб-разработки, и время для написания намного быстрее (это то, что стоит мне время / деньги).

Вы можете ускорить процесс с PyPy. Это альтернативная среда исполнения Python, которая отлично изучает. Возможно, вам не нужна версия PPA (Trusty ships 2.2, PPA - 2.3.1), но вот как вы это сделали:

sudo add-apt-repository ppa:pypy/ppa
sudo apt-get update
sudo apt-get install pypy

Затем вы запустили свой скрипт с помощью pypy script.py или если вы его выполнение напрямую изменяет открывание shebang на #!/usr/bin/env pypy. Я провел очень простое тестирование на входном файле с 350000 строк (ваш пример с удивительным успехом ) с вышеупомянутым скриптом.

python2 запустил его в 1.417s и pypy запустил его в 0.645s. По моему опыту, вы, вероятно, увидите еще большее улучшение с более сложными algos.

... Но да, ничто из этого не будет бить эквивалент C / C ++. Если время, затрачиваемое на запуск, это деньги, потратьте некоторое время на повторное выполнение этого на более быстром языке.

0
задан 19 November 2017 в 03:02

3 ответа

С reprepro вам не нужен файл изменений для загрузки файла deb. Есть подкоманда includedeb:

$ reprepro -b /var/www/repo includedeb xenial grep_3.1-2\~16.04.york0_amd64.deb
Exporting indices...
$ cd /var/www/repo; find pool
pool
pool/main
pool/main/g
pool/main/g/grep
pool/main/g/grep/grep_3.1-2~16.04.york0_amd64.deb

Измените -b /var/www/repo, чтобы найти место, где находится ваш корневой каталог reprepro.

1
ответ дан 22 May 2018 в 16:22

С reprepro вам не нужен файл изменений для загрузки файла deb. Есть подкоманда includedeb:

$ reprepro -b /var/www/repo includedeb xenial grep_3.1-2\~16.04.york0_amd64.deb Exporting indices... $ cd /var/www/repo; find pool pool pool/main pool/main/g pool/main/g/grep pool/main/g/grep/grep_3.1-2~16.04.york0_amd64.deb

Измените -b /var/www/repo, чтобы найти место, где находится ваш корневой каталог reprepro.

1
ответ дан 18 July 2018 в 03:33

С reprepro вам не нужен файл изменений для загрузки файла deb. Есть подкоманда includedeb:

$ reprepro -b /var/www/repo includedeb xenial grep_3.1-2\~16.04.york0_amd64.deb Exporting indices... $ cd /var/www/repo; find pool pool pool/main pool/main/g pool/main/g/grep pool/main/g/grep/grep_3.1-2~16.04.york0_amd64.deb

Измените -b /var/www/repo, чтобы найти место, где находится ваш корневой каталог reprepro.

1
ответ дан 24 July 2018 в 17:52

Другие вопросы по тегам:

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