В сегодняшней реальности практически не бывает IT без интернета. Всё, чем мы пользуемся, ставится и обновляется из интернета, заливается обратно в интернет. А если доступа к интернету вдруг не станет? Если вдруг вас позовут в срочную миссию на Марс. Или в длительную IT-робинзонаду на таинственный остров, куда каждому участнику можно взять на флешке только что-то одно из софта. Или вообще никуда не позовут, а просто заботливо и скрепно-надзорно будут пытаться обрубить все неуставные каналы связи с внешним миром. Пусть это будет остров - там тепло, кокосы и вкусные креветки. И речь не про выживание в физическом плане; еда, жильё, оборудование и развлечения - всё там есть. А про выживание в качестве IT-специалиста, которому нужно относительно комфортно пережить время без связи с внешним миром и при этом быть работоспособным и продуктивным. Что если взять с собой... Arch Linux? Да, определённо, это может быть Арч! Арч простой и удобный; сам по себе не имеет версии, но в его репозиториях всегда более-менее свежие стабильные версии софта. Официальные репозитории не так велики, но в них встречаются полезные вещи, которые в остальных линуксах приходится скачивать и устанавливать по-отдельности (либо подключая сторонние репозитории). Да, в Арче есть проприетарный софт. Но это удобно. И честно. Это отличает его от многих дистрибутивов, которые формально содержат и пропагандируют только "free software", но тут же лицемерно предлагают официальную инструкцию и лазейку как эти принципы обойти и нарушить. Копия репозиториев Арча умещается (пока что) на 64GB флешке. Самый простой способ создать себе локальную копию репозитория с пакетами - сделать rsync с одним из живых официальных зеркал. Узнать список и проверить статус зеркала можно на страничке Mirror Status. Их там сотни. Для примера взят сервер яндекса. Создать зеркало можно вот таким простым скриптом: archlinux-mirror.sh В данном случае скачиваются только стабильные (не тестовые) пакеты из официальных Арч-репозиториев. Такое зеркало не содержит пользовательских AUR (Arch User Repository) пакетов. В каталоге "iso" находится актуальный образ Арча для установки. Чтобы оценить размер и количество скачиваемых файлов, можно добавить параметр --dry-run. При этом реального скачивания не произойдёт, но покажется статистика, насколько локальное зеркало отстаёт от удалённого. Репозитории Арча обновляется очень интенсивно. Вот немного статистики по репозиториям за 2022-02-22: Репозиторий Количество пакетов Размер, MB core 247 1070 extra 2986 9363 community 9049 42964 multilib 277 407 всего 12559 53805 Суммарная статистика за некоторые даты в прошлом: Дата Количество пакетов Размер, MB 2020-12-25 11436 45182 2022-02-02 12497 53598 2022-02-20 12542 53769 И сравнение их с 2022.02.22: Дата Дни Изменилось пакетов Размер изменения, MB 2020-12-25 424 10521, 84% 48497, 90% 2022-02-02 20 2950, 23% 15188, 28% 2022-02-20 2 188, 1.5% 870, 2% Пакеты постоянно добавляются, свежие версии заменяют собой старые (старые при этом удаляются), иногда пакеты просто удаляются (не оставляя себе альтернативы). За пару лет меняется порядка 98% содержимого репозиториев. Итак, для хранения файлов зеркала понадобится около 60 гигабайт места на диске. Можно скачать всё, а можно сэкономить немного, исключив заведомо ненужные пакеты с локализациями приложений (типа "firefox-developer-edition-i18n-jp" или "gimp-help-zh_cn"). Кроме того в Арч, к сожалению, иногда пролазит лютая дичь, исключение которой тоже сохранит место на диске. Для фильтрации файлов в предыдущем скрипте можно добавить параметр --filter="merge archlinux-mirror-filter.txt" и создать рядом файл с include/exclude шаблонами типа этих: archlinux-mirror-filter.txt Тут ещё стоит упомянуть, что в Арче пакеты могут прыгать из extra в community и наоборот. А могут и вообще вернуться обратно в AUR. Поэтому некоторые исключения со временем могут стать невалидными. Чтобы проверить, какие файлы были действительно исключены во время создания зеркала, можно воспользоваться таким скриптом: archlinux-mirror-check.sh После того как зеркало скачано, нужно прописать его в конфигах пакетного менеджера. Pacman может брать пакеты напрямую из файловой системы, тогда в файле "/etc/pacman.d/mirrorlist" надо прописать: Либо зеркало можно захостить на локальном веб-сервере, чтобы оно было доступно другим машинам в локальной сети. Тогда в "/etc/pacman.d/mirrorlist" запись будет иметь вид: Надо только не забыть прописать  "mirror.local" в hosts-файл или локальный DNS. Для хостинга зеркала удобно использовать nginx. Его конфиг при этом выглядит совсем просто: /etc/nginx/conf.d/mirror.conf После этого пакеты можно устанавливать стандартно: pacman -Sy package-name Имея под рукой зеркало Арча, можно отлично жить, устанавливая всё единообразно с одного локального источника. Для разработчиков в нём есть всё то же, что и в большинстве других дистрибутивов: компиляторы/интерпретаторы для множества языков программирования, инструменты для сборки, системы контроля версий, библиотеки в ассортименте и т.д. Но есть и свои эксклюзивы (*этот лишь малая часть, упомянутая на основании собственных потребностей и предпочтений), как то: arduino - IDE для программирования для Arduino, ESP и множества других MCU. codeblocks - IDE для C/C++ проектов. dbeaver - универсальный клиент для баз данных. intellij-idea-community-edition - IDE для разработки на Java. kicad - CAD для разработки электрических схем и печатных плат. pycharm-community-edition - IDE для разработки на Python. vscode - редактор и среда абсолютно для всего, но это ВСЁ в изоляции сложно получить без доступа к Extension Marketplace. Есть небольшая проблема в том, что в изоляции будут недоступны внешние репозитории с библиотеками, пакетами и модулями, на которых обычно строятся современные проекты: без maven-репозиториев сложно представить разработку на java. без npmjs будет неоткуда взять эти бесценные 100500 нод-модулей для angular/react веб приложений. без pypi-репозитория не скачать зависимости для python (хмм, или нет?). Разработчику придётся либо перестроиться и девелопить без них. Либо надеяться, что у кого-то из коллег на флешке будет nexus или artifactory с кешем, под завязку набитым нужными либами. Ну, или выкручиваться как-то ещё. Вот, кстати, разработчики на python окажутся в самом выгодном положении, потому что в репозиториях Арча до дури пакетов с питоновскими модулями. И вместо pip install django-rest-framework можно ставить всё глобально через pacman -Sy python-django-rest-framework, не заботясь о версиях и virtualenv. А java разработчики от большой любви могут помародёрничать по Арч-пакетам в поисках нужных библиотек в составе других приложений (типа pacman -F -x "log4j.*jar" для поиска предмета недавнего всеобщего обожания). Арч великолепен в качестве утилитарного линукса, рабочей станции и площадки для экспериментов. Но любимца энтузиастов практически не встретишь на корпоративных серверах, где всё оккупировали Red Hat и Ubuntu. Там ему на самом деле не место. Суровый энтерпрайз жаждет стабильности, чего сложно требовать от Арча. Тем не менее в нём есть почти всё, что нужно для развёртывания IT инфраструктуры (но это не точно). Вот кое-что из пакетов, которые есть в Арче: argocd - для управления kubernetes-кластером. На острове кластер - это же штука, крайне необходимая для выживальщика. bugzilla - баг-трекер от Mozilla. docker, podman - вот только на острове не будет докер-хаба, и все образы придётся лепить вручную. elasticsearch, logstash и kibana - компоненты популярного стека для индексирования, поиска и визуализации всего. Нет! Ещё вчера они были в community репозитории, а сегодня их оттуда уже удалили и они остались только в AUR-репозитории. Альтернативой им предлагают opensearch. gitlab - отличная платформа для разработчиков софта, карманный гитхаб со всем, что нужно: git-репозитории, пул-реквесты с кодревью, CI/CD, проектные вики, трекер задач и багов. grafana - инструмент визуализации данных (метрик мониторинга, например). В её составе есть интеграция с эластиком, но для opensearch придётся ставить плагин. jenkins - CI/CD сервер автоматизации сборки, тестирования и деплоя. keycloak - SSO/IAM сервер для аутентификации и авторизации пользователей. mediawiki - вики-движок для организации своей википедии. zabbix - универсальный инструмент для мониторинга. С базами данных всё стандартно: mysql - нет; его в Арче давно заменили на mariadb. postgresql и pgadmin - безусловно, лучшие SQL сервер и интерфейс к нему. mongodb - увы, снова нет; монгу выпилили из Арча пару лет назад. Многое из софта устанавливается в базовом виде, и для полноценной работы требует установки плагинов и экстеншенов, которых чаще всего нет в официальных репозиториях Арча. Та же проблема с контейнерами. Инструмент вроде бы есть, но привычные образы в изоляции не доступны. Можно с нуля собрать образы на базе Арча. Это не очень удобно и образы далеки от идеала в плане размера. Шутка ли, официальный базовый докер-образ Арча почти в сотню раз больше Alpine. Одни только glibc, gcc-libs, coreutils и bash, которые есть в зависимостях у большинства пакетов, занимают около 250 мегабайт. Добавляем pacman с его деревом зависимостей - и вот получается уже 350 мегабайт. Но с другой стороны - контейнер контейнеру рознь; например, на фоне 15-гигабайтного образа с "tensorflow-cuda", это уже не кажется чем-то большим. В изоляции наличие документации важно не меньше, чем сами приложения. Там не погуглить и не найти ответа на Stack Overflow. Арч же богат на документацию. Кроме стандартных манов и инфо в его репозиториях есть много доков по технологиям, инструментам и языкам программирования (типа ant, arduino, erlang, gradle, grails, groovy, julia, openjdk, python, postgresql, qt, ruby, rust, scala). И самая прелесть - это база знаний Арча Arch Wiki, упакованная в пакет "arch-wiki-docs". Большая часть документации в html виде - это копии соответствующих сайтов с разной степенью адаптации под оффлайн использование. Некоторые пакеты - отличные, типа "python-docs" (это копия https://docs.python.org/py3k/) - там даже работает поиск. Некоторые - так себе, типа "arduino-docs" (это копия https://www.arduino.cc/) - от безысходности можно заглядывать в "Language Reference" или "Libraries", но половина стилей и скриптов тянутся с внешних ресурсов, поэтому в автономном режиме всё выглядит слегка кривовато. А есть пакет "kea-devel-docs" - та самая лютая дичь, которая была упомянута выше. Это устаревшая документация к DHCP серверу. Балласт размером 737 MB, что больше, чем в 35 раз толще пакета с документацией по всему ядру Linux ("linux-docs", 20 MB). Всю документацию, как и зеркало, удобно хостить в том же nginx: /etc/nginx/conf.d/docs.conf Если "docs.local" прописан в hosts-файле, то доки будут доступны по ссылкам типа: http://docs.local/arch-wiki http://docs.local/linux http://docs.local/postgres http://docs.local/python Арч - как питомец. Постоянно растёт и развивается, время от времени показывая что-то новое. Во всём помогает. Но может наложить кучу в углу, если не уделять ему внимание. В обычной жизни в Арче довольно непросто получить повторяемость результата: каждая сборка системы с теми же параметрами будет чем-то новым. В отличие от LTS дистрибутивов, в которых всё предсказуемо, надёжно, годами неизменно и старо, в Арче, эволюционирующем по "rolling release" модели, почти всё новое и свежее. Но в нём сложно сказать, что было несколько дней назад. С Арчем можно нестись в этом непрерывном потоке. А можно создавать себе острова стабильности за счёт локальных зеркал, обновляясь когда удобно, или когда есть возможность. Такой питомец, у каждого свой. Software engineer