Ubuntu – Comment construire et installer le dernier SimpleScreenRecorder à partir de git

Je souhaite installer SimpleScreenRecorder (SSR) à partir de git comme recommandé par le développeur. La version binaire plante et il est possible que la version git ait déjà les correctifs pour mon problème de plantage.

Page principale – SimpleScreenRecorder – Site Web de Maarten Baert

Malheureusement, je ne peux pas obtenir la version git actuelle / la plus récente pour construire sur Ubuntu. Les instructions se trouvent ici: https://github.com/MaartenBaert/ssr

Dans ces instructions, le développeur dit: « Si la génération 32 bits échoue parce que les bibliothèques sont manquantes, mais que 64 bits fonctionne correctement, relisez les instructions ci-dessus :). » Cela semble être mon problème, mais la relecture des instructions n’a pas clarifié mon problème. Je demande donc ici.

Instructions:

 sudo apt-get install build-essential pkg-config qt4-qmake libqt4-dev libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libasound2-dev libpulse-dev libgl1-mesa-dev libx11-dev libxext-dev libxfixes-dev g++-multilib ia32-libs
 

Si la version 32 bits d’une bibliothèque n’est pas trouvée, mais que 64 bits fonctionne correctement, essayez ceci:

 cd /usr/lib/i386-linux-gnu/
sudo ln -s libGL.so.1 mesa/libGL.so
sudo ln -s mesa/libGL.so libGL.so
sudo ln -s libGLU.so.1 libGLU.so
sudo ln -s libX11.so.6 libX11.so
sudo ln -s libXext.so.6 libXext.so
sudo ln -s libXfixes.so.3 libXfixes.so
sudo ldconfig
 

Le développeur dit:

Je ne sais pas si c’est la bonne façon de le faire, mais ça marche pour
moi. Si vous utilisez un pilote propriétaire, l’emplacement de libGL sera
sois différent. Dans ce cas, utilisez «libGL.so» au lieu de «mesa / libGL.so».
Compilation et installation

REMARQUE: j’ai un pilote vidéo propriétaire (fglrx). Je pense qu’il pourrait être trouvé ici (basé sur ce que je vois dans le xorg.log):

 /usr/lib/xorg/modules/drivers/fglrx_drv.so
 

Cependant, j’ai besoin d’une aide spécifique pour cette étape!

Si vous avez installé SimpleScreenRecorder en tant que package à partir d’un
référentiel, vous devez d’abord désinstaller cette version pour éviter
conflits. Si vous ne le faites pas, les deux versions peuvent se remplacer
autre ou utilisez la mauvaise version de la bibliothèque GLInject.

La façon la plus simple de tout compiler et installer est d’exécuter:

 ./simple-build-and-install
 

Cela compilera le programme principal et la bibliothèque 64 bits, puis le
Bibliothèque 32 bits.Si la génération 32 bits échoue car les bibliothèques sont
manquant, mais 64 bits fonctionne correctement, lisez à nouveau les instructions ci-dessus
:).

Cela semble être mon principal problème. L’erreur que je vois est:

configurer: erreur: bibliothèque requise manquante

Cependant, je vois aussi ceci:

 Detecting ffmpeg/libav ...
Detected ffmpeg.
 

Cela me préoccupe car ffmpeg est une version compilée personnalisée et je doute qu’elle ait les options requises… bien que j’aie activé libx264 et peut-être que cela suffit. Je ne sais pas. Voici les informations pertinentes sur ffmpeg:

 $ ffmpeg -version
ffmpeg version 0.10.8-7:0.10.8-1~precise1
built on Sep  5 2013 14:56:20 with gcc 4.6.3
configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.8-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
libavutil      51. 35.100 / 51. 35.100
libavcodec     53. 61.100 / 53. 61.100
libavformat    53. 32.100 / 53. 32.100
libavdevice    53.  4.100 / 53.  4.100
libavfilter     2. 61.100 /  2. 61.100
libswscale      2.  1.100 /  2.  1.100
libswresample   0.  6.100 /  0.  6.100
libpostproc    52.  0.100 / 52.  0.100
 

