在Ubuntu 22.04.1上安装PHP 8

guz6ccqo  于 2022-12-10  发布在  PHP
关注(0)|答案(1)|浏览(295)

我是Ubuntu的新手,已经使用Windows很多年了,但我一直都在使用Ubuntu。虽然我有使用终端的经验,但我并不完全熟悉Linux中的命令。我没有足够的经验来解决最终出现的问题,我不想以错误的方式安装或修改某些东西。
基于几个“Dockerfile”文件,我设法找到了安装PHP中最常用的依赖项所需的一切。然而,有些命令不能正确工作,在某些情况下,我得到了一些我无法理解的权限错误。

sudo apt update \
    && sudo apt install -y gnupg gosu curl ca-certificates zip unzip git sqlite3 libcap2-bin libpng-dev \
    && sudo mkdir -p ~/.gnupg \
    && sudo chmod 600 ~/.gnupg \
    && sudo echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf \
    && sudo echo "keyserver hkp://keyserver.ubuntu.com:80" >> ~/.gnupg/dirmngr.conf \
    && sudo gpg --recv-key 0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c \
    && sudo gpg --export 0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c > /usr/share/keyrings/ppa_ondrej_php.gpg \
    && sudo echo "deb [signed-by=/usr/share/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
    && sudo apt update \
    && sudo apt install -y php8.2-cli php8.2-dev \
       php8.2-pgsql php8.2-sqlite3 php8.2-gd \
       php8.2-curl \
       php8.2-imap php8.2-mysql php8.2-mbstring \
       php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \
       php8.2-intl php8.2-readline \
       php8.2-ldap \
       php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \
       php8.2-memcached php8.2-pcov php8.2-xdebug \
    && php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
    && curl -sLS https://deb.nodesource.com/setup_18.x | bash - \
    && sudo apt install -y nodejs \
    && npm install -g npm \
    && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarn.gpg >/dev/null \
    && echo "deb [signed-by=/usr/share/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
    && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/pgdg.gpg >/dev/null \
    && echo "deb [signed-by=/usr/share/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
    && sudo apt update \
    && sudo apt install -y yarn \
    && sudo apt install -y mysql-client \
    && sudo apt install -y postgresql-client-14 \
    && sudo apt -y autoremove \
    && sudo apt clean \
    && sudo rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*;

这些是我正在使用的命令,但我想简化它们,这样我就可以创建一个bash文件,使我可以在任何时间在任何机器上安装我需要的一切。
我知道有这么多的工具和方法来实现它看起来并不实用,但我的意图是试验一下,看看你能提出什么解决方案来丰富我的知识。我相信通过实践这是最有效的学习方法。
运行命令sudo echo "keyserver hkp://keyserver.ubuntu.com:80" >> ~/.gnupg/dirmngr.conf时出现权限错误,我无法解决这个问题,因为它是使用“sudo”运行的,它不应该给予我权限错误。
如果社区能帮助我,我将非常感激。
非常感谢!

ctehm74n

ctehm74n1#

试着运行sudo echo "something" >> test.txt,然后你可以用ls -al检查所有者和权限,然后你可以看到用你自己的用户创建的test.txt,而不是用root创建的。
我发现这个网站的提示:https://www.cyberciti.biz/faq/sudo-append-data-text-to-file-on-linux-unix-macos/我建议用shell提示来检查第二个方法,而不是tee。但是如果你的环境中有tee,你肯定可以使用它。
希望能帮上忙。

相关问题