Tan importante es el desarrollo de código como mantenerlo actualizado ya que si no lo hacemos la posibilidad de explotación por parte de un atacante aumentará día a día, en este artículo explicaremos como actualizar todo lo concerniente al proyecto rxWod es decir el sistema operativo, el software instalado, el código Python y el código JavaScript.
Antes de comenzar es recomendable leer los artículos anteriores sobre Django ya que son los pasos previos a este artículo:
- Django: Venv bajo FreeBSD
- Django: MVT, Apps y URLs
- Django: Modelos de base de datos
- Django: Interfaz de administración
- Django: DTL(Django Template Language)
- Django: Debug Toolbar
- Django: Registro y autenticación de usuarios
- Django: Webpack
- Django: Bootstrap mediante WebPack
- Django: Proyecto en producción
- Django: Traducciones
- Django: Comandos administrativos
Empecemos por el código fuente del SO, las herramientas base y el kernel:
freebsd-update install
Los paquetes instalados:
pkg autoremove
Instalamos Rust ya que es dependencia de algunas librerías de Python:
Activamos el venv, actualizamos PIP, instalamos la dependencia wheel y pip-upgrader:
source bin/activate
cd rxWodProject/
python3.7 -m pip install --upgrade pip
pip install wheel
pip install pip-upgrader
pip freeze > requirements.txt
Actualizamos las librerías de Python:
Nos mostrará una salida muy similar a la siguiente:
Found valid requirements file(s):
requirements.txt
1/28: asgiref ... up to date: 3.3.1
2/28: attrs ... up to date: 20.3.0
3/28: autobahn ... upgrade available: 20.12.3 ==> 21.3.1 (uploaded on 2021-03-02 15:12:15)
4/28: Automat ... up to date: 20.2.0
5/28: cffi ... upgrade available: 1.14.4 ==> 1.14.5 (uploaded on 2021-02-11 20:59:36)
6/28: constantly ... up to date: 15.1.0
7/28: cryptography ... upgrade available: 3.3.1 ==> 3.4.7 (uploaded on 2021-03-25 17:40:10)
8/28: daphne ... up to date: 3.0.1
9/28: Django ... upgrade available: 3.1.4 ==> 3.1.7 (uploaded on 2021-02-19 09:08:09)
10/28: django-modeltranslation ... upgrade available: 0.16.1 ==> 0.16.2 (uploaded on 2021-02-18 07:44:23)
11/28: django-webpack-loader ... up to date: 0.7.0
12/28: hyperlink ... upgrade available: 20.0.1 ==> 21.0.0 (uploaded on 2021-01-08 05:51:22)
13/28: idna ... upgrade available: 3.0 ==> 3.1 (uploaded on 2021-01-04 16:20:02)
14/28: incremental ... upgrade available: 17.5.0 ==> 21.3.0 (uploaded on 2021-03-02 01:59:36)
15/28: psycopg2 ... up to date: 2.8.6
16/28: pyasn1 ... up to date: 0.4.8
17/28: pyasn1-modules ... up to date: 0.2.8
18/28: pycparser ... up to date: 2.20
19/28: PyHamcrest ... up to date: 2.0.2
20/28: pyOpenSSL ... up to date: 20.0.1
21/28: pytz ... upgrade available: 2020.4 ==> 2021.1 (uploaded on 2021-02-01 08:07:15)
22/28: service-identity ... up to date: 18.1.0
23/28: six ... up to date: 1.15.0
sqlite3==0.0.0 API error: Not Found
25/28: sqlparse ... up to date: 0.4.1
26/28: Twisted ... upgrade available: 20.3.0 ==> 21.2.0 (uploaded on 2021-02-28 10:03:55)
27/28: txaio ... upgrade available: 20.12.1 ==> 21.2.1 (uploaded on 2021-02-20 14:35:11)
28/28: zope.interface ... upgrade available: 5.2.0 ==> 5.3.0 (uploaded on 2021-03-21 09:49:13)
Available upgrades:
+------+---------------------------+-----------------+----------------+---------------------+
| No. | Package | Current version | Latest version | Release date |
+------+---------------------------+-----------------+----------------+---------------------+
| 1 | autobahn | 20.12.3 | 21.3.1 | 2021-03-02 15:12:15 |
| 2 | cffi | 1.14.4 | 1.14.5 | 2021-02-11 20:59:36 |
| 3 | cryptography | 3.3.1 | 3.4.7 | 2021-03-25 17:40:10 |
| 4 | Django | 3.1.4 | 3.1.7 | 2021-02-19 09:08:09 |
| 5 | django-modeltranslation | 0.16.1 | 0.16.2 | 2021-02-18 07:44:23 |
| 6 | hyperlink | 20.0.1 | 21.0.0 | 2021-01-08 05:51:22 |
| 7 | idna | 3.0 | 3.1 | 2021-01-04 16:20:02 |
| 8 | incremental | 17.5.0 | 21.3.0 | 2021-03-02 01:59:36 |
| 9 | pytz | 2020.4 | 2021.1 | 2021-02-01 08:07:15 |
| 10 | Twisted | 20.3.0 | 21.2.0 | 2021-02-28 10:03:55 |
| 11 | txaio | 20.12.1 | 21.2.1 | 2021-02-20 14:35:11 |
| 12 | zope.interface | 5.2.0 | 5.3.0 | 2021-03-21 09:49:13 |
+------+---------------------------+-----------------+----------------+---------------------+
Le indicamos que queremos actualizar todos los paquetes:
Please choose which packages should be upgraded. Choices: "all", "q" (quit), "x" (exit) or "1 2 3"
Choice: all
Si deseamos actualizar de forma no interactiva tan solo debemos indicarlo del siguiente modo:
Ahora le toca el turno a las librerías JavaScript, nos aseguramos de que estén todas las librerías instaladas:
yarn install v1.22.10
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Rebuilding all packages...
success Saved lockfile.
Done in 0.03s.
Actualizamos las librerías:
Nos mostrará una salida muy similar a la siguiente:
[1/4] Resolving packages…
[2/4] Fetching packages…
[3/4] Linking dependencies…
[4/4] Rebuilding all packages…
success Saved lockfile.
success Saved 0 new dependencies.
Done in 0.03s.
Compilamos los bundles de WebPack:
Si se trata de una Jail bajo Iocage utilizaremos el siguiente script .