LINUX.ORG.RU
ФорумTalks

Количество исходных пакетов в Arch

 


0

1

Не знаю, зачем вам эта информация, но вот вам статистика:

В Arch сейчас 12196 исходных пакетов - рецептов сборки.

Из них 249 пакетов имеют префикс lib32- - относятся к поддержке 32-битного юзерспейса.

Количество пакетов, имеющих префикс конкретного ЯП:

   1840 python-
   1170 haskell-
    635 perl-
     60 cargo-
     30 ocaml-

P.S.: Статистика построена на основе этого оглавления, по которому работает билд-ферма: https://gitlab.archlinux.org/archlinux/packaging/state

★★★

Последнее исправление: wandrien (всего исправлений: 1)

Продолжайте наблюдение

bdrbt
()

А реальных пакетов сколько? :)

Мне нравится, что некоторые пакеты не дробятся на мелочи, но некоторые пакеты не пойму. Несколько названий-один реальный пакет? Иногда ставлю ожно, появляется несколько пакетов имеющих один и тот же размер и ставящихся и удаляющихся только вместе. По моему qt и qtcreator так, с alsa связанные пакеты, вроде как е-то, ещё какие-то пакеты попадались. Это понятно, человек ищет А и не знает, что в арче А входит в состав Б. Это удобно. Но хотелось бы как-то видеть, что это реально один пакет, чтобы не ошибаться.

R_He_Po6oT ★★★★★
()

Вместе с chaotic-aur:

$ pacman -Sl | grep 'python-' | wc -l
2154

Другие не прверял

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

А что значит реальных?

По большей части это и есть реальные пакеты в том смысле, что за каждым рецептом сборки стоит скачиваемый откуда-то архив исходных кодов, либо запрос на клонирование в систему контроля версий.

А вот после сборки - происходит дробление.

Некоторые пакеты здесь это фактически один и тот же исходник - например, сборка компилятора с таргетом под разные платформы. Но таких мало.

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

Ну смотри, qtš-tools. В менеджере я вижу qt assistant, qt linguist и т.д. Это один пакет фактически. Ни одну из этих программ я не могу удалить отдельно, но показывается отдельно. Я про это.

R_He_Po6oT ★★★★★
()

Сколько волка не корми, а гентой он не станет.

dimgel ★★★★★
()

Доверяй, но проверяй:

❯ find *x86_64 -type f | grep -vE '/lib32' | wc -l
8189
rtxtxtrx ★★★
()
Ответ на: комментарий от firkax

Он ещё магическим способом посчитал все. Без дублей, включая 32-битные префиксы, 8055 пакетов:

❯ find *x86_64 -type f | grep -vE '/lib32' | cut -d'/' -f2 | sort -u | wc -l
8055

Я не учел, что в any шрифты…

find . -type f | cut -d'/' -f3 | sort -u | wc -l
12201

Это без повторов. Там просто в тестинг и прочих есть то же самое. В конфиге пакмана, какая репа ниже, из той пакет и ставится

rtxtxtrx ★★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 3)

1840 python-

А зачем так делают вообще? Только путаницу создают и себе мейнтейнерской работы наваливают лопатой.

Раньше был один способ поставить какой-нибудь pyusbpip install pyusb, теперь появилось pacman -Sy python-pyusb, apt install python-pyusb в итоге неоднозначность, непонятно какую версию PyUSB будет юзать скриптец, как обновить системную если мейнтейнеры тормозят и пр.

1170 haskell-

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

Нет, я понимаю там некую философию «всё должно управляться системным пакетным менеджером, даже небо и Солнце», но в крайности-то зачем ударяться? Тем более что мейнтейнеры реп языка знают наверняка лучше все особенности разрабатываемой ими системы чем васяны дистростроители.

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

Тогда так:

echo "Всего: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | wc -l)"
echo "Из них:"
echo "Python: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^python($|-)' | wc -l)"
echo "Perl: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^perl($|-)' | wc -l)"
echo "Haskell: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^haskell($|-)' | wc -l)"
echo "Ruby: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^ruby($|-)' | wc -l)"
echo "Node.js: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^(node|nodejs|npm)($|-)' |
echo "Rust: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^(rust|cargo)|-rust$' | wc -l)
echo "Golang: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^(go-|golang)|-go$' | wc -l)
echo "PHP: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^php($|-)' | wc -l)"
echo "Zsh: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^zsh' | wc -l)"
echo "Bash: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^bash' | wc -l)"
echo "Fish: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^fish' | wc -l)"
echo "Dash: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^dash($|-)' | wc -l)"
echo "Vim: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^vim' | wc -l)"
echo "Шрифтов: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^(ttf|otf)-' | wc -l)"
echo "32-битные префиксы: $(find */. -type f 2>/dev/null | cut -d'/' -f3 | sort -u | grep -P '^lib32-' | wc -l)"
Всего: 12190
Из них:
Python: 1831
Perl: 636
Haskell: 1170
Ruby: 424
Node.js: 11
Rust: 76
Golang: 10
PHP: 11
Zsh: 8
Bash: 8
Fish: 3
Dash: 1
Vim: 34
Шрифтов: 45
32-битные префиксы: 249
rtxtxtrx ★★★
()
Ответ на: комментарий от rtxtxtrx

Самое забавное, что haskell в арче ради этого:

 sudo pacman -S shellcheck
resolving dependencies...
looking for conflicting packages...