Voici l’intégralité du journal de construction SSR:

 $ ./simple-build-and-install 
Detecting ffmpeg/libav ...
Detected ffmpeg.
Detecting x86/x64 ...
x86/x64 = 1
Configuring ...
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for a sed that does not truncate output... (cached) /bin/sed
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for QT4... yes
checking for moc-qt4... /usr/bin/moc-qt4
checking for rcc-qt4... no
checking for rcc... /usr/bin/rcc
checking for uic-qt4... /usr/bin/uic-qt4
checking for clock_gettime in -lrt... yes
checking for dlfcn.h... (cached) yes
checking for dlsym in -ldl... yes
checking libavformat/avformat.h usability... yes
checking libavformat/avformat.h presence... yes
checking for libavformat/avformat.h... yes
checking for av_guess_format in -lavformat... yes
checking libavcodec/avcodec.h usability... yes
checking libavcodec/avcodec.h presence... yes
checking for libavcodec/avcodec.h... yes
checking for avcodec_find_encoder_by_name in -lavcodec... yes
checking libavutil/avutil.h usability... yes
checking libavutil/avutil.h presence... yes
checking for libavutil/avutil.h... yes
checking libavutil/mathematics.h usability... yes
checking libavutil/mathematics.h presence... yes
checking for libavutil/mathematics.h... yes
checking for av_rescale_q in -lavutil... yes
checking libswscale/swscale.h usability... yes
checking libswscale/swscale.h presence... yes
checking for libswscale/swscale.h... yes
checking for sws_scale in -lswscale... yes
checking X11/Xlib.h usability... yes
checking X11/Xlib.h presence... yes
checking for X11/Xlib.h... yes
checking for X11/Xutil.h... yes
checking for XOpenDisplay in -lX11... yes
checking for X11/extensions/Xfixes.h... yes
checking for XFixesGetCursorImage in -lXfixes... yes
checking for X11/extensions/XShm.h... yes
checking for XShmCreateImage in -lXext... yes
checking alsa/asoundlib.h usability... yes
checking alsa/asoundlib.h presence... yes
checking for alsa/asoundlib.h... yes
checking for snd_pcm_open in -lasound... yes
checking pulse/context.h usability... yes
checking pulse/context.h presence... yes
checking for pulse/context.h... yes
checking for pa_context_new in -lpulse... yes
checking GL/gl.h usability... yes
checking GL/gl.h presence... yes
checking for GL/gl.h... yes
checking for GL/glext.h... yes
checking for GL/glx.h... yes
checking for glPushAttrib in -lGL... yes
checking GL/glu.h usability... yes
checking GL/glu.h presence... yes
checking for GL/glu.h... yes
checking for gluErrorString in -lGLU... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating data/Makefile
config.status: creating glinject/Makefile
config.status: creating src/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
Compiling ...
make  all-recursive
make[1]: Entering directory `/workspaces/ssr/build'
Making all in data
make[2]: Entering directory `/workspaces/ssr/build/data'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/workspaces/ssr/build/data'
Making all in glinject
make[2]: Entering directory `/workspaces/ssr/build/glinject'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/workspaces/ssr/build/glinject'
Making all in src
make[2]: Entering directory `/workspaces/ssr/build/src'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/workspaces/ssr/build/src'
make[2]: Entering directory `/workspaces/ssr/build'
make[2]: Leaving directory `/workspaces/ssr/build'
make[1]: Leaving directory `/workspaces/ssr/build'
Configuring 32-bit GLInject library ...
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for style of include used by make... GNU
checking for gcc... gcc -m32
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc -m32 accepts -g... yes
checking for gcc -m32 option to accept ISO C89... none needed
checking whether gcc -m32 understands -c and -o together... yes
checking dependency style of gcc -m32... gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc -m32... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc -m32 object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -m32 -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc -m32 supports -fno-rtti -fno-exceptions... no
checking for gcc -m32 option to produce PIC... -fPIC -DPIC
checking if gcc -m32 PIC flag -fPIC -DPIC works... yes
checking if gcc -m32 static flag -static works... yes
checking if gcc -m32 supports -c -o file.o... yes
checking if gcc -m32 supports -c -o file.o... (cached) yes
checking whether the gcc -m32 linker (/usr/bin/ld -m elf_i386) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for gcc... (cached) gcc -m32
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc -m32 accepts -g... (cached) yes
checking for gcc -m32 option to accept ISO C89... (cached) none needed
checking whether gcc -m32 understands -c and -o together... (cached) yes
checking dependency style of gcc -m32... (cached) gcc3
checking whether we are using the GNU C++ compiler... yes
checking whether g++ -m32 accepts -g... yes
checking dependency style of g++ -m32... gcc3
checking how to run the C++ preprocessor... g++ -m32 -E
checking for ld used by g++ -m32... /usr/bin/ld -m elf_i386
checking if the linker (/usr/bin/ld -m elf_i386) is GNU ld... yes
checking whether the g++ -m32 linker (/usr/bin/ld -m elf_i386) supports shared libraries... yes
checking for g++ -m32 option to produce PIC... -fPIC -DPIC
checking if g++ -m32 PIC flag -fPIC -DPIC works... yes
checking if g++ -m32 static flag -static works... yes
checking if g++ -m32 supports -c -o file.o... yes
checking if g++ -m32 supports -c -o file.o... (cached) yes
checking whether the g++ -m32 linker (/usr/bin/ld -m elf_i386) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for a sed that does not truncate output... (cached) /bin/sed
checking for clock_gettime in -lrt... yes
checking for dlfcn.h... (cached) yes
checking for dlsym in -ldl... yes
checking X11/Xlib.h usability... yes
checking X11/Xlib.h presence... yes
checking for X11/Xlib.h... yes
checking for X11/Xutil.h... yes
checking for XOpenDisplay in -lX11... no
configure: error: required library missing
 

Meilleure réponse

  • J’ai réussi à travailler avec l’aide du développeur. Tout d’abord, le développeur a dit que ma version de ffmpeg était correcte. Il a également précisé que si le simple-build-and-install inclut «  Configuration de la bibliothèque GLInject 32 bits  » (c’est-à-dire que si vous parvenez à ce point dans le processus de construction), cela signifie que la partie de construction 64 bits est OK. Cela signifie que la solution consiste à utiliser sa solution de contournement symlink.

    Voici mes étapes exactes.

    Notez que j’ai sauté une étape recommandée par le développeur. Je l’ai ignoré car le lien cible existait déjà et je voulais l’essayer sans changer ce lien. (Ça a marché.)

     sudo apt-get install build-essential pkg-config qt4-qmake libqt4-dev libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libasound2-dev libpulse-dev libgl1-mesa-dev libx11-dev libxext-dev libxfixes-dev g++-multilib ia32-libs
    cd /workspaces/ (or any path you choose - see note below)
    git clone https://github.com/MaartenBaert/ssr.git (in my case the project path is /workspaces/ssr/)
    sudo mkdir /usr/lib32/fglrx/
    cd /usr/lib/i386-linux-gnu/
    sudo ln -s libGL.so.1 /usr/lib32/fglrx/libGL.so  # only for proprietary AMD drivers!
    # SKIP: sudo ln -s fglrx/libGL.so /usr/lib32/libGL.so    # only for proprietary AMD drivers!
    sudo ln -s libGLU.so.1 libGLU.so
    sudo ln -s libX11.so.6 libX11.so
    sudo ln -s libXext.so.6 libXext.so
    sudo ln -s libXfixes.so.3 libXfixes.so
    sudo ldconfig
    cd /path/to/ssr (will be the ssr directory under `/workspaces/` in my example)
    $ ./simple-build-and-install 
     

    Le résultat final:

     Running post-install script ...
    Done.
     

  • Ubuntu – Comment construire PHP 7.3

    J’ai un problème avec la construction du paquet pour PHP 7.3 à partir de git. En ce moment, j’utilise Ubuntu 16.04 avec utdatet php 7.0.x. (Il est impossible de mettre à jour Ubuntu 16.04 vers 18.04 sur mon VPS, car il se bloque au démarrage. Je n’ai que Virtuozzo à déboguer et je ne trouve pas le point où il se bloque, donc la mise à niveau vers 18.04 n’est pas encore une option.)

    Mes étapes jusqu’à présent:

    J’ai installé tous les programmes de build (git, build essential, libtool, bison et re2c).

    J’ai cloné le git de GitHub avec:

     git clone https://github.com/php/php-src.git 
     

    Ensuite, j’ai sélectionné la branche que je veux:

     git checkout PHP-7.3 
     

    Puis j’ai couru:

     ./buildconf
     

    Quelle est la prochaine étape?

    J’ai besoin des packages suivants:

    php7.3
    libapache2-mod-php7.3
    php7.3-mysql
    serveur mysql

    Je n’ai pas cherché de PPA, car je voulais le faire moi-même pour apprendre en le faisant.

    Meilleure réponse

    1. Installez les dépendances.

       sudo apt install autoconf automake bison build-essential curl flex \
        libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \
        libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \
        pkg-config re2c sqlite3 zlib1g-dev
       

      Donc, vous n’écrasez aucune installation PHP existante sur votre système, installez PHP dans votre répertoire personnel. Créez un répertoire pour les binaires PHP.

       mkdir -p ~/bin/php7-latest/
       
    2. Téléchargez le PHP 7.3 depuis GitHub, décompressez-le, puis changez de répertoire en utilisant cd dans le nouveau répertoire. Vous pouvez également télécharger PHP 7.3 sur php.net/downloads.php et les instructions d’installation sont exactement les mêmes. Normalement, ce serait le moyen préféré de télécharger PHP 7.3, mais j’utilise PHP 7.3 à partir de https://github.com/php/ dans cette réponse à la place afin de faire correspondre l’archive PHP 7.3 qui est demandée dans la question.

    3. Configurez PHP. Supprimez toutes les options dont vous n’avez pas besoin (comme MySQL ou Postgres (–with-pdo-pgsql))

       ./configure --prefix=$HOME/bin/php-latest \
          --enable-mysqlnd \
          --with-pdo-mysql \
          --with-pdo-mysql=mysqlnd \
          --with-pdo-pgsql=/usr/bin/pg_config \
          --enable-bcmath \
          --enable-fpm \
          --with-fpm-user=www-data \
          --with-fpm-group=www-data \
          --enable-mbstring \
          --enable-phpdbg \
          --enable-shmop \
          --enable-sockets \
          --enable-sysvmsg \
          --enable-sysvsem \
          --enable-sysvshm \
          --enable-zip \
          --with-libzip=/usr/lib/x86_64-linux-gnu \
          --with-zlib \
          --with-curl \
          --with-pear \
          --with-openssl \
          --enable-pcntl \
          --with-readline
       

      Vous n’aurez probablement pas besoin de supprimer l’une des options, sauf pour --with-pdo-pgsql=/usr/bin/pg_config si PostgreSQL n’est pas installé. Si vous ne supprimez pas une option spécifique à un package qui n’est pas installé, cette commande renverra un message d’erreur qui vous indiquera quelle option doit être supprimée pour que la commande s’exécute correctement.

    4. Compilez les binaires:

       make # wait until make is finished
      make install
       
    5. Copiez le fichier PHP.ini dans le répertoire d’installation

       cp php.ini-development ~/bin/php-latest/lib/
       
    6. Renommez deux fichiers.

       cd ~/bin/php-latest/etc/  
      mv php-fpm.conf.default php-fpm.conf
      mv php-fpm.d/www.conf.default php-fpm.d/www.conf
       
    7. Créez pour vous des liens symboliques pour votre fichier binaire.

       cd ~/bin
      ln -s php-latest/bin/php php
      ln -s php-latest/bin/php-cgi php-cgi
      ln -s php-latest/bin/php-config php-config
      ln -s php-latest/bin/phpize phpize
      ln -s php-latest/bin/phar.phar phar
      ln -s php-latest/bin/pear pear
      ln -s php-latest/bin/phpdbg phpdbg
      ln -s php-latest/sbin/php-fpm php-fpm
       
    8. Liez votre PHP local à la commande php. Vous devrez vous déconnecter puis vous reconnecter pour que php passe à la version locale au lieu de la version installée à partir des référentiels Ubuntu par défaut.

       # add this to .bashrc
      if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
      fi
       
    9. Démarrez PHP-FPM

       sudo ~/bin/php-latest/sbin/php-fpm  
       

      Si vous exécutez la commande ci-dessus en tant qu’utilisateur normal sans sudo, elle affichera les avis suivants:

       NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root.
      NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root.
       

  • Ubuntu – Erreur « ssh_askpass exec (/ usr / libexec / openssh / ssh-askpass) aucun fichier ou répertoire de ce type » lorsque j’essaie d’introduire le dépôt Git à l’aide de VS Code

    Don’t know what happened. But all of sudden I can’t push updates in GitHub. A month ago I used SSH keys to integrate VS Code with Github so that I do not have to type email & password every single time when I use to push updates to the Git repository.

    Je pense que BleachBit a supprimé certains fichiers importants et cela se produit. Maisc’est monconjecture sauvage. Je ne peux pas le confirmer. Parce que je n’ai rien fait d’autre que ça. VS Code fonctionnait bien. Soudain, cela se produit. Je dois faire attention avec Bleachbitsic’est un acte de Bleachbit.

    Pendant ce temps, je deviens fou pendant une semaine en pensant comment résoudre ce problème. Si vous avez eu ce problème, commentez-le.

    Quand je l’ai fait ls /usr/bin/ssh-askpass , il indique qu’il n’y a pas de fichier ou de dossier. Cela pourrait être la cause du problème. Mais je vois ces dossiers à l’intérieur/ usr / binliés à ssh:
     
    ssh
    ssh-add //is a file that supposed to be deleted when I unistalled ssh-askpass
    ssh-agent //is a file
    ssh-argv0
    ssh-copy-id
    ssh-keygen
    ssh-keyscan
     

    MATLAB: Chaque fois que je pousse vers le référentiel GitHub distant, je dois ressaisir le nom d’utilisateur et le mot de passe. Existe-t-il un moyen d’éviter cela en demandant à MATLAB de stocker ces informations

    Il est pratique d’avoir le support Git dans MATLAB, mais chaque fois que je pousse vers le référentiel distant, je dois ressaisir mon nom d’utilisateur et mon mot de passe. Existe-t-il un moyen d’éviter cela en demandant à MATLAB de stocker ces informations? Lorsque j’utilise SourceTree pour gérer mes référentiels Git, les informations de compte sont stockées, mais SourceTree n’est pas intégré dans MATLAB. J’aimerais avoir le meilleur des deux.

    Meilleure réponse

  • Vous pouvez trouver une manière détaillée de procéder dans le lien suivant:
    https://www.mathworks.com/matlabcentral/answers/494543-why-do-i-receive-an-auth-fail-error-when-interacting-with-a-git-remote-over-ssh-in- matlab-or-why-d
  • Ubuntu – Ubuntu compile le noyau de git avec un changement de source, comment ignorer l’erreur «changements non représentables à la source»

    J’ai modifié un fichier source dans le code source i915.
    Je viens de modifier le fichier et de modifier une ligne.

    Je n’ai pas créé de fichier de correctif car je n’ai pas pu trouver comment le faire.
    Quand je construis avec

     make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-custom
     

    ou avec

     make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-custom -i
     

    Je reçois

      update-version-dkms
    dpkg-source: info: use the '3.0 (quilt)' format to have separate and documented changes to upstream files, see dpkg-source(1)
    dpkg-source: error: unrepresentable changes to source
    dpkg-buildpackage: error: dpkg-source -i.git -b ubuntu-bionic subprocess returned exit status 1
    scripts/package/Makefile:71: recipe for target 'deb-pkg' failed
    make[1]: [deb-pkg] Error 1 (ignored)
     

    Ensuite, j’ai commis ce changement dans une nouvelle branche et j’ai vérifié une balise standard (une version en amont standard). Auparavant, il a construit. Maintenant ce n’est pas le cas, même erreur.

    la réponse ici fait allusion à quelques mauvais fichiers (par exemple des fichiers d’échange de vim) mais je ne peux pas déterminer quels peuvent être les problèmes: « dpkg-source: changements non représentables à la source » lors de la tentative de création d’un package modifié
    ne m’aide pas.

    Meilleure réponse

  • Ah, mes changements locaux étaient un redingue.
    en quelque sorte un script python a été ajouté dans une partie de l’arborescence source, une sorte d’assistant de débogage.

    Pour corriger:
    1 Suivez les instructions ici pour supprimer tous les fichiers non suivis de l’arborescence de travail

    https://koukia.ca/how-to-remove-local-untracked-files-from-the-current-git-branch- 571c6ce9b6b1

    J’ai fait

     To remove ignored and non-ignored files, run git clean -f -x or git clean -fx
     
    1. Revenez aux instructions ici: https://wiki.ubuntu.com/KernelTeam/GitKernelBuild

    à l’étape 4, copiez la configuration.

    Ensuite, il construit.

    ce sont mes notes complètes. Certaines de ces étapes sont inutiles, mais elles ne font pas de mal. Évidemment, ignorez la sélection.

     fakeroot debian/rules clean
    cp /boot/config-`uname -r` .config
    yes '' | make oldconfig
    make clean
    #remove the non git files
    git clean -f
    rm vmlinux-gdb.py
    #make sure there is no linux*.tar too
    rm ../linux*.gz

    #cherry pick RC6 hack
    git cherry-pick 0c6b6fa52c6ad54332eed64acb6aebc59f75e0b2

    #
    make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-custom
    cd ..
     

  • MATLAB: Puis-je intégrer des fichiers MLAPP d’App Designer avec le contrôle de source Git

    Git ne semble pas pouvoir suivre les modifications en texte brut apportées aux fichiers source MLAPP depuis App Designer. Existe-t-il une solution de contournement à ce problème?

    Meilleure réponse

  • Il s’agit d’une limitation connue des fichiers MLAPP avec contrôle de version. Une demande d’amélioration a été soumise pour prendre en charge le contrôle de version des fichiers MLAPP avec Git. Notre équipe de développement pourrait envisager cette fonctionnalité pour une future version.
    Solution possible:
    The current recommended workflow for version controlling MLAPP files with Git is to export the MLAPP file to a MATLAB code file (.m) and check-in this exported MATLAB code file with the MLAPP file. MATLAB R2018b added the ability to export an MLAPP-file directly to a M-file using the « Save -> Export to .m file » option on the App Designer’s « Designer » toolstrip tab.
    Un flux de travail potentiel consiste à:
    1. Enregistrez l’application
    2. Exportez l’application vers un fichier .m
    3. Archivez les fichiers .mlapp et .m dans Git
    4. Répétez l’opération pour la prochaine révision
    Bien que cela n’offre pas la fusion du code de l’application, il offre un suivi des modifications du fichier M qui pourrait être différent car presque tous les aspects de l’application apparaissent dans le code généré. Ainsi, vous pouvez voir si un autre développeur a ajouté ou supprimé des composants de l’application en regardant le code ajouté / supprimé. De plus, lorsque vous exportez vers un fichier M, il ajoutera automatiquement « _exported » au nom du fichier, vous n’aurez donc pas à vous soucier de l’observation de votre fichier MLAPP.
    Un fichier MLAPP est un fichier binaire similaire à un fichier MLX et il doit donc être enregistré auprès de Git en tant que format binaire pour éviter qu’il ne soit corrompu. Consultez la section «Enregistrer des fichiers binaires avec Git» dans notre documentation pour plus d’informations:
    https://www.mathworks.com/help/matlab/matlab_prog/set-up-git-source-control.html#buhx2d6-1_3
  • MATLAB: Comment sont stockés les liens d’exigences Simulink

    Notre équipe travaille ensemble sur le même ensemble d’exigences à l’aide du contrôle de version. Nous remarquons un comportement étrange sur les liens Exigences Simulink. Parfois, nous recevons des avertissements sur les chemins non trouvés du système de fichiers local de nos collègues.
    Pour enquêter sur ce qui se passe, j’ai exécuté le script suivant:
     

    rs = slreq.load('MyFile.slreqx')'
    reqs = find(rs, 'Type', 'Requirement');
    for i = 1 : nume(reqs)
    req = reqs(i);
    lnks = req.inLinks;
    for j = 1 : numel(lnks)
    lnk = lnks(j);
    disp(lnk.source.artifact);
    end
    end

     

    Ubuntu – Comment exécuter un script Bash depuis Github

    Dites ceci j’ai le fichier suivant my_cool_file.sh dans un référentiel GitGithub(ouBitBucketd’ailleurs) nommé my_cool_repo . Le fichier est un script utilisé pour installer le logiciel CSF-LFD bien connu de ConfigServer:

     #!/bin/bash
    cd /usr/src
    rm -fv csf.tgz
    wget https://download.configserver.com/csf.tgz
    tar -xzf csf.tgz
    cd csf
    sh install.sh
    sed -i "s/TESTING = "1"/TESTING = "0"/g" /etc/csf/csf.conf
    csf -r
    perl /usr/local/csf/bin/csftest.pl
    # sh /etc/csf/uninstall.sh
     

    Comment exécuter ce script Bash (un .sh directement depuis Github, via la ligne de commande?

    Meilleure réponse

  • Chargez le fichier (assurez-vous d’utiliser le fichier brut, sinon vous chargez la page HTML!) Avec wget en utilisant son URL exacte, puis dirigez la sortie vers bash :

    Voici un exemple avec des clarifications:

     wget -O - https://raw.githubusercontent.com/<username>/<project>/<branch>/<path>/<file> | bash
     

    Depuis la page de manuel de la commande wget:

        -O file
       --output-document=file
           The documents will not be written to the appropriate files, but all
           will be concatenated together and written to file.  If - is used as
           file, documents will be printed to standard output, disabling link
           conversion.  (Use ./- to print to a file literally named -.)
    
           Use of -O is not intended to mean simply "use the name file instead
           of the one in the URL;" rather, it is analogous to shell
           redirection: wget -O file http://foo is intended to work like wget
           -O - http://foo > file; file will be truncated immediately, and all
           downloaded content will be written there.
     

    Donc, la sortie vers - va en fait écrire le contenu des fichiers dans STDOUT, puis vous le dirigez simplement vers bash ou n’importe quelle coquille que vous préférez. Si votre script a besoin sudo les droits que vous devez faire sudo bash à la fin pour que la ligne devienne:

     wget -O - https://raw.githubusercontent.com/<username>/<project>/<branch>/<path>/<file> | sudo bash
     

  • Ubuntu – Push GIT horaire

    Est-il possible pour moi d’automatiser un push Git toutes les heures via un script batch.

    Je tape généralement ceci:

     git add *
    git commit -m "latest update"
    git push https://username:[email protected]/username/repository.git master
     

    Comment puis-je automatiser cela?

    Meilleure réponse

  • Oui, vous pouvez le faire avec cron. Pour ajouter une tâche à cron, vous devez exécuter

     crontab -e
     

    La syntaxe devrait être spécifiée dans un commentaire sur la dernière ligne, mais je l’expliquerai quand même:

    commande m h dom mon dow
    Dans l’ordre: ce sont la minute, l’heure, la date du mois, le mois, le jour de la semaine et la commande à exécuter à ce moment.

    Donc, pour l’exécuter toutes les heures, vous voudriez:

     0 * * * * /home/username/bin/git-backup-script.sh
     

  • Ubuntu – Garder les fichiers qui sont souvent modifiés en synchronisation entre le bureau et l’ordinateur portable

    Je cherche un moyen de synchroniser un ordinateur de bureau et un ordinateur portable. Ce que je veux garder synchronisé, ce sont certains dossiers, principalement ~ / Documents, qui sont souvent modifiés lors de leur utilisation.

    Si cela importe, je peux me connecter à mon bureau de n’importe où via une URL, mais mon ordinateur portable est plus difficile d’accès car il peut être derrière NAT et autres.

    J’ai regardé Ubuntu One, mais il semble ne pas aller bien avec le travail sur des documents écrits en LaTeX. Si je travaille sur un fichier .tex dans le répertoire Ubuntu One et le compile (avec pdflatex ) de temps en temps (aussi souvent que toutes les 10 secondes lorsque vous travaillez), il créera plusieurs nouveaux fichiers, y compris un pdf, qui sont téléchargés sur Ubuntu One et cela semble stupide car il créera un téléchargement continu lorsque vous travaillez sur des fichiers .tex. Je garde également généralement la version des documents .tex contrôlée par git, puis chaque validation (qui peut également se produire fréquemment) provoquera un téléchargement (par des modifications dans ./.git) afin que cela se produise en continu lorsque vous travaillez. Un autre exemple est l’édition d’images qui sont souvent enregistrées. Ce que je pense serait le mieux, c’est que la synchronisation ait lieu toutes les dix minutes ou à la fin de chaque session de travail (mais il pourrait y avoir une autre façon de gérer cela?).

    Meilleure réponse

  • Je pense que vous n’avez pas besoin d’ajouter les fichiers générés (PDF, dvi ou Postscript) au système de contrôle de version; cependant, il est logique de les copier dans un répertoire synchronisé ou un autre serveur. Je fais habituellement ce genre de choses avec le make commander.

    j’ai un Makefile comme ceci dans le répertoire où se trouvent les fichiers LaTeX (les retraits sont des tabulations, pas des espaces). Voir le manuel GNU Make.

     %.pdf: %.tex
            pdflatex  $<
            pdflatex  $<
    
    store_pdf:
            cp example*.pdf path/to/synced_directory
    
    upload_pdf:
            scp example*.pdf [email protected]:path/to/directory
    
    clean:
            rm *.log *.aux *.nav *.vrb *.out *.snm *.toc
     

    Si vous souhaitez déplacer les fichiers vers un répertoire synchronisé ou vers un serveur
    où vous avez un accès ssh, vous devez taper:

     make store_pdf
    make upload_pdf
     

    Si vous souhaitez générer l’exemple1.pdf à partir d’exemple1.tex, vous devez
    type:

     make example1.pdf
     

    Si vous souhaitez supprimer les fichiers dont vous n’avez pas besoin, vous devez taper:

     make clean