/
arch_linux
/
postinstall
Обзор
Документация
Войти
/
arch_linux
/
postinstall
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/12_programming_langs.sh
146 строк
5 KB
arch_linux
upload files
22 ноя 2025, 09:19
22 ноя 2025, 09:19
a4711e8
Код
Авторство
О чём код?
#!/bin/bash # Установка языков программирования set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${SCRIPT_DIR}/common.sh" setup_python() { print_info "Установка Python и инструментов..." local python_packages=( "python" "python-pip" "python-virtualenv" "python-pipx" "python-pipenv" ) for package in "${python_packages[@]}"; do install_with_check \ "$package" \ "sudo pacman -S --noconfirm $package" \ "check_package $package" done print_info "Установка Python библиотек через pacman..." local python_libs_pacman=( "python-requests" "python-numpy" "python-pandas" "python-matplotlib" "python-flask" "python-django" "python-pyaudio" "python-soundfile" ) for lib in "${python_libs_pacman[@]}"; do install_with_check \ "$lib" \ "sudo pacman -S --noconfirm $lib" \ "check_package $lib" done print_info "Создание виртуального окружения Python..." # Простой способ - создаем от текущего пользователя if [ ! -d "venv" ]; then if python -m venv "venv"; then print_success "Виртуальное окружение создано в ./venv" # Добавляем алиас в текущий .bashrc if ! grep -q "venv/bin/activate" ~/.bashrc; then echo 'alias venv="source $HOME/venv/bin/activate"' >> ~/.bashrc print_success "Алиас 'venv' добавлен в .bashrc" fi else print_warning "Не удалось создать виртуальное окружение" print_info "Создайте его вручную позже: python -m venv ~/venv" fi else print_success "Виртуальное окружение уже существует" fi # Установка библиотек в системный Python (если venv не создан) print_info "Установка дополнительных библиотек в системный Python..." local pip_libs=("numpy" "pandas" "matplotlib" "flask" "django" "requests") for lib in "${pip_libs[@]}"; do if ! pip show "$lib" &> /dev/null; then print_info "Установка $lib в системный Python..." if pip install "$lib"; then print_success "Библиотека $lib установлена" else print_warning "Не удалось установить $lib" fi fi done print_success "Python установлен" print_info "Для создания виртуального окружения выполните: python -m venv ~/venv" print_info "Для активации: source ~/venv/bin/activate" } setup_rust() { print_info "Установка Rust..." if check_command rustc; then print_success "Rust уже установлен" return 0 fi if sudo -u $SUDO_USER curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sudo -u $SUDO_USER sh -s -- -y; then source /home/$SUDO_USER/.cargo/env print_success "Rust установлен" sudo -u $SUDO_USER /home/$SUDO_USER/.cargo/bin/rustup component add rustfmt clippy rust-analyzer print_success "Дополнительные компоненты Rust установлены" if sudo -u $SUDO_USER /home/$SUDO_USER/.cargo/bin/cargo install --locked cargo-edit; then print_success "cargo-edit установлен" else print_warning "Не удалось установить cargo-edit" fi else print_error "Ошибка установки Rust" return 1 fi } setup_perl() { print_info "Установка Perl и инструментов..." local perl_packages=("perl" "perl-cpan") for package in "${perl_packages[@]}"; do install_with_check \ "$package" \ "sudo pacman -S --noconfirm $package" \ "check_package $package" done print_success "Perl установлен" } setup_c_cpp() { print_info "Установка инструментов для C/C++..." local cpp_packages=( "gcc" "gdb" "clang" "cmake" "make" "pkg-config" "valgrind" "cppcheck" "doxygen" ) for package in "${cpp_packages[@]}"; do install_with_check \ "$package" \ "sudo pacman -S --noconfirm $package" \ "check_package $package" done print_success "Инструменты C/C++ установлены" } main() { print_header "УСТАНОВКА ЯЗЫКОВ ПРОГРАММИРОВАНИЯ" setup_rust setup_perl setup_c_cpp save_state setup_python } main "$@"