Packages (54) ghc-libs-9.4.8-1  haskell-aeson-2.1.2.1-179  haskell-ansi-terminal-1.0.2-148
              haskell-ansi-terminal-types-0.11.5-188  haskell-assoc-1.1.1-39  haskell-attoparsec-0.14.4-171
              haskell-base-compat-0.14.1-1  haskell-base-compat-batteries-0.14.1-32
              haskell-base-orphans-0.9.3-76  haskell-bifunctors-5.6.2-54  haskell-colour-2.3.6-398
              haskell-comonad-5.0.9-117  haskell-contravariant-1.5.5-5  haskell-data-fix-0.3.4-134
              haskell-diff-0.5-30  haskell-distributive-0.6.2.1-402  haskell-dlist-1.0-380
              haskell-erf-2.0.0.0-26  haskell-fgl-5.8.3.0-96  haskell-foldable1-classes-compat-0.1.2-48
              haskell-generically-0.1.1-84  haskell-hashable-1.4.7.0-11
              haskell-indexed-traversable-0.1.4-172  haskell-indexed-traversable-instances-0.1.2-121
              haskell-integer-logarithms-1.0.4-134  haskell-onetuple-0.4.2-174
              haskell-optparse-applicative-0.18.1.0-242  haskell-os-string-2.0.8-80
              haskell-prettyprinter-1.7.1-352  haskell-prettyprinter-ansi-terminal-1.1.3-454
              haskell-primitive-0.9.1.0-104  haskell-quickcheck-2.15.0.1-81  haskell-random-1.2.1.3-167
              haskell-regex-base-0.94.0.3-2  haskell-regex-tdfa-1.3.2.5-3  haskell-scientific-0.3.8.0-138
              haskell-semialign-1.3.1-49  haskell-semigroupoids-6.0.1-93  haskell-splitmix-0.1.2-60
              haskell-statevar-1.2.2-4  haskell-strict-0.5.1-6  haskell-tagged-0.8.9-2
              haskell-tasty-1.5.2-52  haskell-text-short-0.1.6-172  haskell-th-abstraction-0.5.0.0-1
              haskell-these-1.2.1-215  haskell-time-compat-1.9.8-18  haskell-transformers-compat-0.7.2-3
              haskell-unordered-containers-0.2.20.1-9  haskell-uuid-types-1.0.6-213
              haskell-vector-0.13.2.0-310  haskell-vector-stream-0.1.0.1-3  haskell-witherable-0.4.2-226
              shellcheck-0.11.0-68

Total Download Size:    28.93 MiB
Total Installed Size:  209.73 MiB
rtxtxtrx ★★★
()
Ответ на: комментарий от EXL
 sudo /usr/bin/pip install viola
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
    python-xyz', where xyz is the package you are trying to
    install.

    If you wish to install a non-Arch-packaged Python package,
    create a virtual environment using 'python -m venv path/to/venv'.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip.

    If you wish to install a non-Arch packaged Python application,
    it may be easiest to use 'pipx install xyz', which will manage a
    virtual environment for you. Make sure you have python-pipx
    installed via pacman.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification

Я не хочу это продолжить… Но по-моему в бубунте так же будет:

 % sudo apt install python3-pip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  python3-docker python3-dockerpty python3-docopt python3-dotenv python3-texttable python3-websocket
  wmdocker
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  build-essential dpkg-dev fakeroot g++ g++-11 gcc gcc-11 javascript-common libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan6 libatomic1 libc-dev-bin libc-devtools libc6-dev
  libcc1-0 libcrypt-dev libexpat1-dev libfakeroot libgcc-11-dev libgd3 libitm1 libjs-jquery libjs-sphinxdoc
  libjs-underscore liblsan0 libnsl-dev libpython3-dev libpython3-stdlib libpython3.10-dev libstdc++-11-dev
  libtirpc-dev libtsan0 libubsan1 linux-libc-dev lto-disabled-list manpages-dev python3 python3-dev
  python3-minimal python3-wheel python3.10-dev rpcsvc-proto zlib1g-dev
Suggested packages:
  debian-keyring g++-multilib g++-11-multilib gcc-11-doc gcc-multilib autoconf automake libtool flex bison
  gdb gcc-doc gcc-11-multilib gcc-11-locales apache2 | lighttpd | httpd glibc-doc libgd-tools
  libstdc++-11-doc python3-doc python3-tk python3-venv
The following NEW packages will be installed:
  build-essential dpkg-dev fakeroot g++ g++-11 gcc gcc-11 javascript-common libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan6 libatomic1 libc-dev-bin libc-devtools libc6-dev
  libcc1-0 libcrypt-dev libexpat1-dev libfakeroot libgcc-11-dev libgd3 libitm1 libjs-jquery libjs-sphinxdoc
  libjs-underscore liblsan0 libnsl-dev libpython3-dev libpython3.10-dev libstdc++-11-dev libtirpc-dev
  libtsan0 libubsan1 linux-libc-dev lto-disabled-list manpages-dev python3-dev python3-pip python3-wheel
  python3.10-dev rpcsvc-proto zlib1g-dev
The following packages will be upgraded:
  libpython3-stdlib python3 python3-minimal
3 upgraded, 43 newly installed, 0 to remove and 97 not upgraded.
Need to get 57.9 MB of archives.
After this operation, 201 MB of additional disk space will be used.
Do you want to continue? [Y/n]

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

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

Раньше был один способ поставить какой-нибудь pyusb – pip install pyusb, теперь появилось pacman -Sy python-pyusb, apt install python-pyusb в итоге неоднозначность, непонятно какую версию PyUSB будет юзать скриптец, как обновить системную если мейнтейнеры тормозят и пр.

Всё установленное общесистемно должно быть учтено в системном пакетном менеджере. И никакие pip-ы (и прочие самодельные пакетные псевдоменеджеры) туда лезть не должны.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)