Просто сосредоточившись только на ssl, ответов много:
https://serverfault.com/questions/353128/recompiling-python-with-ssl-support-on-ubuntu
https://mail.python.org/ pipermail / python-ideas / 2014-May / 027866.html
https: //stackoverflow.com/questions/5937337/installing-python-with-ssl-support-in-local
com / questions / 18516956 / how-to-compile-python-2-4-6-with-ssl-readline-and-zlib-on-debian-lenny
https://bugs.python.org/issue21541
И нет - вам определенно не нужны исходные источники SSL, достаточно «apt-get install libssl-dev».
Вам нужно выйти из каталога, чтобы размонтировать его, вот так:
#!/bin/bash
sudo mount -o loop Sample.iso /tmp/mnt
cd /tmp/mnt
tar -cvf /tmp/sample.tar *
#Got to the old working directory. **NOTE**: OLDPWD is set automatically.
cd $OLDPWD
#Now we're able to unmount it.
sudo umount /tmp/mnt
Вот и все .
Устройство "занято", так как вы только что использовали компакт-диск
, чтобы войти в него. Вы не можете размонтировать раздел текущего рабочего каталога (любого процесса, в данном случае оболочки).
Ваш сценарий:
sudo mount -o loop Sample.iso /tmp/mnt
cd /tmp/mnt
tar -cvf /tmp/sample.tar *
sudo umount /tmp/mnt
Измененный сценарий без той же проблемы:
sudo mount -o loop Sample.iso /tmp/mnt
( cd /tmp/mnt && tar -cvf /tmp/sample.tar * )
sudo umount /tmp/mnt
Поскольку cd
происходит во вспомогательной оболочке, он не повлияет на внешнюю среду и текущий каталог в время umount
будет там, где вы были, когда выполняли скрипт.
Это очень распространенная конструкция оболочки, то есть to do
( cd dir && somecommand )
Это намного чище (и понятнее), чем пытаться где-то cd
, а затем обратно, особенно когда приходится заходить в несколько каталогов. в течение одного сценария.
С помощью &&
это также означает, что команда не будет выполнена, если по какой-то причине cd
не удалось выполнить. В вашем сценарии, если mount
завершится неудачно, вы все равно создадите архив tar
для пустого (?) Каталога, например, что может быть не тем, что вам нужно.
Более короткий вариант, в котором используется флаг -C
в tar
:
sudo mount -o loop Sample.iso /tmp/mnt
tar -cvf /tmp/sample.tar -C /tmp/mnt .
sudo umount /tmp/mnt
Это заставляет tar
выполнять cd
внутренне перед добавлением текущего каталога ( / tmp / mnt
) в архив. Однако обратите внимание, что в результате в архив также будут добавлены скрытые файлы или папки.